- MCP4725 DAC מודול (ממיר דיגיטלי לאנלוגי)
- תקשורת I2C ב- MCP4725 DAC
- רכיבים נדרשים
- תרשים מעגל
- תכנות DAC Arduino
- המרה דיגיטלית לאנלוגית באמצעות MCP4725 ו- Arduino
כולנו יודעים שמיקרו-בקרים עובדים רק עם ערכים דיגיטליים אבל בעולם האמיתי עלינו להתמודד עם אותות אנלוגיים. לכן ADC (ממירים אנלוגיים לדיגיטליים) נמצא שם כדי להמיר ערכים אנלוגיים בעולם האמיתי לצורה דיגיטלית, כך שמיקרו-בקרים יוכלו לעבד את האותות. אבל מה אם אנו זקוקים לאותות אנלוגיים מערכים דיגיטליים, אז הנה מגיע ה- DAC (ממיר דיגיטלי לאנלוגי).
דוגמה פשוטה לממיר דיגיטלי לאנלוגי היא הקלטת שיר באולפן שבו זמר אומן משתמש במיקרופון ושר שיר. גלי קול אנלוגיים אלו מומרים לצורה דיגיטלית ואז מאוחסנים בקובץ בפורמט דיגיטלי וכאשר מנגנים את השיר באמצעות הקובץ הדיגיטלי המאוחסן ערכים דיגיטליים אלה מומרים לאותות אנלוגיים להפקת רמקולים. אז במערכת זו משתמשים ב- DAC.
ניתן להשתמש ב- DAC ביישומים רבים כגון בקרת מנוע, בהירות בקרה של נורות LED, מגבר שמע, מקודדי וידאו, מערכות לרכישת נתונים וכו '.
במיקרו-בקרים רבים יש DAC פנימי שניתן להשתמש בו להפקת פלט אנלוגי. אך למעבדי Arduino כגון ATmega328 / ATmega168 אין DAC מובנה. ל- Arduino תכונת ADC (ממיר אנלוגי לדיגיטלי) אך אין לה DAC (ממיר דיגיטלי לאנלוגי). יש לו DAC של 10 סיביות ב- ADC פנימי, אך לא ניתן להשתמש ב- DAC כעצמאי. אז הנה במדריך DAC זה של Arduino, אנו משתמשים בלוח נוסף בשם MCP4725 DAC Module עם Arduino.
MCP4725 DAC מודול (ממיר דיגיטלי לאנלוגי)
MCP4725 IC הוא מודול ממיר דיגיטלי לאנלוגי בן 12 סיביות המשמש להפקת מתח אנלוגי פלט מ (0 עד 5 וולט) והוא נשלט באמצעות תקשורת I2C. זה מגיע גם עם EEPROM זיכרון לא נדיף.
ל- IC זה רזולוציה של 12 סיביות. פירוש הדבר שאנו משתמשים (0 עד 4096) כקלט לספק את פלט המתח ביחס למתח הייחוס. מתח ייחוס מרבי הוא 5 וולט.
נוסחה לחישוב מתח היציאה
מתח O / P = (מתח / רזולוציה הפניה) x ערך דיגיטלי
לדוגמא אם אנו משתמשים ב- 5V כמתח ייחוס ונניח שהערך הדיגיטלי הוא 2048. אז כדי לחשב את תפוקת DAC.
מתח O / P = (5/4096) x 2048 = 2.5V
Pinout של MCP4725
להלן התמונה של MCP4725 עם ציון ברור של שמות סיכות.
סיכות של MCP4725 |
להשתמש |
הַחוּצָה |
יציאות מתח אנלוגי |
GND |
GND לפלט |
SCL |
קו שעון סדרתי I2C |
SDA |
קו נתונים סידורי I2C |
VCC |
מתח התייחסות כניסה 5V או 3.3V |
GND |
GND לקלט |
תקשורת I2C ב- MCP4725 DAC
ניתן לממשק DAC IC זה עם כל מיקרו-בקר המשתמש בתקשורת I2C. תקשורת I2C דורשת שני חוטים SCL ו- SDA בלבד. כברירת מחדל, כתובת I2C עבור MCP4725 היא 0x60 או 0x61 או 0x62. מבחינתי 0x61 שלה. באמצעות אוטובוס I2C נוכל לחבר מספר MCP4725 DAC IC. הדבר היחיד הוא שאנחנו צריכים לשנות את כתובת ה- I2C של ה- IC. תקשורת I2C בארדואינו כבר מוסברת בפירוט במדריך הקודם.
במדריך זה נחבר MCP4725 DAC IC עם Arduino Uno ונספק ערך כניסה אנלוגי לסיכה Arduino A0 באמצעות פוטנציומטר. ואז ADC ישמש להמרת ערך אנלוגי לצורה דיגיטלית. לאחר מכן ערכים דיגיטליים אלה נשלחים ל- MCP4725 באמצעות אוטובוס I2C כדי להמיר אותות אנלוגיים באמצעות ה- DAC MCP4725 IC. סיכת Arduino A1 משמשת לבדיקת הפלט האנלוגי של MCP4725 מהסיכה OUT ולבסוף להציג את ערכי ה- ADC וה- DAC והמתחים בתצוגת LCD 16x2.
רכיבים נדרשים
- Arduino Nano / Arduino Uno
- מודול תצוגת LCD 16x2
- MCP4725 DAC IC
- פוטנציומטר 10k
- קרש לחם
- חוטי מגשר
תרשים מעגל
הטבלה שלהלן מציגה את הקשר בין MCP4725 DAC IC, Arduino Nano ו- Multi-meter
MCP4725 |
ארדואינו ננו |
מולטימטר |
SDA |
A4 |
NC |
SCL |
A5 |
NC |
A0 או OUT |
A1 |
מסוף + |
GND |
GND |
מסוף |
VCC |
5V |
NC |
חיבור בין 16x2 LCD ו- Arduino Nano
LCD 16x2 |
ארדואינו ננו |
VSS |
GND |
VDD |
+ 5 וולט |
V0 |
ממרכז הפוטנציומטר כדי להתאים את הניגודיות של ה- LCD |
RS |
D2 |
RW |
GND |
ה |
D3 |
D4 |
D4 |
D5 |
D5 |
D6 |
D6 |
D7 |
D7 |
א |
+ 5 וולט |
ק |
GND |
פוטנציומטר משמש עם הפין מרכזי מחובר הקלט האנלוגי A0 של Arduino Nano, סיכת השמאל מחובר GND וימין ביותר פיני מחובר 5V של Arduino.
תכנות DAC Arduino
קוד ארדואינו מלא להדרכת DAC ניתן בסוף עם סרטון הדגמה. כאן הסברנו את הקוד שורה אחר שורה.
ראשית, כלול את הספרייה עבור I2C ו- LCD באמצעות ספריית wire.h ו- liquidcrystal.h.
#לִכלוֹל
לאחר מכן הגדר אתחל את סיכות ה- LCD על פי פינים שחיברנו עם Arduino Nano
LiquidCrystal lcd (2,3,4,5,6,7); // הגדר סיכות תצוגת LCD RS, E, D4, D5, D6, D7
לאחר מכן הגדירו את כתובת I2C של MCP4725 DAC IC
#define MCP4725 0x61
בהגדרת הריק ()
ראשית התחל את תקשורת I2C בסיכות A4 (SDA) ו- A5 (SCL) של Arduino Nano
Wire.begin (); // מתחיל תקשורת I2C
לאחר מכן הגדר את תצוגת ה- LCD במצב 16x2 והציג הודעת קבלת פנים.
lcd.begin (16,2); // מגדיר את LCD במצב 16X2 lcd.print ("מעגל DIGEST"); עיכוב (1000); lcd.clear (); lcd.setCursor (0,0); lcd.print ("ארדואינו"); lcd.setCursor (0,1); lcd.print ("DAC עם MCP4725"); עיכוב (2000); lcd.clear ();
בלולאה הריקנית ()
1. ראשית במאגר שים את ערך בת הפקד (0b01000000)
(010 סטים MCP4725 במצב כתיבה)
חיץ = 0b01000000;
2. ההצהרה הבאה קוראת את הערך האנלוגי מסיכה A0 וממירה אותו לערכים דיגיטליים (0-1023). Arduino ADC הוא ברזולוציה של 10 סיביות ולכן הכפל אותו עם 4 נותן: 0-4096, מכיוון שה- DAC הוא ברזולוציה של 12 סיביות.
adc = analogRead (A0) * 4;
3. הצהרה זו היא למצוא את המתח מערך קלט ADC (0 עד 4096) ואת מתח הייחוס כ- 5V
צף ipvolt = (5.0 / 4096.0) * adc;
4. מתחת לשורה הראשונה מכניס את ערכי הסיביות המשמעותיים ביותר למאגר על ידי העברת 4 סיביות ימינה במשתנה ADC, והשורה השנייה מכניסה את ערכי הסיביות הפחות משמעותיים למאגר על ידי העברת 4 סיביות ימינה במשתנה ADC.
חיץ = adc >> 4; חיץ = adc << 4;
5. ההצהרה הבאה קוראת מתח אנלוגי מ- A1 שהוא פלט ה- DAC (פין ה- OUTPUT של MCP4725 DAC IC). ניתן לחבר סיכה זו גם למולטימטר כדי לבדוק את מתח המוצא. למד כיצד להשתמש במולטימטר כאן.
לא חתום אנלוגי קריאה = analogRead (A1) * 4;
6. בהמשך מחושב ערך המתח מהמשתנה האנלוגי באמצעות הנוסחה שלהלן
float opvolt = (5.0 / 4096.0) * אנלוגי לקרוא;
7. ההצהרה הבאה משמשת לתחילת השידור עם MCP4725
Wire.beginTransmission (MCP4725);
שולח את בקרת הבקרה אל I2C
Wire.write (חיץ);
שולח את ה- MSB ל- I2C
Wire.write (חיץ);
שולח את ה- LSB ל- I2C
Wire.write (חיץ);
מסיים את השידור
Wire.endTransmission ();
כעת סוף סוף הציגו את התוצאות בתצוגת LCD 16x2 באמצעות lcd.print ()
lcd.setCursor (0,0); lcd.print ("A IP:"); lcd.print (adc); lcd.setCursor (10,0); lcd.print ("V:"); lcd.print (ipvolt); lcd.setCursor (0,1); lcd.print ("D OP:"); lcd.print (אנלוגי); lcd.setCursor (10,1); lcd.print ("V:"); lcd.print (opvolt); עיכוב (500); lcd.clear ();
המרה דיגיטלית לאנלוגית באמצעות MCP4725 ו- Arduino
לאחר השלמת כל חיבורי המעגל והעלאת הקוד לארדואינו, יש לשנות את הפוטנציומטר ולראות את הפלט על גבי LCD . שורה ראשונה של LCD תציג את ערך ה- ADC והמתח הקלט, והשורה השנייה תציג את ערך ה- DAC והמתח.
ניתן גם לבדוק את מתח המוצא על ידי חיבור מולטימטר לסיכה OUT ו- GND של MCP4725.
כך אנו יכולים להמיר ערכים דיגיטליים לאנלוגיים באמצעות ממשק DAC MCP4725 עם Arduino.