Menghubungkan MCS51 Ke Dunia Analog

Monday, September 25th, 2023 - Teori Mikrokontroler

Menghubungkan MCS51 Ke Dunia Analog

Dunia di luar mikrokontroler tidak semuanya hitam atau putih (nol atau satu), tapi justru lebih banyak tingkatan warna kelabu (nilai antara nol dan satu). Dengan demikian sering kali mikrokontroler harus berhubungan dengan dunia Analog, baik menerima tegangan Analog dari luar, maupun mengeluarkan tegangan Analog.

Dalam dunia elektronika dikenal dua jenis rangkaian untuk menjembatani dunia Analog ke Digital, jenis pertama dikenal sebagai rangkaian konversi besaran digital ke analog (Digital Analog Converter – disingkat sebagai DAC), yang kedua adalah rangkaian konversi besaran analog ke digital (Analog Digital Converter – disingkat sebagai ADC).

Dua jenis rangkaian di atas dipakai cukup luas, pabrik pembuat IC banyak membuat berbagai jenis IC ADC maupun DAC, sehingga untuk menghubungkan mikrokontroler ke dunia Analog cukup memilih salah satu chip yang sesuai dengan kebutuhan, tidak perlu repor-repot merangkai sendiri.

Ketelitian DAC dan ADC tergantung pada berapa bit sinyal digital yang diharapkan, yang paling umum dipakai 8 bit sinyal digital. Dengan 8 bit sinyal digital sebuah DAC bisa membangkitkan tegangan dengan 256 tingkatan, misalkan tegangan maksimum yang bisa dibangkitkan sebesar 2,55 Volt, maka DAC ini bisa membangkitkan tegangan 0 sampai 2.55 Volt dengan tingkatan 0,01 Volt, artinya input biner bernilai $01 pada input DAC akan membangkitkan tegangan output 0,01 Volt, biner $02 membangkitkan 0,02 Volt dan seterusnya biner $FF (255) menghasilkan 2,55 Volt. Sebaliknya, tegangan 0 sampai 2,55 Volt akan di-skala oleh ADC menjadi besaran digital $00 sampai $FF (255).

IC DAC yang banyak dipakai dan mudah dijumpai di pasar Indonesia adalah DAC0800 / DAC0801 / DAC0802 8-Bit Digital-to-Analog Converters, sedangkan ADC yang banyak dipakai adalah ADC0801 / ADC0802 / ADC0803 / ADC0804 / ADC0805 8-Bit Microprocessor Compatible A/D Converters, keduanya buatan National Semiconductor.

Di luar IC ADC tersebut di atas, dikenal pula IC ADC dengan rangcangan khusus, yang sudah dilengkapi untuk keperluan membangun Digital Volt Meter, misalnya ICL7106/ICL7107 3 1/2-Digit A/D Converter produksi Maxim. IC semacam ini sesungguhnya merupakan ADC biasa yang dilengkapi dengan rangkaian untuk menampilkan tegangan yang diukur, keteletiannya lebih besar dari ADC 8 bit, bisa dipakai untuk mengukur tegangan 0 sampai 1,999 (hampir 11 bit).

Menghubungkan MCS51 Dengan DAC0800

Gambar 1 memperlihatkan mikrokontroler AT89Cx051 yang dihubungkan ke DAC0800 buatan National Semiconductor, kapasitor C1, C2 dan Xtal 12 MHz membentuk rangkaian osilator, kapasitor C3 dan resistor R1 membentuk rangkaian reset.

Besaran digital diumpankan ke B1 sampai B7 (kaki 5 sampai 12) IC DAC0800, bobot biner dari besaran digital ini dirubah menjadi besaran analog berupa arus pada IOUT (kaki 4 DAC0800) dan IOUT* (kaki 2 DAC0800), oleh IC Operational Amplifier LM741 arus tersebut dirubah menjadi tegangan.

