- Modul MCP4725 DAC (Konverter Digital ke Analog)
- Komunikasi I2C di MCP4725 DAC
- Komponen Diperlukan
- Diagram Sirkuit
- Pemrograman DAC Arduino
- Konversi Digital ke Analog menggunakan MCP4725 dan Arduino
Kita semua tahu bahwa Mikrokontroler hanya bekerja dengan nilai digital tetapi di dunia nyata kita harus berurusan dengan sinyal analog. Itu sebabnya ADC (Analog to Digital Converters) ada untuk mengubah nilai analog dunia nyata menjadi bentuk Digital sehingga mikrokontroler dapat memproses sinyal. Tetapi bagaimana jika kita membutuhkan sinyal Analog dari nilai digital, maka inilah DAC (Digital to Analog Converter).
Contoh sederhana untuk pengonversi Digital ke Analog merekam lagu di studio di mana penyanyi artis menggunakan mikrofon dan menyanyikan lagu. Gelombang suara analog ini diubah menjadi bentuk digital dan kemudian disimpan dalam file format digital dan ketika lagu diputar menggunakan file digital yang disimpan, nilai-nilai digital tersebut diubah menjadi sinyal analog untuk keluaran speaker. Jadi dalam sistem ini DAC digunakan.
DAC dapat digunakan dalam banyak aplikasi seperti Kontrol motor, Kecerahan Kontrol Lampu LED, Amplifier Audio, Enkoder Video, Sistem Akuisisi Data, dll.
Di banyak mikrokontroler terdapat DAC internal yang dapat digunakan untuk menghasilkan keluaran analog. Tetapi prosesor Arduino seperti ATmega328 / ATmega168 tidak memiliki DAC inbuilt. Arduino memiliki fitur ADC (Analog to Digital Converter) tetapi tidak memiliki DAC (Digital to Analog Converter). Ini memiliki DAC 10-bit di ADC internal tetapi DAC ini tidak dapat digunakan sebagai mandiri. Jadi di sini, di tutorial Arduino DAC ini, kami menggunakan papan tambahan yang disebut Modul DAC MCP4725 dengan Arduino.
Modul MCP4725 DAC (Konverter Digital ke Analog)
MCP4725 IC adalah Modul 12-Bit Digital to Analog Converter yang digunakan untuk menghasilkan tegangan analog keluaran dari (0 sampai 5V) dan dikendalikan dengan menggunakan komunikasi I2C. Itu juga dilengkapi dengan EEPROM memori nonvolatile on board.
IC ini memiliki resolusi 12-Bit. Ini berarti kami menggunakan (0 hingga 4096) sebagai input untuk memberikan output tegangan sehubungan dengan tegangan referensi. Tegangan referensi maksimum adalah 5V.
Rumus untuk menghitung Tegangan Output
Tegangan O / P = (Tegangan Referensi / Resolusi) x Nilai Digital
Sebagai Contoh jika kita menggunakan 5V sebagai tegangan referensi dan anggaplah nilai digitalnya adalah 2048. Jadi untuk menghitung keluaran DAC.
Tegangan O / P = (5/4096) x 2048 = 2.5V
Pinout dari MCP4725
Di bawah ini adalah gambar MCP4725 dengan nama pin yang menunjukkan dengan jelas.
Pin MCP4725 |
Menggunakan |
DI LUAR |
Menghasilkan Tegangan Analog |
GND |
GND untuk Output |
SCL |
Garis I2C Serial Clock |
SDA |
Jalur Data Serial I2C |
VCC |
Tegangan Referensi Input 5V atau 3.3V |
GND |
GND untuk masukan |
Komunikasi I2C di MCP4725 DAC
IC DAC ini dapat dihubungkan dengan mikrokontroler apa pun menggunakan komunikasi I2C. Komunikasi I2C hanya membutuhkan dua kabel SCL dan SDA. Secara default, alamat I2C untuk MCP4725 adalah 0x60 atau 0x61 atau 0x62. Bagi saya itu 0x61. Dengan menggunakan bus I2C kita dapat menghubungkan beberapa IC MCP4725 DAC. Hanya saja kita perlu mengubah alamat I2C dari IC. Komunikasi I2C di Arduino sudah dijelaskan secara detail pada tutorial sebelumnya.
Dalam tutorial ini kita akan menghubungkan IC MCP4725 DAC dengan Arduino Uno dan memberikan nilai input analog ke pin Arduino A0 dengan menggunakan potensiometer. Kemudian ADC akan digunakan untuk mengubah nilai analog menjadi bentuk digital. Setelah itu nilai digital tersebut dikirim ke MCP4725 melalui bus I2C untuk diubah menjadi sinyal analog menggunakan IC DAC MCP4725. Arduino pin A1 digunakan untuk memeriksa output analog MCP4725 dari pin OUT dan akhirnya menampilkan nilai dan voltase ADC & DAC pada layar LCD 16x2.
Komponen Diperlukan
- Arduino Nano / Arduino Uno
- Modul layar LCD 16x2
- MCP4725 DAC IC
- Potensiometer 10k
- Papan tempat memotong roti
- Kabel Jumper
Diagram Sirkuit
Tabel di bawah ini menunjukkan hubungan antara MCP4725 DAC IC, Arduino Nano dan Multi-meter
MCP4725 |
Arduino Nano |
Multimeter |
SDA |
A4 |
NC |
SCL |
A5 |
NC |
A0 atau OUT |
A1 |
+ lima terminal |
GND |
GND |
terminal -ve |
VCC |
5V |
NC |
Koneksi antara LCD 16x2 dan Arduino Nano
LCD 16x2 |
Arduino Nano |
VSS |
GND |
VDD |
+ 5V |
V0 |
Dari Pin Pusat Potensiometer untuk menyesuaikan kontras LCD |
RS |
D2 |
RW |
GND |
E |
D3 |
D4 |
D4 |
D5 |
D5 |
D6 |
D6 |
D7 |
D7 |
SEBUAH |
+ 5V |
K |
GND |
Sebuah potensiometer digunakan dengan pusat pin terhubung ke A0 analog input Arduino Nano, Kiri pin terhubung ke GND dan paling kanan pin terhubung ke 5V dari Arduino.
Pemrograman DAC Arduino
Kode Arduino lengkap untuk tutorial DAC diberikan di bagian akhir dengan video demonstrasi. Di sini kami telah menjelaskan kode baris demi baris.
Pertama, sertakan library untuk I2C dan LCD menggunakan library wire.h dan liquidcrystal.h.
#include
Selanjutnya tentukan dan inisialisasi pin LCD tersebut sesuai dengan pin yang telah kita hubungkan dengan Arduino Nano
LCD LiquidCrystal (2,3,4,5,6,7); // Tentukan pin layar LCD RS, E, D4, D5, D6, D7
Selanjutnya tentukan alamat I2C dari IC DAC MCP4725
#tentukan MCP4725 0x61
Dalam pengaturan void ()
Pertama, mulai komunikasi I2C di pin A4 (SDA) dan A5 (SCL) dari Arduino Nano
Wire.begin (); // Memulai komunikasi I2C
Selanjutnya atur layar LCD dalam mode 16x2 dan tampilkan pesan selamat datang.
lcd.begin (16,2); // Set LCD dalam Mode 16X2 lcd.print ("CIRCUIT DIGEST"); penundaan (1000); lcd.clear (); lcd.setCursor (0,0); lcd.print ("Arduino"); lcd.setCursor (0,1); lcd.print ("DAC dengan MCP4725"); penundaan (2000); lcd.clear ();
Di loop kosong ()
1. Pertama di buffer, masukkan nilai byte kontrol (0b01000000)
(010-Set MCP4725 dalam mode Tulis)
penyangga = 0b01000000;
2. Pernyataan berikut membaca nilai analog dari pin A0 dan mengubahnya menjadi nilai digital (0-1023). Arduino ADC adalah resolusi 10-bit jadi kalikan dengan 4 menghasilkan: 0-4096, karena DAC adalah resolusi 12-bit.
adc = analogRead (A0) * 4;
3. Pernyataan ini untuk mencari tegangan dari nilai input ADC (0 hingga 4096) dan tegangan referensi sebagai 5V
float ipvolt = (5.0 / 4096.0) * adc;
4. Di bawah baris pertama menempatkan nilai bit paling signifikan dalam buffer dengan menggeser 4 bit ke kanan dalam variabel ADC, dan baris kedua menempatkan nilai bit paling signifikan dalam buffer dengan menggeser 4 bit ke kiri dalam variabel ADC.
buffer = adc >> 4; buffer = adc << 4;
5. Pernyataan berikut membaca tegangan analog dari A1 yang merupakan output DAC (pin OUTPUT IC MCP4725 DAC). Pin ini juga dapat dihubungkan ke multimeter untuk memeriksa tegangan keluaran. Pelajari cara menggunakan Multimeter di sini.
unsigned int analogread = analogRead (A1) * 4;
6. Selanjutnya nilai tegangan dari variabel analogread dihitung menggunakan rumus di bawah ini
float opvolt = (5.0 / 4096.0) * analogread;
7. Pernyataan berikut digunakan untuk memulai transmisi dengan MCP4725
Wire.beginTransmission (MCP4725);
Mengirim byte kontrol ke I2C
Wire.write (buffer);
Mengirim MSB ke I2C
Wire.write (buffer);
Mengirim LSB ke I2C
Wire.write (buffer);
Mengakhiri transmisi
Wire.endTransmission ();
Sekarang akhirnya tampilkan hasil tersebut di layar 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); penundaan (500); lcd.clear ();
Konversi Digital ke Analog menggunakan MCP4725 dan Arduino
Setelah menyelesaikan semua koneksi sirkuit dan mengunggah kodenya ke Arduino, variasikan potensiometer dan perhatikan outputnya pada LCD . Baris pertama LCD akan menunjukkan nilai dan tegangan input ADC, dan baris kedua akan menunjukkan nilai dan tegangan DAC keluaran.
Anda juga dapat memeriksa tegangan output dengan menghubungkan multimeter ke pin OUT dan GND MCP4725.
Ini adalah bagaimana kita dapat mengubah nilai Digital menjadi Analog dengan menghubungkan modul DAC MCP4725 dengan Arduino.