תוכן עניינים:

סיכת ה- Arduino AREF: 6 שלבים
סיכת ה- Arduino AREF: 6 שלבים

וִידֵאוֹ: סיכת ה- Arduino AREF: 6 שלבים

וִידֵאוֹ: סיכת ה- Arduino AREF: 6 שלבים
וִידֵאוֹ: Using HT1621 6 Digits Seven Segment LCD Display | Lesson 103: Arduino Step By Step Course 2024, נוֹבֶמבֶּר
Anonim
סיכת ה- AREF של Arduino
סיכת ה- AREF של Arduino

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

שלב 1: תיקון

תיקון!
תיקון!

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

וכאשר אנו אומרים את מתח ההפעלה - זהו המתח העומד לרשות הארדואינו לאחר מעגל אספקת החשמל. לדוגמה, אם יש לך לוח Arduino Uno טיפוסי ומפעילים אותו משקע ה- USB - בטוח שיש 5V זמין ללוח משקע ה- USB במחשב או ברכזת שלך - אך המתח מצטמצם מעט ככל שהזרם מתפתל סביב מעגל אל המיקרו -בקר - או שמקור ה- USB פשוט לא עומד בפני שריטות.

ניתן להדגים זאת בקלות על ידי חיבור Undu Arduino ל- USB והצבת ערכת מולטימטר למדידת מתח על פני סיכות 5V ו- GND. חלק מהלוחות יחזרו עד 4.8 וולט, חלקם גבוהים יותר אך עדיין מתחת ל -5 וולט. אז אם אתה רוכש דיוק, הפעל את הלוח שלך מאספקת חשמל חיצונית באמצעות שקע DC או פין Vin - כגון 9V DC. ואז אחרי שזה יעבור במעגל וסת הכוח יהיה לך 5V נחמד, למשל התמונה.

זה חשוב מכיוון שהדיוק של כל ערכי AnalogRead () יושפע מכך שאין לך 5 V. נכון אם אין לך אפשרות כלשהי, תוכל להשתמש במתמטיקה מסוימת במערכון שלך כדי לפצות על ירידת המתח. לדוגמה, אם המתח שלך הוא 4.8V - טווח analogRead () של 0 ~ 1023 יתייחס ל 0 ~ 4.8V ולא 0 ~ 5V. זה עשוי להישמע טריוויאלי, אולם אם אתה משתמש בחיישן המחזיר ערך כמתח (למשל חיישן הטמפרטורה TMP36) - הערך המחושב יהיה שגוי. אז מטעמי הדיוק, השתמש באספקת חשמל חיצונית.

שלב 2: מדוע AnalogRead () מחזיר ערך בין 0 ל- 1023?

מדוע AnalogRead () מחזיר ערך בין 0 ל- 1023?
מדוע AnalogRead () מחזיר ערך בין 0 ל- 1023?

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

לדוגמה, רזולוציה של 1 סיביות תאפשר רק שני (שניים בעוצמה של אחד) ערכים-אפס ואחד. רזולוציה של 2 סיביות תאפשר ארבעה (שניים בעוצמה של שניים) ערכים-אפס, אחד, שניים ושלושה. אם ננסה למדוד טווח של חמישה וולט ברזולוציה של שני סיביות, והמתח הנמדד היה ארבעה וולט, ה- ADC שלנו יחזיר ערך מספרי של 3-שכן ארבעה וולט יורדים בין 3.75 ל -5V. קל יותר לדמיין זאת עם התמונה.

אז בדוגמא שלנו ADC עם רזולוציה של 2 סיביות, הוא יכול לייצג את המתח רק עם ארבעה ערכים אפשריים שיתקבלו. אם מתח הכניסה נופל בין 0 ל -1.25, ה- ADC מחזיר 0 מספרי; אם המתח יורד בין 1.25 ל- 2.5, ה- ADC מחזיר ערך מספרי של 1. וכן הלאה. עם טווח ה- ADC של Arduino שלנו של 0 ~ 1023-יש לנו 1024 ערכים אפשריים-או 2 בעוצמה של 10. אז ל- Arduino שלנו יש ADC עם רזולוציה של 10 סיביות.

שלב 3: אז מהו AREF?

כדי לקצר סיפור ארוך, כאשר הארדואינו שלך לוקח קריאה אנלוגית, הוא משווה את המתח הנמדד בסיכה האנלוגית המשמשת נגד מה שמכונה מתח הייחוס. בשימוש רגיל ב- AnalogRead, מתח ההתייחסות הוא מתח ההפעלה של הלוח.

ללוחות Arduino הפופולריים יותר כגון לוחות Uno, Mega, Duemilanove ו- Leonardo/Yún, מתח ההפעלה של 5V. אם יש לך לוח Arduino Due, מתח ההפעלה הוא 3.3V. אם יש לך משהו אחר - בדוק את דף המוצר של Arduino או שאל את ספק הלוח שלך.