Tegangan yang dihasilkan dinyatakan dengan rumus yang tertera pada Gambar 1, selain tergantung pada bobot besaran digital yang diumpankan, tegangan ini tergantung pula pada besarnya Vref (kaki 14 DAC0800). C3 yang dipasang pada kaki 16 dan ground berguna untuk menstabilkan tegangan yang dihasilkan.

DAC0800 dan LM741 memakai sumber tegangan +12 Volt dan –12 Volt, ini agak berbeda dengan tegangan yang biasa dipakai untuk rangkaian digital, agar sinyal digital bisa diterima IC DAC0800 dengan baik, DAC0800 dilengkapi kaki VLC (kaki nomor 1) untuk menyesesuaikan level tegangan berbagai jenis IC digital. Dalam data sheet DAC0800 diperlihatkan berbagai rangkaian yang harus dipasang pada kaki ini agar DAC0800 bisa dipakai untuk berbagai keluarga IC digital.

Dalam rangkaian Gambar 1, DAC0800 dihubungkan ke keluarga mikrokontroler MCS51 yang bekerja pada level tegangan TTL, untuk keperluan ini kaki VLC dihubungkan ke ground.

Hubungan AT89Cx051 dengan DAC0800,Menghubungkan MCS51 ke dunia Analog

Gambar 1. Hubungan AT89Cx051 dengan DAC0800

Di balik kaki-kaki B1 sampai B8 IC DAC0800 tidak dilengkapi latch untuk menampung besaran digital yang diumpankan, perubahan kombinasi sinyal digital pada kaki-kaki ini langsung mengakibatkan perubahan tegangan output. Konstruksi input DAC0800 semacam ini, mengakibatkan DAC0800 tidak bisa dihubungkan langsung ke saluran-data (data bus) sistem mikroprosesor, hubungan DAC0800 ke prosesor harus melalui port paralel.

Dalam Gambar 1, DAC0800 dihubungkan ke port paralel P1 dari AT89Cx051. Menghubungkan DAC0800 ke keluarga MCS51 yang lain, misalnya AT89C51, bisa lewat port parelel P0, P1, P2 ataupun P3, tergantung pada kondisi rangkaian yang dibentuk.

Instruksi untuk mengeluarkan tegangan pada rangkaian Gambar 1 sangat sederhana, cukup mamakai instruksi MOV P1,A dengan pengertian besaran analog yang ingin dibangkitkan sebelumnya sudah disimpan pada Akumulator A.

Menghubungkan MCS51 Dengan ADC0804

Gambar 2 menggambarkan ADC0804 yang dihubungkan ke AT89C51, lengkap dengan rangkaian osilator yang dibentuk dengan C1, C2 dan kristal 12 MHz, dan rangkaian reset yang dibentuk dengan C3 dan R1. Catu Daya untuk ADC0804 merupakan catu daya standar bagi rangkaian digital, yakni +5 Volt.

ADC0804 memerlukan sinyal denyut untuk bekerja, sinyal denyut ini bisa diumpan dari luar ADC0804, tapi bisa bisa pula dibangkitkan sendiri oleh ADC0804. Dalam Gambar 2 rangkaian denyut tersebut dibangkitkan lewat bantuan resistor R2 (terhubung pada kaki 19 dan 4) dan kapasitor C4 (terhubung antara kaki 19 dan ground).

Waktu yang diperlukan konversi tegangan analog menjadi besaran digital, sekitar 64 periode dari sinyal denyut di atas, dengan demikian makin tinggi frekuensi sinyal denyut tadi makin cepat pula waktu konversi. Frekuensi sinyal denyut tersebut tidak boleh lebih dari 1460 KHz, dan umumnya cukup dipakai 640 KHz.

Berlainan dengan DAC0800, ADC0804 adalah IC yang siap dihubungkan ke saluran-data sistem mikroprosesor, sehingga rangkaian dalam Gambar 2 ADC0804 dihubungkan lewat P0 yang difungsikan sebagai saluran-data.

