analogread – הסבר ופרטים

- עמוד זה הוא חלק מהמדריך לפונקציות ארדואינו -

הפונקציה analogRead(pin) קוראת מתח אנלוגי (כלומר, על סקאלה רצופה) ממקור חיצוני, וממפה אותו על סקאלת מספרים שלמים בטווח 0-1023 (כולל).

פרמטרים

pin הוא שם פין הקלט האנלוגי בארדואינו (A0, A1 וכו') אליו מחובר המתח החיצוני למדידה. ניתן לשלוח גם מספר שמייצג ישירות את ערוץ ה-ADC הרלוונטי – מקביל למעשה לספרה שאחרי ה-A בסימון שמות פיני הקלט האנלוגיים.


ערך חוזר

מספר שלם מטיפוס int, שמייצג את המתח שנמדד בפועל בפין הרלוונטי, חלקי ערך המתח המרבי, מומר לסקאלה של מספרים שלמים בטווח 0-1023 (כולל).

לדוגמה, אם המתח המרבי הוא 5V, הערך החוזר עבור 0V בפין הנמדד יהיה 0, עבור 2V הוא יהיה 409, ועבור 5V הערך החוזר יהיה 1023.

הסבר קצר: פיני קלט אנלוגיים

למרות הסימון המיוחד וההפרדה הפיזית בלוחות ארדואינו רבים, פיני הקלט האנלוגיים (A0, A1 וכו') הם למעשה פיני קלט/פלט רגילים לכל דבר. הם נקראים “אנלוגיים” מכיוון שמודול ה-ADC הפנימי במיקרו-בקר, שתפקידו להמיר מתחים אנלוגיים למספרים, מסוגל להתממשק לפינים אלה כמקורות מתח.


חשוב: כדי שהמודול יוכל לקרוא את המתחים החיצוניים, פין הקלט האנלוגי הרלוונטי חייב להיות מוגדר כפין קלט (INPUT – ראו בפונקציה pinMode).

דוגמאות

unsigned int vReading;
vReading = analogRead(A1);

הערות

  • הפונקציה analogRead משמשת לרוב לקריאת מתחים מפוטנציומטרים, חיישנים בעלי פלט אנלוגי (רצוף) וסוללות.
  • הערך המוחזר מהפונקציה analogRead הוא בן 10 ביטים, כלומר בטווח 0-1023 (כולל). מכאן שהנוסחה הנכונה לחישוב המתח מתוך הערך המוחזר היא כפי שמופיע כאן למטה (vREF הוא הערך העליון של טווח המתחים הנמדד – כברירת מחדל זהו מתח ההפעלה של לוח הארדואינו [לרוב 5V], וניתן לבחור ערכים אחרים באמצעות הפונקציה analogReference):
vActual = (vReading / 1023) * vREF;
  • אם הפין הנמדד “צף”, כלומר אינו מחובר למקור מתח כלשהו, הערך החוזר של analogRead יכול להיות כל מספר בטווח.
  • ברוב לוחות הארדואינו, פעולת מדידה נמשכת כ-100 מיליוניות השניה, והקוד הראשי אינו יכול להמשיך עד לסיום המדידה.
  • המדידה אינה מדויקת לחלוטין. מנגנון המדידה עשוי לסטות בכרבע אחוז לכאן או לכאן, ולזאת יש להוסיף אי-דיוקים כלשהם בגבול המתח העליון שהוגדר (ראו analogReference).
  • לא מתבצעת בדיקה של תקינות הקלט עבור הפרמטר pin. במקרה של ערך לא חוקי לא יקרה נזק, אך הערך החוזר יהיה חסר משמעות.
  • יש להיזהר בקריאה ממספר פיני קלט אנלוגי במהירות, בזה אחר זה: במקרים מסוימים (מקורות מתח בעלי עכבה גבוהה), המתח ממדידה קודמת עשוי להמשיך ולהשפיע על המדידות הבאות.

קישורים רלוונטיים

בלוג אישי בנושאי מייקינג, תכנות, מיקרו-בקרים ואלקטרוניקה