עבור לתוכן

תוצאות לא צפויות עם AREF

Featured Replies

פורסם

חיברתי סנסור כלשהו לפין אנלוגי בארדואינו ושידרתי את הקלט בלולאה ל-Serial Monitor. הערכים הגולמיים נעים בין 100 ל-500, פלוס מינוס, כלומר 0.5 עד 2.4 וולט, נכון?

כדי לשפר את הרזולוציה, חיברתי את פלט 3.3V של הארדואינו דרך נגד 10K אל פין AREF. המולטימטר הראה לי מתח של 2.8V לערך בקצה החוט הזה (כבר מוזר, לא?). בפונקציה Setup הגדרתי analogReference(EXTERNAL) והפעלתי שוב את התוכנית. עכשיו הערכים נעו בין משהו כמו 300 ל-1023, ואם היו יכולים היו עולים עוד יותר. איך זה יכול להיות? הרי המתח המקסימלי שמגיע מהסנסור הוא 2.4!

מדדתי במולטימטר, במנותק מהארדואינו, את הפרש המתחים בין החוט שיוצא מהסנסור לחוט שנכנס ל-AREF, וקיבלתי ערכים הגיוניים לגמרי של 0.4-2.4. אז מה קורה פה? יכול להיות שהכתיבה ל-Serial משפיעה איכשהו על המדידה הפנימית? בדקתי את העניין על שני לוחות ארדואינו נפרדים כך שזו לא בעיה מקומית. תודה מראש על כל רעיון אחר...

פורסם

אני לא בטוח איך החומרה מחוברת בלוח הארדאוינו שלך, איזה לוח יש לך ?

לפי כל מיני שאלות/מדריכים שקראתי אני מסיק שלAREF מחובר 5v קבוע, תמיד מתייחסים לקריאת הfull scale בתור 5.

אם אכן יש חיבור קבוע מ5v ל AREF וחיברת אליו נגד ו3.3v הרי שהמתח בAREF לא אמור להשתנות.

באמת קצת מוזר שיצא לך 2.8v, יכול להיות שה5v לא מחובר ישירות לAREF אלא דרך נגד כדי להגן על הבקר (הסבר בהמשך).

שוב, אם תגיד לי על איזה לוח מדובר אוכל למצוא את הסרטוט שלו.

לבקר יש מתח ייחוס פנימי של 1.1v שניתן לבחור להשתמש בו בתור מתח הייחוס של הADC, ברגע שבוחרים להשתמש בו הוא ממותג לAREF. במקרה וAREF מחובר ישירות למקור מתח אחר יקרה קצר.

לכן אני מאמין שבלוח כניראה יש איזה נגד בטור, מה שאולי יכול להסביר את המתח שמדדת כשחיברת 3.3v.

פורסם
  • מחבר

הלוח הוא Arduino Duemilanove.

AREF אמור בתיאוריה לקבל כל מתח חיצוני בין 0 ל-5V, כשמגדירים אותו בתוכנה כ-EXTERNAL, ולבצע A/D רק ביחס אליו. אחרת, מה הטעם ב-AREF בכלל? :)

יכול להיות שהסנסור עצמו אחראי באיזשהו אופן לבעיה. אני אבדוק את הנושא בצורה מבוקרת יותר בהמשך היום ונראה מה קורה.

פורסם

לפי השרטוט ניראה שAREF מחובר ישירות לheader (עם קבל סינון), ולא מחובר בשום אופן לשום מתח.

תנסה לחבר את ה3.3v ישירות לAREF, ללא נגד רק תזהר לא להפעיל את מתח הייחוס הפנימי בזמן שהחיבור הנ"ל קיים.

ד"א, אני רואה שהארדואינו הזה מבוסס על Atmega8 (תקן אותי אם אני טועה).

AREF אמור בתיאוריה לקבל כל מתח חיצוני בין 0 ל-5V, כשמגדירים אותו בתוכנה כ-EXTERNAL, ולבצע A/D רק ביחס אליו. אחרת, מה הטעם ב-AREF בכלל?

נכון, אך קיים גם מתח ייחוס פנימי שאפשר לבחור להשתמש בו במידה וזה יותר נוח.

בAtmega8 מתח הייחוס הפנימי לADC הוא 2.56v, אם המתח שאתה מודד מהחיישן הוא עד 2.4v יכול להיות ששימוש במתח הייחוס הפנימי הוא אידיאלי. (שים לב כמה יפה 2.56 מתחלק ב1024)

שים לב שהADC תוכנן בשביל עבודה עם סיגנלים שעכבת המוצא שלהם נמוכה מ10k. (כניראה שאין כאן בעיה כי הצלחת למדוד את המתח כאשר הAREF שלך היה 5v, אבל טוב לדעת לעתיד)

פורסם
  • מחבר

לא Atmega8 - יש שם Atmega328, שלרוע המזל מתח הייחוס הפנימי שלו הוא 1.1V, נמוך מדי למה שאני צריך.

כשאגיע לזה הערב, אנסה גם חיבור ישירות ל-3.3, בתקווה ששום דבר לא יישרף :)

פורסם

אל תשכח שיש לך גם את האופציה לחבר את החיישן למחלק מתח כך שבמקום שהתחום שלו יהיה עד 2.4v הוא יהיה עד 1v או מה שבא לך.

(כן צריך לדאוג שעכבת המוצא תהיה נמוכה מ10k, ז"א שהנגד שדרכו זורם הזרם מהחיישן אל הADC יהיה קטן מ10k).

פורסם
  • מחבר

אל תשכח שיש לך גם את האופציה לחבר את החיישן למחלק מתח

בהחלט אופציה, אבל לא תחליף להבנה למה מה שאמור לעבוד לא עובד :)

פורסם
  • מחבר

עדכון מטריד לא פחות מהתקלה המקורית: הרכבתי שוב את המעגל, והפעם - לא משנה מה ניסיתי, בתוכנה או בחומרה - לא הצלחתי לשחזר את התקלה, והכל עובד בדיוק כצפוי! ???

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים