ADC adalah pengubah Analog ke Digital, yang mengubah data analog menjadi format digital; biasanya digunakan untuk mengubah tegangan analog menjadi format digital. Sinyal analog tidak memiliki nilai tak terbatas seperti gelombang sinus atau ucapan kita, ADC mengubahnya menjadi level atau status tertentu, yang dapat diukur dalam bilangan sebagai besaran fisik. Alih-alih konversi berkelanjutan, ADC mengubah data secara berkala, yang biasanya dikenal sebagai laju pengambilan sampel. Modem teleponmerupakan salah satu contoh ADC yang digunakan untuk internet, mengubah data analog menjadi data digital, sehingga komputer dapat memahami, karena komputer hanya dapat memahami data digital. Keuntungan utama dari penggunaan ADC adalah, noise dapat dihilangkan secara efisien dari sinyal asli dan sinyal digital dapat berjalan lebih efisien daripada sinyal analog. Itulah alasan audio digital sangat jernih saat didengarkan.
Saat ini ada banyak mikrokontroler di pasaran yang memiliki ADC bawaan dengan satu atau lebih saluran. Dan dengan menggunakan register ADC mereka, kita dapat berinteraksi. Ketika kami memilih keluarga mikrokontroler 8051 untuk membuat proyek apa pun, di mana kami membutuhkan konversi ADC, maka kami menggunakan ADC eksternal. Beberapa chip ADC eksternal adalah 0803.0804.0808.0809 dan masih banyak lagi. Hari ini kita akan menghubungkan ADC 8 channel dengan Mikrokontroler AT89s52 yaitu ADC0808 / 0809.
Komponen:
- Mikrokontroler 8051 (AT89S52)
- ADC0808 / 0809
- LCD 16x2
- Resistor (1k, 10k)
- POT (10k x4)
- Kapasitor (10uf, 1000uf)
- LED merah
- Papan roti atau PCB
- 7805
- Kristal 11.0592 MHz
- Kekuasaan
- Menghubungkan kabel
ADC0808 / 0809:
ADC0808 / 0809 adalah perangkat CMOS monolitik dan logika kontrol yang kompatibel dengan mikroprosesor dan memiliki 28 pin yang memberikan nilai 8-bit pada output dan pin input ADC 8-saluran (IN0-IN7). Resolusinya adalah 8 sehingga dapat menyandikan data analog ke salah satu dari 256 level (2 8). Perangkat ini memiliki tiga baris alamat saluran yaitu: ADDA, ADDB dan ADDC untuk memilih saluran. Di bawah ini adalah Diagram Pin untuk ADC0808:
ADC0808 / 0809 membutuhkan pulsa clock untuk konversi. Kami dapat menyediakannya dengan menggunakan osilator atau dengan menggunakan mikrokontroler. Dalam proyek ini kami menerapkan frekuensi dengan menggunakan mikrokontroler.
Kita dapat memilih saluran input apapun dengan menggunakan baris Alamat, seperti kita dapat memilih baris masukan IN0 dengan menjaga ketiga baris alamat (ADDA, ADDB dan ADDC) Rendah. Jika kita ingin memilih saluran input IN2 maka kita perlu menjaga ADDA, ADDB rendah dan ADDC tinggi. Untuk memilih semua saluran input lainnya, lihat tabel yang diberikan:
Nama Saluran ADC |
ADDC PIN |
TAMBAHKAN PIN |
PIN ADDA |
IN0 |
RENDAH |
RENDAH |
RENDAH |
IN1 |
RENDAH |
RENDAH |
TINGGI |
IN2 |
RENDAH |
TINGGI |
RENDAH |
IN3 |
RENDAH |
TINGGI |
TINGGI |
IN4 |
TINGGI |
RENDAH |
RENDAH |
IN5 |
TINGGI |
RENDAH |
TINGGI |
IN6 |
TINGGI |
TINGGI |
RENDAH |
IN7 |
TINGGI |
TINGGI |
TINGGI |
Deskripsi Sirkuit:
Sirkuit "Interfacing ADC0808 dengan 8051" agak rumit yang berisi lebih banyak kabel penghubung untuk menghubungkan perangkat satu sama lain. Di rangkaian ini kami terutama menggunakan AT89s52 sebagai mikrokontroler 8051, ADC0808, Potensiometer dan LCD.
Sebuah LCD 16x2 dihubungkan dengan mikrokontroler 89s52 dalam mode 4-bit. Pin kontrol RS, RW dan En terhubung langsung ke pin P2.0, GND dan P2.2. Dan data pin D4-D7 dihubungkan ke pin P2.4, P2.5, P2.6 dan P2.7 sebesar 89s52. Pin keluaran ADC0808 terhubung langsung ke port P1 dari AT89s52. Pin baris alamat ADDA, ADDB, AADC terhubung di P3.0, P3.1, dan P3.2.
ALE (Pengunci alamat aktif), SC (Mulai konversi), EOC (Akhir konversi), OE (Pengaktifan keluaran) dan pin jam dihubungkan di P3.3, P3.4, P3.5, P3.6 dan P3.7.
Dan di sini kami telah menggunakan tiga potensiometer yang dihubungkan pada pin 26, 27, dan 28 dari ADC0808.
Baterai 9 volt dan regulator tegangan 5 volt yaitu 7805 digunakan untuk menyalakan rangkaian.
Kerja:
Dalam proyek ini kami telah menghubungkan tiga saluran ADC0808. Dan untuk demonstrasi kami telah menggunakan tiga resistor variabel. Ketika kita menyalakan rangkaian maka mikrokontroler menginisialisasi LCD dengan menggunakan perintah yang sesuai, memberikan clock ke chip ADC, memilih saluran ADC dengan menggunakan baris alamat dan mengirim sinyal konversi awal ke ADC. Setelah ADC ini pertama membaca masukan saluran ADC yang dipilih dan memberikan keluaran yang dikonversi ke mikrokontroler. Kemudian mikrokontroler menunjukkan nilainya pada posisi Ch1 di LCD. Kemudian mikrokontroler mengubah saluran ADC dengan menggunakan baris alamat. Dan kemudian ADC membaca saluran yang dipilih dan mengirimkan keluaran ke mikrokontroler. Dan tampilkan di LCD sebagai nama Ch2. Dan seperti bijak untuk saluran lain.
Cara kerja ADC0808 sangat mirip dengan cara kerja ADC0804. Dalam hal ini, mikrokontroler pertama memberikan sinyal clock 500 KHz ke ADC0808, menggunakan interupsi Timer 0, karena ADC membutuhkan sinyal clock untuk beroperasi. Sekarang mikrokontroler mengirimkan sinyal level RENDAH ke TINGGI ke pin ALE (pin aktif-tinggi) dari ADC0808 untuk mengaktifkan kait di alamat. Kemudian dengan menerapkan sinyal Level TINGGI ke RENDAH ke SC (Mulai Konversi), ADC memulai konversi analog ke digital. Dan kemudian tunggu pin EOC (End of Conversion) menjadi RENDAH. Ketika EOC menjadi RENDAH, itu berarti konversi analog ke digital telah selesai dan data siap digunakan. Setelah ini, mikrokontroler mengaktifkan jalur output dengan menerapkan sinyal HIGH ke LOW ke pin OE ADC0808.
ADC0808 memberikan keluaran konversi metrik rasio pada pin keluarannya. Dan rumus untuk konversi radiometrik diberikan oleh:
V dalam / (V fs -V z) = D x / (D maks -D menit)
Dimana
V in adalah tegangan input untuk konversi
V fs adalah skala penuh Tegangan
V z adalah tegangan nol
D x adalah titik data yang diukur
D max adalah Batas data maksimum
D min adalah Batas data minimum
Penjelasan Program:
Dalam program ini, pertama-tama kami menyertakan file header, pasir mendefinisikan variabel dan pin input & output untuk ADC dan LCD.
# termasuk
Fungsi untuk membuat delay telah dibuat (void delay), bersama dengan beberapa fungsi LCD seperti inisialisasi LCD, pencetakan string, untuk perintah LCD dll. Anda dapat dengan mudah menemukannya di Code. Periksa artikel ini untuk antarmuka LCD dengan 8051 dan fungsinya.
Setelah ini di program utama kami telah menginisialisasi LCD dan mengatur pin EOC, ALE, EO, SC sesuai.
void main () {int i = 0; eoc = 1; bir putih = 0; oe = 0; sc = 0; TMOD = 0x02; TH0 = 0xFD; lcd_ini (); lcdprint ("ADC 0808/0809");
Dan kemudian program membaca ADC dan menyimpan output ADC dalam variabel dan kemudian mengirimkannya ke LCD setelah desimal ke konversi ASCII, menggunakan fungsi void read_adc () dan void adc (int i):
batal read_adc () {number = 0; bir putih = 1; sc = 1; penundaan (1); bir putih = 0; sc = 0; sementara (eoc == 1); sementara (eoc == 0); oe = 1; number = input_port; penundaan (1); oe = 0; } void adc (int i) {switch (i) {case 0: ADDC = 0; ADDB = 0; ADDA = 0; lcdcmd (0xc0); read_adc ();