ANALOG to DIGITAL CONVERTER (ADC) Oleh SGO Aplikasi Mikrokontroler (DTG2K3)
Blok Diagram ADC di AVR
Fitur Resolusi sampai 10 bit Akurasi mencapai ± 2 LSB Waktu konversi 13-260 mikro detik 8 saluran ADC yang dapat digunakan secara bergantian 0-Vcc Range Input ADC Disediakan 2,56 Volt tegangan referensi internal ADC Noise Canceler Digunakan untuk mengurangi derau / noise dari CPU dan modul-modul internal lainnya
Konversi ADC Sinyal input ADC tidak boleh melebihi tegangan referensi. Nilai digital sinyal input ADC untuk resolusi 10 bit (1024) adalah : kode digital = (Vinput/Vref) x 1024 untuk resolusi 8 bit (256) adalah : kode digital = (Vinput/Vref) x 256
REGISTER PENGENDALI ADC ADC Multiplexer Selection Register – ADMUX Bit 7:6 – REFS1:0 Reference Selection Bits REFS1 REFS0 Tegangan Referensi AREF, Internal Vref dimatikan (off) 1 Avcc, dengan kapasitor eksternal pada pin AREF Tidak digunakan Tegangan refensi internal 2,56 V dengan kapasitor eksternal pada pin AREF
Bit 5—ADLAR : ADC left Adjust Result Bit ini berakibat pada format data hasil konversi dalam register ADCH:ADCL Bit 3:0—MUX3:0 Analog Channel selection Bits. MUX3..0 Pin Input 0000 ADC0 0001 ADC1 0010 ADC2 0011 ADC3 0100 ADC4 0101 ADC5 0110 ADC6 0111 ADC7
Register Pengendali ADC 2. ADC Control and Status Register A—ADCSRA Bit 7—ADEN:ADC Enable Bit pengaktif ADC (ADEN=0, disable/ADEN=1 enable) Bit 6 –ADSC : ADC Start Conversion Untuk memulai awal konversi, bit ini di set “1”
Bit5—ADFR:ADC Free Running Select Jika bit ini di set maka mode konversinya free running artinya ADC akan terus-menerus melakukan konversi. Bit4—ADIF:ADC Interupt Flag Akan set otomatis ketika konversi ADC telah selesai. Bit3—ADIE : ADC Interupt Enable Mengaktifkan interupsi ADC (0=disable/1=enable) Bit2:0—ADPS2:0ADC Prescaler Select Bits Menentukan faktor pembagi frekuensi CPU yang digunakan untuk clock ADC
ADC Prescaler ADPS2 Faktor Pembagi 2 1 4 8 16 32 64 128
Register Pengendali ADC 3. The ADC Data Register – ADCL dan ADCH ADLAR=0
ADLAR=1 Jika kita menghendaki resolusi yang digunakan menjadi 8 bit maka gunakan ADLAR=1, dan yang dibaca hanya register ADCH saja. Kalau 10 bit gunakan ADCW.
Contoh Insialisasi ADC ADMUX= (0<<REFS1) | (0<<REFS0) //pilih tegangan referensi |(0<<ADLAR) // pilih resolusi |(0<<MUX3)|(0<<MUX2)|(0<<MUX1)|(0<<MUX0); // pilih saluran yang dipakai ADCSRA= (0<<ADEN) // aktif-nonaktifkan ADC |(0<<ADFR) // pilih mode |(0<<ADIE) // aktif-nonaktifkan Interupsi ADC |(0<<ADPS2)|(0<<ADPS1)|(0<<ADPS0); //pilih prescaler waktu konversi Untuk membaca ADC langsung Data=ADCH;