Untuk keperluan ini sinyal-sinyal pengendali ADC0804 dipilih sinyal WR* (kaki 16 AT89C51) yang dihubungkan ke WR* (kaki 3 ADC0804), sinyal RD* (kaki 17 AT89C51) yang dihubungkan ke RD* (kaki 2 ADC0804). Sinyal WR* dan RD* dari AT89C51 merupakan sinyal pengendali saluran-data, yang dipakai saat AT89C51 bekerja dengan memori-data ekternal.

Sinyal INTR* (kaki 5 ADC0804) dihubungkan ke INT0* (kaki 12 AT89C51), dipakai untuk memberitahu AT89C51 saat ADC0804 sudah selesai konversi data analog.

Hubungan AT89C51 dengan ADC0804,menghubungkan mcs51 ke dunia analog,menghubungkan mcs51,menghubungkan mcs51 dengan dac,menghubungkan mcs51 dengan adc,cara menggunakan dac dengan mikrokontroler,cara menghubungkan adc ke mikrokontroler,program baca dac dengan mikrokontroler,program baca adc dengan mikrokontroler,konfigurasi mikrokontroler dan dac,konfigurasi adc dengan mikrokontroler

Gambar 2. Hubungan AT89C51 dengan ADC0804

Dalam rangkaian Gambar 2, ADC0804 menunggu perintah dari AT89C51 untuk mulai melakukan konversi tegangan analog, perintah ini berupa perubahan tegangan dari ‘1’ menjadi ‘0’ pada WR* (kaki 3 ADC0809). Hal ini dilakukan dengan instruksi MOVX @R0,A, yakni perintah menuliskan data ke memori-data eksternal yang di-sinkron-kan dengan sinyal WR* (kaki 16 AT89C51) menjadi ‘0’ sesaat.

Setelah menerima perintah tersebut, ADC0804 mulai melakukan konversi yang memerlukan waktu sekitar 64 periode sinyal denyut pada kaki CLK (kaki 4 ADC0804). Selesai konversi, ADC0804 me-‘nol’-kan INTR* (kaki 5 ADC0804), sinyal ini diterima AT89C51 lewat INT0* (kaki 12 AT89C51). AT89C51 menunggu sinyal INTR* dari ADC0804 dengan instruksi JB INT0,$.

Berikutnya AT89C51 mengambil data hasil konversi ADC0904 dengan intruksi MOVX A,@R0. Instruksi ini merupakan instruksi untuk mengambil data dari memori-data ekternal, dalam melaksanakan instruksi ini MCS51 membuat RD* (kaki 17 AT89C51) sesaat menjadi ‘0’, sinyal ini diterima ADC0804 lewat kaki 2 yang mengakibatkan penyangga (tristate buffer) pada DB0 .. DB7 (kaki 18 sampai 11 ADC0804) mem-‘buka’, sehingga data hasil konversi ADC0804 bisa diambil AT89C51 lewat P0.0 .. P0.7.

Dalam pembahasan di atas, R0 hanya sekedar dipinjam untuk melaksanakan instruksi-instruksi memori-data ekternal, MOVX A,@R0 maupun MOVX @R0,A, nilai dari R0 tidak berpengaruh, mengingat dalam rangkaian Gambar 2 pada saluran-data hanya dipasang ADC0804 saja, tidak ada peralatan digital lainnya.

Program pendek untuk melakukan hal hal tersebut di atas, dengan demikian bisa dituliskan sebagai berikut :

01: ReadADC0804:
02:    MOVX  @R0,A
03:    JB    INT0,*
04:    MOVX  A,@R0
05:    RET

Semoga informasi tentang tata cara menghubungkan MCS51 ke dunia analog diatas mudah dipahami.

Title : Menghubungkan MCS51 Ke Dunia Analog
Archive : Teori Mikrokontroler

You may also like, related Menghubungkan MCS51 Ke Dunia Analog