- MCP4725 DAC Modülü (Dijital - Analog Dönüştürücü)
- MCP4725 DAC'de I2C İletişimi
- Gerekli Bileşenler
- Devre şeması
- DAC Arduino Programlama
- MCP4725 ve Arduino kullanarak Dijitalden Analoğa Dönüşüm
Mikrodenetleyicilerin yalnızca dijital değerlerle çalıştığını hepimiz biliyoruz, ancak gerçek dünyada analog sinyallerle uğraşmak zorundayız. Bu nedenle ADC (Analogdan Dijitale Dönüştürücüler), gerçek dünyadaki Analog değerleri Dijital forma dönüştürmek için vardır, böylece mikro denetleyiciler sinyalleri işleyebilir. Ama ya dijital değerlerden Analog sinyallere ihtiyacımız olursa, işte DAC (Dijitalden Analog Dönüştürücü) geliyor.
Dijitalden Analoğa dönüştürücü için basit bir örnek, bir şarkıcının mikrofonu kullandığı ve bir şarkı söylediği stüdyoda bir şarkıyı kaydetmektir. Bu analog ses dalgaları dijital forma dönüştürülür ve daha sonra bir dijital format dosyasında saklanır ve şarkı, depolanan dijital dosya kullanılarak çalındığında, bu dijital değerler, hoparlör çıkışı için analog sinyallere dönüştürülür. Yani bu sistemde DAC kullanılmaktadır.
DAC, Motor kontrolü, LED Işıkların Kontrol Parlaklığı, Ses Amplifikatörü, Video Kodlayıcılar, Veri Toplama Sistemleri vb . Birçok uygulamada kullanılabilir.
Çoğu mikrodenetleyicide, analog çıktı üretmek için kullanılabilecek dahili bir DAC vardır. Ancak ATmega328 / ATmega168 gibi Arduino işlemcilerin dahili DAC'si yoktur. Arduino'nun ADC özelliği (Analogdan Dijitale Dönüştürücü) vardır ancak DAC (Dijitalden Analog Dönüştürücü) yoktur. Dahili ADC'de 10 bitlik bir DAC'ye sahiptir, ancak bu DAC bağımsız olarak kullanılamaz. Yani burada, bu Arduino DAC eğitiminde, Arduino ile MCP4725 DAC Modülü adı verilen ek bir kart kullanıyoruz .
MCP4725 DAC Modülü (Dijital - Analog Dönüştürücü)
MCP4725 IC, (0'dan 5V'a) çıkış analog voltajları üretmek için kullanılan ve I2C iletişimi kullanılarak kontrol edilen 12 Bit Dijital-Analog Dönüştürücü Modülüdür. Ayrıca yerleşik kalıcı bellek EEPROM ile birlikte gelir.
Bu IC, 12-Bit çözünürlüğe sahiptir. Bu, referans voltajına göre voltaj çıkışı sağlamak için girdi olarak (0 ila 4096) kullandığımız anlamına gelir. Maksimum referans voltajı 5V'tur.
Çıkış Voltajını hesaplamak için formül
O / P Voltajı = (Referans Voltaj / Çözünürlük) x Dijital Değer
Örneğin referans voltajı olarak 5V kullanırsak ve dijital değerin 2048 olduğunu varsayalım. Yani DAC çıkışını hesaplamak için.
O / P Voltajı = (5/4096) x 2048 = 2.5V
MCP4725'in pin çıkışı
Aşağıda, pim adlarını açıkça belirten MCP4725 resmi bulunmaktadır.
MCP4725'in Pinleri |
Kullanım |
DIŞARI |
Çıkışlar Analog Gerilim |
GND |
Çıkış için GND |
SCL |
I2C Seri Saat hattı |
SDA |
I2C Seri Veri hattı |
VCC |
Giriş Referans Voltajı 5V veya 3.3V |
GND |
Giriş için GND |
MCP4725 DAC'de I2C İletişimi
Bu DAC IC, I2C iletişimini kullanan herhangi bir mikro denetleyici ile arayüzlenebilir. I2C iletişimi yalnızca iki kablolu SCL ve SDA gerektirir. Varsayılan olarak, MCP4725 için I2C adresi 0x60 veya 0x61 veya 0x62'dir. Benim için 0x61. I2C veri yolunu kullanarak birden fazla MCP4725 DAC IC bağlayabiliriz. Tek şey, IC'nin I2C adresini değiştirmemiz gerektiğidir. Arduino'daki I2C iletişimi önceki eğitimde ayrıntılı olarak zaten açıklanmıştır.
Bu eğitimde Arduino Uno ile bir MCP4725 DAC IC bağlayacağız ve bir potansiyometre kullanarak Arduino pin A0'a analog giriş değeri sağlayacağız. Daha sonra analog değeri dijital forma dönüştürmek için ADC kullanılacaktır. Bundan sonra bu dijital değerler, DAC MCP4725 IC kullanılarak analog sinyallere dönüştürülmek üzere I2C veri yolu üzerinden MCP4725'e gönderilir. Arduino pin A1, MCP4725'in analog çıkışını pin OUT'dan kontrol etmek ve son olarak hem ADC & DAC değerlerini hem de voltajları 16x2 LCD ekranda görüntülemek için kullanılır.
Gerekli Bileşenler
- Arduino Nano / Arduino Uno
- 16x2 LCD ekran modülü
- MCP4725 DAC IC
- 10k Potansiyometre
- Breadboard
- Atlama Telleri
Devre şeması
Aşağıdaki tablo MCP4725 DAC IC, Arduino Nano ve Multi-meter arasındaki bağlantıyı göstermektedir
MCP4725 |
Arduino Nano |
Multimetre |
SDA |
A4 |
NC |
SCL |
A5 |
NC |
A0 veya OUT |
A1 |
+ ve terminali |
GND |
GND |
-ve terminali |
VCC |
5V |
NC |
16x2 LCD ile Arduino Nano arasındaki bağlantı
LCD 16x2 |
Arduino Nano |
VSS |
GND |
VDD |
+ 5V |
V0 |
Potansiyometre Merkez Piminden LCD'nin kontrastını ayarlamak için |
RS |
D2 |
RW |
GND |
E |
D3 |
D4 |
D4 |
D5 |
D5 |
D6 |
D6 |
D7 |
D7 |
Bir |
+ 5V |
K |
GND |
Arduino Nano'nun A0 analog girişine bağlı merkez pini, GND'ye bağlı sol pini ve 5V Arduino'ya bağlı en sağ pini olan bir potansiyometre kullanılır.
DAC Arduino Programlama
DAC eğitimi için eksiksiz Arduino kodu, bir tanıtım videosu ile sonunda verilmiştir. Burada kodu satır satır açıkladık.
İlk olarak, wire.h ve liquidcrystal.h kitaplığını kullanarak I2C ve LCD için kitaplığı dahil edin.
#Dahil etmek
Ardından, Arduino Nano ile bağladığımız pinlere göre LCD pinlerini tanımlayın ve başlatın
LiquidCrystal lcd (2,3,4,5,6,7); // LCD ekran pinlerini RS, E, D4, D5, D6, D7 tanımlayın
Daha sonra MCP4725 DAC IC'nin I2C adresini tanımlayın
#define MCP4725 0x61
Geçersiz kurulumda ()
Önce Arduino Nano'nun A4 (SDA) ve A5 (SCL) pinlerinde I2C iletişimine başlayın
Wire.begin (); // I2C iletişimini başlatır
Daha sonra LCD ekranı 16x2 moduna ayarlayın ve bir karşılama mesajı görüntüleyin.
lcd.begin (16,2); // LCD'yi 16X2 Modunda ayarlar lcd.print ("CIRCUIT DIGEST"); gecikme (1000); lcd.clear (); lcd.setCursor (0,0); lcd.print ("Arduino"); lcd.setCursor (0,1); lcd.print ("MCP4725 ile DAC"); gecikme (2000); lcd.clear ();
Boşluk döngüsünde ()
1. Önce arabelleğe kontrol bayt değerini (0b01000000) koyun
(010-MCP4725'i Yazma modunda ayarlar)
arabellek = 0b01000000;
2. Aşağıdaki ifade, analog değeri A0 pininden okur ve bunu dijital değerlere (0-1023) dönüştürür. Arduino ADC 10-bit çözünürlüktür, bu yüzden 4 ile çarpın: 0-4096, DAC 12-bit çözünürlük olduğu için.
adc = analogOku (A0) * 4;
3. Bu ifade, ADC giriş değerinden (0 ila 4096) gelen voltajı ve 5V olarak referans voltajını bulmak içindir.
float ipvolt = (5.0 / 4096.0) * adc;
4. İlk satırın altında ADC değişkeninde 4 biti sağa kaydırarak En önemli bit değerlerini arabelleğe, ikinci satır ise ADC değişkeninde 4 biti sola kaydırarak en az anlamlı bit değerlerini arabelleğe koyar.
tampon = adc >> 4; tampon = adc << 4;
5. Aşağıdaki ifade, DAC çıkışı olan A1'den (MCP4725 DAC IC'nin OUTPUT pini) analog voltajı okur. Bu pin, çıkış voltajını kontrol etmek için multimetreye de bağlanabilir. Multimetreyi nasıl kullanacağınızı buradan öğrenin.
işaretsiz int analogread = analogRead (A1) * 4;
6. Ayrıca, değişken analogdan gelen voltaj değeri aşağıdaki formül kullanılarak hesaplanır
float opvolt = (5.0 / 4096.0) * analogread;
7. MCP4725 ile iletimi başlatmak için aşağıdaki ifade kullanılır
Wire.beginTransmission (MCP4725);
Kontrol baytını I2C'ye gönderir
Wire.write (arabellek);
MSB'yi I2C'ye gönderir
Wire.write (arabellek);
LSB'yi I2C'ye gönderir
Wire.write (arabellek);
İletimi bitirir
Wire.endTransmission ();
Şimdi nihayet bu sonuçları lcd.print () kullanarak LCD 16x2 ekranda görüntüleyin
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); gecikme (500); lcd.clear ();
MCP4725 ve Arduino kullanarak Dijitalden Analoğa Dönüşüm
Tüm devre bağlantılarını tamamlayıp kodu Arduino'ya yükledikten sonra potansiyometreyi değiştirin ve çıkışı LCD üzerinden izleyin . LCD'nin ilk satırında giriş ADC değeri ve voltajı, ikinci satır ise çıkış DAC değeri ve voltajını gösterecektir.
Çıkış gerilimini ayrıca MCP4725'in OUT ve GND pinlerine bir multimetre bağlayarak da kontrol edebilirsiniz.
DAC modülü MCP4725'i Arduino ile arayüzleyerek Dijital değerleri Analog'a bu şekilde dönüştürebiliriz.