- Modul MCP4725 DAC (Digital to Analog Converter)
- Komunikasi I2C dalam MCP4725 DAC
- Komponen Diperlukan
- Rajah Litar
- Pengaturcaraan DAC Arduino
- Penukaran Digital ke Analog menggunakan MCP4725 dan Arduino
Kita semua tahu bahawa Pengawal Mikro hanya berfungsi dengan nilai digital tetapi dalam dunia nyata kita harus menangani isyarat analog. Itulah sebabnya ADC (Analog to Digital Converter) ada untuk menukar nilai Analog dunia nyata menjadi bentuk Digital supaya mikrokontroler dapat memproses isyarat. Tetapi bagaimana jika kita memerlukan isyarat Analog dari nilai digital, jadi inilah DAC (Digital to Analog Converter).
Contoh mudah untuk penukar Digital ke Analog adalah merakam lagu di studio di mana seorang penyanyi artis menggunakan mikrofon dan menyanyikan sebuah lagu. Gelombang bunyi analog ini diubah menjadi bentuk digital dan kemudian disimpan dalam fail format digital dan ketika lagu dimainkan menggunakan fail digital yang tersimpan, nilai digital tersebut ditukar menjadi isyarat analog untuk output pembesar suara. Jadi dalam sistem ini DAC digunakan.
DAC boleh digunakan dalam banyak aplikasi seperti Kawalan motor, Kecerahan Kontrol Lampu LED, Penguat Audio, Pengekod Video, Sistem Perolehan Data dll.
Di banyak mikrokontroler terdapat DAC dalaman yang dapat digunakan untuk menghasilkan output analog. Tetapi pemproses Arduino seperti ATmega328 / ATmega168 tidak mempunyai DAC inbuilt. Arduino mempunyai ciri ADC (Analog to Digital Converter) tetapi tidak mempunyai DAC (Digital to Analog Converter). Ia mempunyai DAC 10-bit dalam ADC dalaman tetapi DAC ini tidak dapat digunakan sebagai mandiri. Jadi di sini dalam tutorial Arduino DAC ini, kami menggunakan papan tambahan yang disebut MCP4725 DAC Module dengan Arduino.
Modul MCP4725 DAC (Digital to Analog Converter)
MCP4725 IC adalah 12-Bit Digital to Analog Converter Module yang digunakan untuk menghasilkan voltan analog output dari (0 hingga 5V) dan ia dikendalikan dengan menggunakan komunikasi I2C. Ia juga dilengkapi dengan EEPROM memori tidak bervolat.
IC ini mempunyai resolusi 12-Bit. Ini bermaksud kita menggunakan (0 hingga 4096) sebagai input untuk memberikan output voltan berkenaan dengan voltan rujukan. Voltan rujukan maksimum ialah 5V.
Formula untuk mengira Voltan Keluaran
Voltan O / P = (Voltan Rujukan / Resolusi) x Nilai Digital
Sebagai contoh jika kita menggunakan 5V sebagai voltan rujukan dan mari kita anggap bahawa nilai digital adalah 2048. Jadi untuk mengira output DAC.
Voltan O / P = (5/4096) x 2048 = 2.5V
Pinout MCP4725
Di bawah ini adalah gambar MCP4725 dengan jelas menunjukkan nama pin.
Pin MCP4725 |
Gunakan |
KELUAR |
Voltan Analog Keluaran |
GND |
GND untuk Keluaran |
SCL |
Garisan Jam Bersiri I2C |
SDA |
Garis Data Bersiri I2C |
VCC |
Voltan Rujukan Input 5V atau 3.3V |
GND |
GND untuk input |
Komunikasi I2C dalam MCP4725 DAC
IC DAC ini dapat dihubungkan dengan mana-mana mikrokontroler menggunakan komunikasi I2C. Komunikasi I2C hanya memerlukan dua wayar SCL dan SDA. Secara lalai, alamat I2C untuk MCP4725 ialah 0x60 atau 0x61 atau 0x62. Bagi saya 0x61. Dengan menggunakan bas I2C kita dapat menghubungkan pelbagai MCP4725 DAC IC. Cuma kita perlu menukar alamat I2C IC. Komunikasi I2C dalam Arduino sudah dijelaskan secara terperinci dalam tutorial sebelumnya.
Dalam tutorial ini kita akan menghubungkan IC DAC MCP4725 dengan Arduino Uno dan memberikan nilai input analog ke pin Arduino A0 dengan menggunakan potensiometer. Kemudian ADC akan digunakan untuk menukar nilai analog menjadi bentuk digital. Selepas itu nilai digital tersebut dihantar ke MCP4725 melalui bas I2C untuk ditukar menjadi isyarat analog menggunakan IC DAC MCP4725. Arduino pin A1 digunakan untuk memeriksa output analog MCP4725 dari pin OUT dan akhirnya memaparkan kedua-dua nilai dan voltan ADC & DAC pada paparan LCD 16x2.
Komponen Diperlukan
- Arduino Nano / Arduino Uno
- Modul paparan LCD 16x2
- MCP4725 DAC IC
- Potensiometer 10k
- Papan roti
- Wayar Pelompat
Rajah Litar
Jadual di bawah menunjukkan hubungan antara MCP4725 DAC IC, Arduino Nano dan Multi-meter
MCP4725 |
Arduino Nano |
Multimeter |
SDA |
A4 |
NC |
SCL |
A5 |
NC |
A0 atau KELUAR |
A1 |
+ ve terminal |
GND |
GND |
-ve terminal |
VCC |
5V |
NC |
Sambungan antara 16x2 LCD dan Arduino Nano
LCD 16x2 |
Arduino Nano |
VSS |
GND |
VDD |
+ 5V |
V0 |
Dari Potentiometer Center Pin untuk menyesuaikan kontras LCD |
RS |
D2 |
RW |
GND |
E |
D3 |
D4 |
D4 |
D5 |
D5 |
D6 |
D6 |
D7 |
D7 |
A |
+ 5V |
K |
GND |
A potensiometer digunakan dengan pin pusat disambungkan kepada input A0 analog Arduino Nano, pin Kiri dihubungkan dengan GND dan kanan pin paling disambungkan kepada 5V untuk Arduino.
Pengaturcaraan DAC Arduino
Kod Arduino lengkap untuk tutorial DAC diberikan di akhir dengan video demonstrasi. Di sini kami telah menerangkan kod baris demi baris.
Pertama, sertakan perpustakaan untuk I2C dan LCD menggunakan perpustakaan wire.h dan liquidcrystal.h.
#sertakan
Seterusnya tentukan dan inisialisasi pin LCD mengikut pin yang telah kita hubungkan dengan Arduino Nano
LiquidCrystal lcd (2,3,4,5,6,7); // Tentukan pin paparan LCD RS, E, D4, D5, D6, D7
Seterusnya tentukan alamat I2C MCP4725 DAC IC
#tentukan MCP4725 0x61
Dalam persediaan kosong ()
Mula-mula mulakan komunikasi I2C di pin A4 (SDA) dan A5 (SCL) Arduino Nano
Wire.begin (); // Memulakan komunikasi I2C
Seterusnya tetapkan paparan LCD dalam mod 16x2 dan paparkan mesej selamat datang.
lcd.begin (16,2); // Menetapkan LCD dalam mod 16X2 lcd.print ("CIRCUIT DIGEST"); kelewatan (1000); lcd.clear (); lcd.setCursor (0,0); lcd.print ("Arduino"); lcd.setCursor (0,1); lcd.print ("DAC dengan MCP4725"); kelewatan (2000); lcd.clear ();
Dalam gelung kekosongan ()
1. Pertama dalam penyangga meletakkan nilai bait kawalan (0b01000000)
(010-Set MCP4725 dalam mod Tulis)
penampan = 0b01000000;
2. Pernyataan berikut membaca nilai analog dari pin A0 dan menukarnya menjadi nilai digital (0-1023). Arduino ADC adalah resolusi 10-bit jadi kalikan dengan 4 memberikan: 0-4096, kerana DAC adalah resolusi 12-bit.
adc = analogRead (A0) * 4;
3. Pernyataan ini adalah untuk mencari voltan dari nilai input ADC (0 hingga 4096) dan voltan rujukan sebagai 5V
apungan ipvolt = (5.0 / 4096.0) * adc;
4. Di bawah baris pertama meletakkan nilai bit Paling signifikan dalam penyangga dengan mengalihkan 4 bit ke kanan dalam pemboleh ubah ADC, dan baris kedua meletakkan nilai bit paling tidak signifikan dalam penyangga dengan mengalihkan 4 bit ke kiri dalam pemboleh ubah ADC.
penyangga = adc >> 4; penyangga = adc << 4;
5. Pernyataan berikut membaca voltan analog dari A1 iaitu output DAC (pin OUTPUT MCP4725 DAC IC). Pin ini juga dapat disambungkan ke multimeter untuk memeriksa voltan keluaran. Ketahui cara menggunakan Multimeter di sini.
int analogread yang tidak bertanda = analogRead (A1) * 4;
6. Selanjutnya nilai voltan dari pemboleh ubah analog dikira menggunakan formula di bawah
float opvolt = (5.0 / 4096.0) * analogread;
7. Pernyataan berikut digunakan untuk memulakan penghantaran dengan MCP4725
Wire.beginTransmission (MCP4725);
Menghantar bait kawalan ke I2C
Wire.write (penyangga);
Menghantar MSB ke I2C
Wire.write (penyangga);
Menghantar LSB ke I2C
Wire.write (penyangga);
Menamatkan penghantaran
Wire.endTransmission ();
Sekarang akhirnya paparkan hasil tersebut di paparan LCD 16x2 menggunakan 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 (analogread); lcd.setCursor (10,1); lcd.print ("V:"); lcd.print (opvolt); kelewatan (500); lcd.clear ();
Penukaran Digital ke Analog menggunakan MCP4725 dan Arduino
Setelah menyelesaikan semua sambungan litar dan memuat naik kod ke Arduino, ubah potensiometer dan tonton outputnya pada LCD . Baris pertama LCD akan menunjukkan nilai dan voltan ADC input, dan baris kedua akan menunjukkan nilai dan voltan DAC output.
Anda juga boleh memeriksa voltan keluaran dengan menyambungkan multimeter ke pin OUT dan GND MCP4725.
Ini adalah bagaimana kita dapat menukar nilai Digital menjadi Analog dengan menghubungkan modul DAC MCP4725 dengan Arduino.