תכונה נפוצה אחת המשמשת כמעט בכל יישום משובץ היא מודול ה- ADC (ממיר אנלוגי לדיגיטלי). ממירים אנלוגיים לדיגיטליים אלה יכולים לקרוא מתח מחיישנים אנלוגיים כמו חיישן טמפרטורה, חיישן הטיה, חיישן זרם, חיישן Flex ועוד. אז במדריך זה נלמד כיצד להשתמש ב- ADC ב- MSP430G2 לקריאת מתחים אנלוגיים באמצעות ה- Energia IDE. נתמקד פוטנציומטר קטן ללוח MSP ונספק מתח משתנה לסיכה אנלוגית, נקרא את המתח ונציג אותו על צג הסידורי.
הבנת מודול ADC:
תאמין לי, זה בקושי ייקח 10 דקות להתחבר ולתכנת את ה- MSP430G2 לקריאת מתח אנלוגי. אבל, בואו נבזבז זמן מה בהבנת מודול ה- ADC בלוח ה- MSP כדי שנוכל להשתמש בו בצורה יעילה בכל הפרויקטים הקרובים שלנו.
מיקרו-בקר הוא מכשיר דיגיטלי, כלומר הוא יכול להבין רק 1 ו -0. אבל בעולם האמיתי, כמעט כל דבר כמו טמפרטורה, לחות, מהירות רוח וכו 'הם אנלוגיים באופיים. על מנת לקיים אינטראקציה עם שינויים אנלוגיים אלה, המיקרו-בקר משתמש במודול בשם ADC. ישנם סוגים רבים ושונים של מודולי ADC זמינים, זה המשמש ב- MSP שלנו הוא SAR 8 ערוץ 10 סיביות ADC.
קירוב רצוף (SAR) ADC: ה- SAR ADC עובד בעזרת משווה וכמה שיחות לוגיקה. סוג זה של ADC משתמש במתח ייחוס (שהוא משתנה) ומשווה את מתח הכניסה למתח הייחוס באמצעות משווה והפרש, שיהיה פלט דיגיטלי, נשמר מהסיבית המשמעותית ביותר (MSB). מהירות ההשוואה תלויה בתדר השעון (Fosc) עליו פועל ה- MSP.
רזולוציית 10 סיביות: ADC זה הוא ADC בן 8 ערוצים. כאן המונח 8 ערוץ מרמז שיש 8 פינים ADC באמצעותם אנו יכולים למדוד מתח אנלוגי. המונח 10 סיביות מרמז על הרזולוציה של ה- ADC. 10 סיביות פירושן 2 בעוצמה של עשר (2 10) שהוא 1024. זהו מספר שלבי הדגימה עבור ה- ADC שלנו, כך שטווח ערכי ה- ADC שלנו יהיה בין 0 ל -1023. הערך יגדל מ- 0 1023 בהתבסס על ערך המתח לשלב, אותו ניתן לחשב באמצעות הנוסחה שלהלן
הערה: כברירת מחדל ב- Energia מתח הייחוס יוגדר ל- Vcc (~ 3v), תוכלו לשנות את מתח הייחוס באמצעות האפשרות AnalogReference () .
בדוק גם כיצד לממשק ADC עם מיקרו-בקרים אחרים:
- כיצד להשתמש ב- ADC ב- Arduino Uno?
- ממשק ADC0808 עם מיקרו-בקר 8051
- באמצעות מודול ADC של מיקרו-בקר PIC
- מדריך ADC לפטל פטל
תרשים מעגל:
במדריך הקודם שלנו כבר למדנו כיצד לממשק LCD עם MSP430G2, עכשיו אנחנו רק נוסיף פוטנציומטר ל- MSP430 כדי לספק לו מתח משתנה ולהציג את ערך המתח על גבי ה- LCD. אם אינך מודע להתממשק LCD אז חזור לקישור שלמעלה וקרא אותו, מכיוון שאדלג על המידע כדי למנוע תשובה. תרשים המעגל השלם של הפרויקט מופיע להלן.
כפי שאתה יכול לראות, משתמשים כאן בשני פוטנציומטרים, האחד משמש לקביעת הניגודיות של LCD ואילו השני משמש לספק מתח משתנה ללוח. באותו פוטנציומטר קצה קיצוני אחד של הפוטנציומטר מחובר ל- Vcc והקצה השני מחובר לקרקע. הסיכה המרכזית (חוט כחול) מחוברת לסיכה P1.7. סיכה זו P1.7 תספק מתח משתנה בין 0 וולט (קרקע) ל -3.5 וולט (Vcc). אז עלינו לתכנת את הסיכה P1.7 כדי לקרוא את המתח המשתנה הזה ולהציג אותו על גבי ה- LCD.
באנרגיה עלינו לדעת לאיזה ערוץ אנלוגי שייך הפין P1.7? ניתן למצוא זאת על ידי הפניית התמונה למטה
אתה יכול לראות סיכה P1.7 בצד ימין, סיכה זו שייכת ל- A7 (ערוץ 7). באופן דומה, אנו יכולים למצוא את מספר הערוץ המתאים גם לסיכות אחרות. אתה יכול להשתמש בכל פינים מ A0 עד A7 לקריאת מתחים אנלוגיים כאן בחרתי A7.
תכנות ה- MSP430 שלך ל- ADC:
תכנות ה- MSP430 שלך לקריאת מתח אנלוגי הוא פשוט מאוד. בתוכנית זו יקרא את אנלוגי הערך ויחשב את המתח עם אותו ערך ואז יציג את שניהם על גבי מסך ה- LCD. את התוכנית המלאה תוכלו למצוא בתחתית עמוד זה, בהמשך להלן אני מסביר את התוכנית בתוספים שיעזרו לכם להבין טוב יותר.
אנו מתחילים בהגדרת סיכות LCD. אלה מגדירים לאיזה סיכה של MSP430 מחוברים סיכות ה- LCD. אתה יכול להפנות את החיבור שלך כדי לוודא שהסיכות מחוברות בהתאמה
#define RS 2 #define EN 3 #define D4 4 #define D5 5 #define D6 6 #define D7 7
לאחר מכן אנו כוללים את קובץ הכותרת לתצוגת LCD. זה קורא לספרייה שמכילה את הקוד על האופן שבו ה- MSP צריך לתקשר עם ה- LCD. ספרייה זו תותקן ב- Energia IDE כברירת מחדל, כך שאינך צריך לטרוח להוסיף אותה. ודא גם שהפונקציה Liquid Crystal נקראת עם שמות הסיכות שהגדרנו לעיל.
#לִכלוֹל
בתוך פונקציית ההתקנה () שלנו, היינו רק נותנים הודעת מבוא שתוצג במסך ה- LCD. אני לא נכנס לעומק הרבה מכיוון שלמדנו כבר כיצד להשתמש ב- LCD עם MSP430G2.
lcd.begin (16, 2); // אנו משתמשים בתצוגת LCD 16 * 2 lcd.setCursor (0,0); // מקם את הסמן בשורה הראשונה בעמודה 1 lcd.print ("MSP430G2553"); // הצג הודעת מבוא lcd.setCursor (0, 1); // הגדר את הסמן לעמודה 1 בשורה השנייה lcd.print ("- CircuitDigest"); // הצג הודעת מבוא
לבסוף, בתוך פונקציית הלולאה האינסופית שלנו () , אנו מתחילים לקרוא את המתח המסופק לסיכה A7. כפי שכבר דנו במיקרו-בקר הוא מכשיר דיגיטלי והוא אינו יכול לקרוא ישירות את רמת המתח. באמצעות טכניקת SAR, רמת המתח ממופה בין 0 ל -1024. ערכים אלה נקראים ערכי ADC, כדי לקבל ערך ADC זה פשוט השתמש בשורה הבאה
int val = analogRead (A7); // קרא את ערך ה- ADC מהסיכה A7
כאן הפונקציה analogRead () משמשת לקריאת הערך האנלוגי של הסיכה, ציינו בתוכה את A7 מכיוון שחיברנו מתח משתנה לסיכה P1.7. לבסוף אנו שומרים ערך זה במשתנה הנקרא " val ". סוג המשתנה הזה הוא מספר שלם מכיוון שנקבל ערכים הנעים בין 0 ל 1024 שיישמרו במשתנה זה.
השלב הבא יהיה חישוב ערך המתח מערך ADC. לשם כך יש לנו את הנוסחאות הבאות
מתח = (ערך ADC / רזולוציית ADC) * מתח הפניה
במקרה שלנו אנחנו כבר יודעים שרזולוציית ה- ADC של המיקרו-בקר שלנו היא 1024. ערך ה- ADC נמצא גם בשורה הקודמת ושמר את המשתנה שנקרא val. מתח הייחוס שווה למתח שבו מיקרו פועל. כאשר לוח MSP430 מופעל באמצעות כבל USB אז מתח ההפעלה הוא 3.6 וולט. ניתן גם למדוד את מתח ההפעלה על ידי שימוש במולטימטר לרוחב ה- Vcc וסיכה הקרקעית על הלוח. כך שהנוסחה שלעיל משתלבת במקרה שלנו כפי שמוצג להלן
מתח צף = (צף (val) / 1024) * 3.6; // נוסחאות להמרת ערך ADC למתח
אתה עלול להתבלבל עם צף הקו (val). זה משמש להמרת המשתנה "val" מסוג נתונים int לסוג נתונים "float". יש צורך בהמרה זו מכיוון שרק אם נקבל את התוצאה של val / 1024 ב- float נוכל להכפיל אותה 3.6. אם הערך יתקבל במספר שלם הוא תמיד יהיה 0 והתוצאה תהיה גם אפס. לאחר שחישבנו את ערך ה- ADC והמתח, כל שנותר הוא להציג את התוצאה על גבי מסך ה- LCD שניתן לעשות זאת באמצעות השורות הבאות
lcd.setCursor (0, 0); // הגדר את הסמן לעמודה 0, שורה 0 lcd.print ("ADC Val:"); lcd.print (val); // הצג ערך ADC lcd.setCursor (0, 1); // הגדר את הסמן לעמודה 0, שורה 1 lcd.print ("מתח:"); lcd.print (מתח); // מתח תצוגה
כאן הצגנו את הערך של ADC בשורה הראשונה ואת ערך המתח בשורה השנייה. לבסוף אנו נותנים עיכוב של 100 מיל שניות ומנקים את מסך ה- LCD. זה היה הערך שיעודכן עבור כל 100 מייל.
בודקים את התוצאה שלך!
לבסוף, אנו יורדים לחלק המהנה, שבודק את התוכנית שלנו ומשחק איתו. פשוט בצע את החיבורים כפי שמוצג בתרשים המעגל. השתמשתי בקרש לחם קטן כדי ליצור את החיבורים שלי והשתמשתי בחוטי מגשר לחיבור קרש הלחם ל- MSP430. לאחר שהחיבורים נעשים שלי נראה כך למטה.
לאחר מכן העלה את התוכנית המופיעה למטה ללוח MSP430 דרך Energia IDE. אתה אמור להיות מסוגל לראות את טקסט המבוא על גבי ה- LCD, אם לא להתאים את הניגודיות של ה- LCD באמצעות הפוטנציומטר עד שתראה מילים ברורות. נסה גם ללחוץ על כפתור האיפוס. אם הדברים עובדים כמצופה, אתה אמור להיות מסוגל לראות את המסך הבא.
עכשיו גוו את הפוטנציומטר וכדאי שתראה גם את המתח המוצג ב- LCD משתנה. בואו נוודא אם אנו מודדים את המתח בצורה נכונה לשם כך, השתמש במולטימטר למדידת המתח על פני מרכז ה- POT והקרקע. המתח המוצג במולטימטר צריך להיות קרוב לערך המוצג על גבי LCD כמוצג בתמונה למטה.
זהו, למדנו כיצד למדוד מתח אנלוגי באמצעות ADC של לוח MSP430. כעת אנו יכולים לממשק חיישנים אנלוגיים רבים עם הלוח שלנו כדי לקרוא פרמטרים בזמן אמת. מקווה שהבנתם את ההדרכה ונהניתם ללמוד אותה, אם יש לכם בעיות אנא פנו דרך קטע ההערות למטה או דרך הפורומים. בואו נתעדכן בהדרכה נוספת של MSP430 עם נושא חדש נוסף.