- Gerekli Bileşenler
- MCP4725 DAC Modülü (Dijital - Analog Dönüştürücü)
- Raspberry Pi'de I2C pinleri
- MCP4725 Adafruit kitaplığını Raspberry Pi'ye yükleme
- Adafruit LCD ekran kitaplığının kurulması
- Devre Şeması ve Bağlantılar
- Raspberry Pi'yi Dijitalden Analoğa Dönüştürme için Programlama
Mikrodenetleyiciler yalnızca dijital değerlerle çalışır, 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 mikrodenetleyiciler 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.
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.
MCP4725 DAC Modülünü Arduino ve STM32 ile zaten arayüzledik. Bugün, Raspberry Pi'yi kullanarak Dijitalden Analog'a dönüştürücü tasarlamak için aynı MCP4725 DAC IC'yi kullanacağız . Raspberry PI'nize en son işletim sistemini zaten yüklediğiniz ve SSH aracılığıyla ona erişiminiz olduğu varsayılmaktadır. Değilse, devam etmeden önce Raspberry Pi ile Başlarken öğreticisini izleyin. Burada Raspberry Pi 3 üzerine kurulu Rasbian Stretch kullanıyoruz.
Gerekli Bileşenler
- Raspberry Pi 3 B + (Raspbian OS yüklü)
- MCP4725 DAC IC
- 16x2 LCD ekran
- Breadboard
- Kabloların Bağlanması
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 |
Bu IC, yalnızca iki kablolu SCL ve SDA gerektiren I2C iletişimi kullanılarak kontrol edilebilir. Varsayılan olarak, MCP4725 için I2C adresi 0x60'tır. Artık Raspberry pi'de I2C iletişimini biliyoruz.
Raspberry Pi'de I2C pinleri
MCP4725'i Raspberry Pi ile kullanmak için ilk yapılması gereken, Raspberry Pi I2C port pinlerini bilmek ve Raspberry pi'de I2C portunu yapılandırmaktır.
Raspberry Pi 3 Model B + 'nın Pin Şeması aşağıdadır ve I2C pinleri GPIO2 (SDA) ve GPIO3 (SCL) bu eğitimde kullanılmıştır.
Raspberry Pi'de I2C'yi Yapılandırma
Raspberry Pi'de varsayılan olarak I2C devre dışı bırakılmıştır. Bu yüzden önce etkinleştirilmesi gerekir. Raspberry Pi'de I2C'yi etkinleştirmek için
1. Terminale gidin ve sudo raspi-config yazın.
2. Şimdi Raspberry Pi Yazılım Yapılandırma Aracı görünür.
3. Arayüz seçeneklerini seçin ve ardından I2C'yi etkinleştirin.
4. I2C'yi etkinleştirdikten sonra Pi'yi yeniden başlatın.
Raspberry Pi kullanarak MCP4725'in I2C Adresini Tarama
Şimdi MCP4725 IC ile iletişime başlamak için Raspberry Pi'nin I2C adresini bilmesi gerekir. Adresi bulmak için önce MCP4725'in SDA ve SCL pinini Raspberry Pi'nin SDA ve SCL pinine bağlayın. Ayrıca + 5V ve GND pinlerini de bağlayın.
Şimdi terminali açın ve bağlı I2C cihazının adresini bilmek için aşağıdaki komutu yazın, sudo i2cdetect –y 1 veya sudo i2cdetect –y 0
I2C adresini bulduktan sonra şimdi MCP4725'i Raspberry Pi ile kullanmak için gerekli kitaplıkları kurma zamanı.
MCP4725 Adafruit kitaplığını Raspberry Pi'ye yükleme
Amacıyla Ahududu Pi I2C veri yolu ile MCP4725 DAC tahtası kullanın, bir Adafruit MCP4725 kütüphanesi kullanılır. Kitaplığı indirmek ve kurmak için şu adımları izleyin:
1. Raspberry Pi'nin aktif bir internete bağlı olduğundan emin olun.
2. Daha sonra bir terminal açın ve aşağıdaki satırları birer birer çalıştırın.
sudo apt-get install git build-essential python-dev git klonu https://github.com/adafruit/Adafruit_Python_MCP4725.git cd Adafruit_Python_MCP4725 sudo python setup.py install
3. Başarılı bir kurulumdan sonra şimdi Adafruit MCP4725 kitaplığı, satır kullanılarak herhangi bir python betiğine aktarılabilir.
Adafruit_MCP4725'i İçe Aktar
Adafruit LCD ekran kitaplığının kurulması
Bu projede DAC ve analog voltaj değerlerini görüntülemek için bir LCD kullanılır, böylece Raspberry Pi'de LCD kitaplığını indirip kurmak için aşağıdaki adımları izleyin:
1. Bir terminal penceresi açın ve aşağıdaki satırları birer birer çalıştırın.
apt-get install git git clone https://github.com/adafruit/Adafruit_Python_CharLCD.git cd Adafruit_Python_CharLCD sudo python setup.py install
2. LCD kitaplığının kurulumundan sonra artık Adafruit_python_CharLCD aşağıdaki satırı kullanarak herhangi bir python betiğinden kullanılabilir.
Adafruit_CharLCD'yi LCD olarak içe aktar
Artık Raspberry Pi, Dijitalden Analoğa dönüştürücü için kodlamaya hazır, bu yüzden devreyi aşağıdaki şekilde gösterildiği gibi bağlayalım.
Devre Şeması ve Bağlantılar
DAC IC MCP4725'i Raspberry Pi ile kullanmak için devre şeması aşağıda verilmiştir:
(16x2) LCD ve Raspberry Pi arasındaki Devre Bağlantıları
LCD ekran |
Raspberry Pi 3 B + |
VSS |
GND |
VDD |
+ 5V |
V0 |
Kontrast kontrolü için potansiyometreden |
RS |
GPIO25 |
RW |
GND |
E |
GPIO24 |
D4 |
GPIO23 |
D5 |
GPIO17 |
D6 |
GPIO18 |
D7 |
GPIO22 |
Bir |
+ 5V |
K |
GND |
MCP4725 ve Raspberry Pi arasındaki Devre Bağlantıları
MCP4725 |
Raspberry Pi 3 B + |
Multimetre |
GND |
GND |
Negatif Prob |
VCC |
+ 5V |
- |
SDA |
GPIO2 (SDA) |
- |
SCL |
GPIO3 (SCL) |
- |
DIŞARI |
- |
Pozitif Prob |
Tam kurulum şöyle görünecektir:
Raspberry Pi'yi Dijitalden Analoğa Dönüştürme için Programlama
Raspberry Pi için eksiksiz Python kodu bu eğitimin sonunda verilmiştir. Putty gibi herhangi bir SSH istemcisini veya FileZilla gibi herhangi bir FTP istemcisini kullanarak ahududu pi'ye yükleyin veya bir monitörü bağlayarak doğrudan ahududu pi'ye program yazabilirsiniz. Ahududu Pi'yi programlama hakkında daha fazla bilgiyi burada bulabilirsiniz.
Bu programda, 0-4096 dijital değeri, multimetre ile doğrulanabilen, 0 ila 5V arasında bir analog çıkış voltajı üretmek için I2C veri yolu aracılığıyla MCP4725'e Raspberry Pi'den gönderilir. Hem dijital hem de analog değerler 16x2 LCD'de görüntülenir. Programımızda dijital değer, for döngüsü (0,150,300,450… 4050) kullanılarak 150'lik artışlarla gönderilir. Programı detaylı olarak inceleyelim.
Öncelikle gerekli tüm kitaplıkları dahil edin. Burada LCD, MCP4725 ve zaman kitaplığı kullanılmaktadır.
Adafruit_CharLCD'yi LCD olarak içe aktar Adafruit_MCP4725 içe aktarma süresi
Daha sonra, LCD pimlerini no. satır ve sütun. 16X2 LCD'nin 2 satır ve 16 sütun olduğunu biliyoruz. Raspberry Pi ile LCD arabirimi hakkında daha fazla bilgiyi burada bulabilirsiniz.
lcd_rs = 25 lcd_en = 24 lcd_d4 = 23 lcd_d5 = 17 lcd_d6 = 18 lcd_d7 = 22 lcd_backlight = 4 # 16x2 LCD için LCD sütun ve satır boyutunu tanımlayın. lcd_columns = 16 lcd_rows = 2 lcd = LCD.Adafruit_CharLCD (lcd_rs, lcd_en, lcd_d4, lcd_d5, lcd_d6, lcd_d7, lcd_columns, lcd_rows, lcd_backlight)
Daha sonra, LCD'de beş saniye boyunca bazı hoş geldiniz mesajı görüntüleyin.
lcd.message ('Devre Özeti') time.sleep (2.0) lcd.message ('\ nDAC kullanarak Rpi') time.sleep (5.0) lcd.clear ()
Sonraki satırda, MCP4725 DAC IC'nin I2C adresiyle bir DAC örneği oluşturulur. Panomun 0x60 adresi var, panonuza göre değiştirin.
dac = Adafruit_MCP4725.MCP4725 (adres = 0x60)
Daha sonra, I2C veriyolu üzerinden MCP4725'e gönderilen x dijital değerini değiştirmek için while döngüsü içinde bir for döngüsü kullanılır. İçin döngü aralığı (0,4095,150) 'dir. X değerleri, 150'lik artışlarla 0 ile 4050 arasında değişir.
while True: aralıktaki x için (0,4097,150):
Dijital değer, aşağıdaki satır kullanılarak MCP4725'e gönderilir
dac.set_voltage (x)
Dijital değere bağlı olarak, analog değer, 5'in referans voltajı ve x'in dijital değer olduğu formül kullanılarak hesaplanır.
voltaj = x / 4096.0 * 5.0
Ardından aşağıdaki satırlar kullanılarak 2 saniyelik bir gecikmeyle LCD'de Dijital değer ve Analog değer görüntülenir.
lcd.cursor_pos = (0,0) lcd.message ("DAC Değeri:" + str (x)) lcd.message ("\ nAnalogVolt:%.2f"% voltaj) time.sleep (2)
Burada LCD ekranın ilk satırında Dijital değer ve ikinci satırda analog değer gösterilir. Analog voltajı doğrulamak için MCP4725 Çıkış Pinlerine bir multimetre de bağlanır.
Tanıtım Videosu ile kodun tamamı aşağıda verilmiştir.