אז אם יש לך מתח ייחוס של 5V, כל יחידה המוחזרת על ידי analogRead () מוערכת ב -0.00488 V. (זה מחושב על ידי חלוקת 1024 ל- 5V). מה אם נרצה למדוד מתח בין 0 ל -2, או 0 ל -4.6? כיצד ה- ADC יידע מהו 100% מתחום המתח שלנו?

וכאן טמונה הסיבה לסיכה של AREF. AREF פירושו התייחסות אנלוגית. הוא מאפשר לנו להאכיל את Arduino מתח ייחוס מספק כוח חיצוני. לדוגמה, אם נרצה למדוד מתח עם טווח מקסימלי של 3.3V, היינו מזינים 3.3V חלקה יפה לתוך סיכת ה- AREF - אולי מתוך IC של ווסת המתח.

אז כל שלב של ה- ADC ייצג בסביבות 3.22 מיליוולט (חלקו 1024 ל- 3.3). שים לב כי מתח ההתייחסות הנמוך ביותר שאתה יכול לקבל הוא 1.1V. ישנן שתי צורות של AREF - פנימיות וחיצוניות, אז בואו נבדוק אותן.

שלב 4: AREF חיצוני

AREF חיצוני הוא המקום שבו אתה מספק מתח התייחסות חיצוני ללוח Arduino. זה יכול לבוא מאספקת חשמל מוסדרת, או אם אתה צריך 3.3V אתה יכול לקבל את זה מהסיפון של 3.3V של Arduino. אם אתה משתמש באספקת כוח חיצונית, הקפד לחבר את ה- GND לפין ה- GND של הארדואינו. או אם אתה משתמש במקור 3.3V של Arduno - פשוט הפעל מגשר מהפין 3.3V לסיכה AREF.

כדי להפעיל את ה- AREF החיצוני, השתמש בהגדרות הבטלה הבאות ():

analogReference (EXTERNAL); // השתמש ב- AREF למתח התייחסות

זה מגדיר את מתח ההתייחסות לכל מה שחיברת לסיכת AREF - שכמובן יהיה מתח בין 1.1V למתח ההפעלה של הלוח. הערה חשובה מאוד - בעת שימוש בהפניה למתח חיצוני, עליך להגדיר את ההתייחסות האנלוגית ל- EXTERNAL לפני השימוש ב- analogRead (). זה ימנע ממך לקצר את מתח ההתייחסות הפנימי הפעיל ואת סיכת AREF, מה שעלול לפגוע בבקר המיקרו בלוח. במידת הצורך עבור היישום שלך, תוכל לחזור למתח ההפעלה של הלוח עבור AREF (כלומר - לחזור לשגרה) עם הדברים הבאים

analogReference (DEFAULT);

עכשיו כדי להפגין AREF חיצוני בעבודה. באמצעות AREF 3.3V, הסקיצה הבאה מודדת את המתח מ- A0 ומציגה את אחוז ה- AREF הכולל ואת המתח המחושב:

#כלול "LiquidCrystal.h"

LiquidCrystal lcd (8, 9, 4, 5, 6, 7);

int analoginput = 0; // הסיכה האנלוגית שלנו

int analogamount = 0; // מאחסן אחוז צף ערך נכנס = 0; // משמש לאחסון מתח הצף שלנו באחוזים = 0; // משמש לאחסון ערך מתח

הגדרת חלל ()

{lcd.begin (16, 2); analogReference (EXTERNAL); // השתמש ב- AREF למתח התייחסות}

לולאת חלל ()

{lcd.clear (); analogamount = analogRead (אנלוגית); אחוז = (כמות אנלוגי/1024.00)*100; מתח = כמות אנלוגי*3.222; // ב- millivolts lcd.setCursor (0, 0); lcd.print ("% AREF:"); lcd.print (אחוזים, 2); lcd.setCursor (0, 1); lcd.print ("A0 (mV):"); lcd.println (מתח, 2); עיכוב (250); }

תוצאות הסקיצה למעלה מוצגות בסרטון.

שלב 5: AREF פנימי

בקרי המיקרו בלוחות Arduino שלנו יכולים גם ליצור מתח התייחסות פנימי של 1.1V ואנו יכולים להשתמש בו לעבודה AREF. פשוט השתמש בשורה:

analogReference (INTERNAL);

ללוחות Arduino Mega, השתמשו ב:

analogReference (INTERNAL1V1);

בהגדרת void () ואתה כבוי. אם יש לך Arduino Mega יש גם מתח התייחסות של 2.56V זמין המופעל באמצעות:

analogReference (INTERNAL2V56);

לבסוף - לפני שתסתפקו בתוצאות מסיכת AREF שלכם, כיול תמיד את הקריאות מול מולטימטר טוב ידוע.

סיכום

הפונקציה AREF מעניקה לך גמישות רבה יותר עם מדידת אותות אנלוגיים.

את הפוסט הזה הביאה לכם pmdway.com - הכל ליצרנים ולחובבי האלקטרוניקה, עם משלוח חינם לכל רחבי העולם.

מוּמלָץ: