המרה אנלוגית לדיגיטלית היא משימה חשובה מאוד באלקטרוניקה משובצת, מכיוון שרוב החיישנים מספקים פלט כערכים אנלוגיים וכדי להזין אותם למיקרו-בקר שמבין רק ערכים בינאריים, עלינו להמיר אותם לערכים דיגיטליים. אז כדי להצליח לעבד את הנתונים האנלוגיים, מיקרו-בקרים זקוקים לממיר אנלוגי לדיגיטלי.
למיקרו-בקר כלשהו יש ADC מובנה כמו Arduino, MSP430, PIC16F877A אך למיקרו-בקר כלשהו אין את זה כמו 8051, Raspberry Pi וכו 'ועלינו להשתמש בכמה ICs ממיר אנלוגי לדיגיטלי חיצוני כמו ADC0804, ADC0808. להלן תוכל למצוא דוגמאות שונות של ADC עם מיקרו-בקרים שונים:
- כיצד להשתמש ב- ADC ב- Arduino Uno?
- מדריך ADC לפטל פטל
- ממשק ADC0808 עם מיקרו-בקר 8051
- מד מתח דיגיטלי 0-25V באמצעות מיקרו בקר AVR
- כיצד להשתמש ב- ADC ב- STM32F103C8
- כיצד להשתמש ב- ADC ב- MSP430G2
- כיצד להשתמש ב- ADC ב- ARM7 LPC2148
- שימוש במודול ADC של מיקרו-בקר PIC עם MPLAB ו- XC8
במדריך זה, אנו הולכים לבדוק כיצד לממשק מודול PCF8591 ADC / DAC עם Arduino.
רכיבים נדרשים
- ארדואינו UNO
- מודול ADC PCF8591
- סיר 100K
- כבלים מגשרים
מודול PCF8591 ADC / DAC
PCF8591 הוא מודול ממיר אנלוגי לדיגיטלי 8 סיביות או מודול ממיר דיגיטלי לאנלוגי 8 סיביות, כלומר כל סיכה יכולה לקרוא ערכים אנלוגיים עד 256. יש לו גם מעגל LDR ומעגל תרמיסטור על הלוח. למודול זה ארבעה קלט אנלוגי ופלט אנלוגי אחד. זה עובד על תקשורת I 2 C, כך שיש סיכות SCL ו- SDA לשעון סדרתי וכתובת נתונים טורית. זה דורש מתח אספקה של 2.5-6 וולט ויש לו זרם המתנה נמוך. אנו יכולים גם לתפעל את מתח הכניסה על ידי כוונון כפתור הפוטנציומטר במודול. ישנם גם שלושה קופצים על הלוח. J4 מחובר לבחירת מעגל הגישה לתרמיסטור, J5 מחובר לבחירת מעגל הגישה לנגד LDR / צילום ו- J6 מחובר לבחירת מעגל הגישה למתח המתכוונן. כדי לגשת למעגלים אלה עליך להשתמש בכתובות של המגשרים הבאים: 0x50 עבור J6, 0x60 עבור J5 ו- 0x70 עבור J4. ישנם שני נוריות על הלוח D1 ו- D2- D1 מציג את עוצמת מתח המוצא ו- D2 מראה את עוצמת מתח האספקה. גבוה יותר את מתח הפלט או האספקה, עוצמת ה- LED D1 או D2 גבוהה יותר. אתה יכול גם לבדוק נוריות אלה באמצעות פוטנציומטר על VCC או על סיכה AOUT.
ממשק PCF8591 ADC / DAC מודול עם Arduino
וידאו תוכנית עבודה המלא ניתן בסוף המדריך זה.
ראשית, עלינו להגדיר את הספרייה לתקשורת I 2 C ותצוגת LCD.
#לִכלוֹל
ואז הגדירו כמה פקודות מאקרו. המאקרו הראשון מיועד להגדרת כתובת אוטובוס הנתונים עבור IC והמקרו השני מיועד להגדרת כתובת סיכת הקלט הראשונה של המודול, שם ניתן הקלט מהסיר.
#define PCF8591 (0x90 >> 1) #define AIn0 0x00
לאחר מכן הגדירו את חיבורי הסיכות של LCD עם Arduino ואתחלו את הערך שאנו מקבלים בסיכה אנלוגית.
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2; LiquidCrystal lcd (rs, en, d4, d5, d6, d7); ערך int = 0;
עכשיו, בואו בואו לפונקציית ההתקנה . כאן, בשורה הראשונה, אתחזנו את תקשורת I 2 C. ובשורה השנייה, ראשנו את תצוגת ה- LCD שעליה אנו מדפיסים את הערכים האנלוגיים. למידע נוסף על ממשק 16x2 LCD עם Arduino כאן.
הגדרת חלל () { Wire.begin (); lcd.begin (16,2); }
בשנת לולאת פונקציה, את השורה הראשונה היא להתחיל את השידור, כלומר זה מתחיל PCF8591. השורה השנייה אומרת ל- IC לבצע את המדידה האנלוגית בסיכת הקלט האנלוגית הראשונה. קו שלישי מסיים את השידור והקו הרביעי מקבל את הנתונים הנמדדים מהסיכה האנלוגית.
לולאה בטל () { Wire.beginTransmission (PCF8591); Wire.write (AIn0); Wire.endTransmission (); Wire.requestFrom (PCF8591, 1);
בחלק הבא, שים את הערך שנקרא מהסיכה האנלוגית למשתנה ערך שהוגדר קודם. ובשורות הבאות, הדפס את הערך על גבי LCD.
ערך = Wire.read (); lcd.print ("ערך ADC ="); lcd.print (ערך); עיכוב (500); lcd.clear ();}
לבסוף העלה את הקוד בארדואינו והפעל אותו. הערכים האנלוגיים יתחילו להופיע בתצוגת LCD. כוונן את כפתור הסיר ותראה את השינוי ההדרגתי בערכים.