Penukaran analog ke digital adalah tugas yang sangat penting dalam elektronik tertanam, kerana kebanyakan sensor memberikan output sebagai nilai analog dan untuk memasukkannya ke dalam mikrokontroler yang hanya memahami nilai binari, kita harus mengubahnya menjadi nilai Digital. Oleh itu, untuk dapat memproses data analog, pengawal mikro memerlukan Analog ke Digital Converter.
Beberapa mikrokontroler telah membina ADC seperti Arduino, MSP430, PIC16F877A tetapi sebilangan mikrokontroler tidak memilikinya seperti 8051, Raspberry Pi dll dan kita harus menggunakan beberapa IC penukar analog ke digital seperti ADC0804, ADC0808. Di bawah ini anda dapat menemui pelbagai contoh ADC dengan pengawal mikro yang berbeza:
- Bagaimana Menggunakan ADC di Arduino Uno?
- Tutorial ADP Raspberry Pi
- Memadankan ADC0808 dengan Mikrokontroler 8051
- 0-25V Digital Voltmeter menggunakan AVR Microcontroller
- Cara menggunakan ADC di STM32F103C8
- Cara menggunakan ADC dalam MSP430G2
- Cara menggunakan ADC di ARM7 LPC2148
- Menggunakan Modul ADC Mikrokontroler PIC dengan MPLAB dan XC8
Dalam tutorial ini, kita akan memeriksa bagaimana untuk menghubungkan modul PCF8591 ADC / DAC dengan Arduino.
Komponen yang Diperlukan
- Arduino UNO
- Modul PCF8591 ADC
- Pot 100K
- Kabel Jumper
Modul PCF8591 ADC / DAC
PCF8591 adalah modul penukar analog 8 ke digital atau 8 bit digital ke analog yang bermaksud setiap pin dapat membaca nilai analog hingga 256. Ia juga mempunyai litar LDR dan termistor yang disediakan di papan. Modul ini mempunyai empat input analog dan satu output analog. Ia berfungsi pada komunikasi I 2 C, jadi ada pin SCL dan SDA untuk jam dan alamat data bersiri. Ia memerlukan voltan bekalan 2.5-6V dan mempunyai arus siaga yang rendah. Kita juga boleh memanipulasi voltan masukan dengan menyesuaikan tombol potensiometer pada modul. Terdapat juga tiga penerjun di papan. J4 disambungkan untuk memilih litar akses termistor, J5 disambungkan untuk memilih litar akses LDR / perintang foto dan J6 disambungkan untuk memilih litar akses voltan laras. Untuk mengakses litar ini, anda mesti menggunakan alamat pelompat ini: 0x50 untuk J6, 0x60 untuk J5 dan 0x70 untuk J4. Terdapat dua LED di papan D1 dan D2- D1 menunjukkan intensiti voltan output dan D2 menunjukkan intensiti voltan bekalan. Semakin tinggi output atau voltan bekalan, semakin tinggi intensiti LED D1 atau D2. Anda juga boleh menguji LED ini dengan menggunakan potensiometer pada VCC atau pada pin AOUT.
Memadankan Modul PCF8591 ADC / DAC dengan Arduino
The program dan kerja video lengkap diberikan pada akhir tutorial ini.
Pertama, kita perlu menentukan perpustakaan untuk komunikasi I 2 C dan paparan LCD.
#sertakan
Kemudian tentukan beberapa makro. Makro pertama adalah untuk menentukan alamat data bus untuk IC dan makro kedua adalah untuk menentukan alamat pin input modul pertama, di mana input dari pot diberikan.
#define PCF8591 (0x90 >> 1) #tentukan AIn0 0x00
Seterusnya tentukan sambungan pin LCD dengan Arduino dan mulakan nilai yang kita peroleh pada pin analog.
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2; LiquidCrystal lcd (rs, en, d4, d5, d6, d7); Nilai int = 0;
Sekarang, mari kita ke fungsi persediaan . Di sini, pada baris pertama kami telah memulakan komunikasi I 2 C. Dan pada baris kedua, kami telah memulakan paparan LCD di mana kami mencetak nilai analog. Ketahui lebih lanjut mengenai menghubungkan LCD 16x2 dengan Arduino di sini.
batal persediaan () { Wire.begin (); lcd.begin (16,2); }
Dalam fungsi gelung , baris pertama adalah untuk memulakan transmisi, iaitu memulakan PCF8591. Baris kedua memberitahu IC untuk membuat pengukuran analog pada pin input analog pertama. Baris ketiga mengakhiri penghantaran dan baris keempat mendapat data yang diukur dari pin analog.
gelung kosong () { Wire.beginTransmission (PCF8591); Wire.write (AIn0); Wire.endTransmission (); Wire.requestFrom (PCF8591, 1);
Pada bahagian seterusnya, masukkan nilai yang dibaca dari pin analog ke pemboleh ubah Nilai yang ditentukan sebelumnya. Dan pada baris seterusnya, cetak nilai itu ke LCD.
Nilai = Wire.read (); lcd.print ("Nilai ADC ="); lcd.print (Nilai); kelewatan (500); lcd.clear ();}
Akhirnya muat naik kod di Arduino dan jalankan. Nilai analog akan mula muncul di paparan LCD. Laraskan tombol periuk, dan anda akan melihat perubahan nilai secara beransur-ansur.