- وحدة MCP4725 DAC (محول رقمي إلى تناظري)
- اتصالات I2C في MCP4725 DAC
- المكونات مطلوبة
- مخطط الرسم البياني
- برمجة DAC Arduino
- التحويل الرقمي إلى التناظري باستخدام MCP4725 و Arduino
نعلم جميعًا أن Microcontroller تعمل فقط مع القيم الرقمية ولكن في العالم الحقيقي علينا التعامل مع الإشارات التناظرية. هذا هو السبب في وجود ADC (المحولات التناظرية إلى الرقمية) لتحويل القيم التناظرية في العالم الحقيقي إلى شكل رقمي حتى تتمكن وحدات التحكم الدقيقة من معالجة الإشارات. ولكن ماذا لو احتجنا إلى إشارات تناظرية من القيم الرقمية ، هنا يأتي DAC (محول رقمي إلى تناظري)
مثال بسيط على المحول الرقمي إلى التناظري هو تسجيل أغنية في الاستوديو حيث يستخدم مغني فنان الميكروفون ويغني أغنية. يتم تحويل موجات الصوت التناظرية هذه إلى شكل رقمي ثم يتم تخزينها في ملف تنسيق رقمي وعندما يتم تشغيل الأغنية باستخدام الملف الرقمي المخزن يتم تحويل هذه القيم الرقمية إلى إشارات تمثيلية لإخراج السماعة. لذلك في هذا النظام يتم استخدام DAC.
يمكن استخدام DAC في العديد من التطبيقات مثل التحكم في المحرك ، والتحكم في سطوع مصابيح LED ، ومكبر الصوت ، وأجهزة ترميز الفيديو ، وأنظمة الحصول على البيانات ، إلخ.
يوجد في العديد من المتحكمات الدقيقة DAC داخلي يمكن استخدامه لإنتاج خرج تناظري. لكن معالجات Arduino مثل ATmega328 / ATmega168 لا تحتوي على DAC. يحتوي Arduino على ميزة ADC (محول تناظري إلى رقمي) ولكنه لا يحتوي على DAC (محول رقمي إلى تناظري). يحتوي على DAC 10 بت في ADC الداخلي ولكن لا يمكن استخدام DAC كمستقل. هنا في هذا البرنامج التعليمي Arduino DAC ، نستخدم لوحة إضافية تسمى MCP4725 DAC Module مع Arduino.
وحدة MCP4725 DAC (محول رقمي إلى تناظري)
MCP4725 IC عبارة عن وحدة محول رقمية 12 بت إلى أنالوج يتم استخدامها لتوليد جهد تناظري ناتج من (0 إلى 5 فولت) ويتم التحكم فيه باستخدام اتصال I2C. يأتي أيضًا مع ذاكرة EEPROM غير المتطايرة على متنها.
هذا IC لديه دقة 12 بت. هذا يعني أننا نستخدم (من 0 إلى 4096) كمدخل لتوفير خرج الجهد فيما يتعلق بالجهد المرجعي. أقصى جهد مرجعي 5 فولت.
صيغة لحساب جهد الخرج
الجهد O / P = (الجهد المرجعي / الدقة) x القيمة الرقمية
على سبيل المثال ، إذا استخدمنا 5 فولت كجهد مرجعي ولنفترض أن القيمة الرقمية هي 2048. لذلك لحساب خرج DAC.
الجهد O / P = (5/4096) × 2048 = 2.5 فولت
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 في Arduino بالتفصيل في البرنامج التعليمي السابق.
في هذا البرنامج التعليمي ، سنقوم بتوصيل MCP4725 DAC IC بـ Arduino Uno وتقديم قيمة إدخال تمثيلية إلى Arduino pin A0 باستخدام مقياس الجهد. ثم سيتم استخدام ADC لتحويل القيمة التناظرية إلى شكل رقمي. بعد ذلك يتم إرسال هذه القيم الرقمية إلى MCP4725 عبر ناقل I2C ليتم تحويلها إلى إشارات تمثيلية باستخدام DAC MCP4725 IC. يتم استخدام Arduino pin A1 للتحقق من الإخراج التناظري لـ MCP4725 من دبوس OUT وأخيراً عرض قيم ADC و DAC والجهد في شاشة 16x2 LCD.
المكونات مطلوبة
- اردوينو نانو / اردوينو اونو
- وحدة عرض LCD مقاس 16 × 2
- MCP4725 DAC IC
- 10 كيلو الجهد
- اللوح
- أسلاك توصيل
مخطط الرسم البياني
يوضح الجدول أدناه الاتصال بين MCP4725 DAC IC و Arduino Nano و Multi-meter
MCP4725 |
اردوينو نانو |
المقياس المتعدد |
SDA |
A4 |
NC |
SCL |
A5 |
NC |
A0 أو OUT |
أ 1 |
+ الخامس المحطة |
GND |
GND |
-في المحطة |
VCC |
5 فولت |
NC |
اتصال بين شاشة LCD مقاس 16x2 و Arduino Nano
شاشة LCD مقاس 16x2 |
اردوينو نانو |
VSS |
GND |
VDD |
+ 5 فولت |
V0 |
من Potentiometer Center Pin لضبط تباين شاشة LCD |
RS |
د 2 |
RW |
GND |
ه |
د 3 |
د 4 |
د 4 |
د 5 |
د 5 |
د 6 |
د 6 |
د 7 |
د 7 |
أ |
+ 5 فولت |
ك |
GND |
A الجهد يستخدم مع دبوس مركز متصلا A0 التناظرية المدخلات من اردوينو نانو، يسار دبوس متصلة GND واليمين معظم دبوس متصلة 5V من اردوينو.
برمجة DAC Arduino
يتم تقديم كود 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 ("CIRCUIT 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 (دبوس الإخراج MCP4725 DAC IC). يمكن أيضًا توصيل هذا الدبوس بالمقياس المتعدد للتحقق من جهد الخرج. تعرف على كيفية استخدام جهاز القياس المتعدد هنا.
مؤشر int analogread غير الموقعة = analogRead (A1) * 4 ؛
6. علاوة على ذلك ، يتم حساب قيمة الجهد من التماثلية المتغيرة باستخدام الصيغة أدناه
تعويم 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 (شركة تطوير العقبة) ؛ 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
بعد الانتهاء من جميع اتصالات الدائرة وتحميل الكود إلى Arduino ، قم بتغيير مقياس الجهد وشاهد الإخراج على شاشة LCD . سيُظهر السطر الأول من LCD قيمة الإدخال والجهد ADC ، وسيعرض السطر الثاني قيمة الإخراج والجهد DAC.
يمكنك أيضًا التحقق من جهد الخرج عن طريق توصيل مقياس متعدد بدبوس OUT و GND الخاص بـ MCP4725.
هذه هي الطريقة التي يمكننا بها تحويل القيم الرقمية إلى تناظرية من خلال ربط وحدة DAC MCP4725 مع Arduino.