ADC pada Mikrokontroler AVR

Kadangkala dalam perancangan sebuah sistem berbasis mikrokontroler, masukan informasi yang akan diolah tidak selamanya dalam bentuk digital, bahkan lebih sering ditemui dalam bentuk analog. Untuk menjembatani antara mikrokontroler dengan dunia analog, maka sinyal informasi yang berbentuk analog tersebut harus terlebih dahulu dikonversi menjadi digital, sehingga mikrokontroler dapat memanipulasi data tersebut. Untuk mengubah sinyal analog tersebut menjadi digital, maka diperlukan perangkat yang dinamakan ADC (Analog to Digital Conversion).

Dipasaran sendiri terdiri macam2 ADC mulai dari 8 bit dengan kecepatan konversi yang relatif cukup untuk aplikasi2 dasar seperti pembacaan suhu, sampai dengan ADC yang memiliki kecepatan konversi yang cepat, untuk menuntut sistem yang real time. Dalam mikrokontroler AVR pada varian tertentu, seperti pada ATTiny15, ATMega8535,ATMega128 didalamnya terdapat fasilitas ADC sebesar 10 bit. Dengan ADC ini, maka seorang perancang dapat membuat sistem tanpa melakukan tambahan rangkaian eksternal. Dengan demikian maka, sistem hardware yang akan dirancang akan lebih minimalis, dan juga tentunya menghemat energi. ADC pada mikrokontroler AVR menyatu pada port mikrokontroler, sehingga bila kita ingin memanfaatkan fasilitas ADC, maka kita tidak bisa menggunakan port yang bersangkutan untuk port I/O. Untuk mengaktifkan fasilitas ADC, maka kita harus mengeset register2 yang ada pada ADC. Pada mikrokontroler AVR, referensi untuk tegangan ADC dapat dipilih sesuai dengan yang kita inginkan (dengan tegangan referensi maksimum 5 volt). Dengan referensi yang bisa dipilih ini, maka kita bisa mendapatkan data konversi ADC dengan ketelitian yang tinggi. Berikut gambar untuk memilih tegangan referensi yang diinginkan:

Dari gambar kita bisa memilih tegangan referensi yaitu sebesar 2.56 volt yang sudah ada dalam mikrokontroler tersebut atau kita bisa memakai tegangan referensi sesuai keinginan kita melalui pin AREF. Untuk memilih tegangan referensi tersebut, kita mengeset bit REFS1,REFS0 pada register ADLAR. Selain memilih tegangan referensi yang akan dipilih, kita juga bisa memilih pin mana yang akan digunakan sebagai ADC, karena pada mikrokontroler AVR tidak hanya ada 1 pin yang bisa digunakan sebagai ADC. Pada ATMega8535 misalnya, ADC yang tersedia bahkan sampai 8 pin. Untuk jelasnya dapat dilihat pada gambar dibawah:

Untuk memilih ADC yang ingin dipilih, maka kita mengeset bit MUX4…MUX0 pada register ADMUX. Selain mengeset register ADMUX, kita juga perlu untuk mengeset register pada ADCSRA.

ADEN=ADC enable, 1=mengaktifkan ADC

ADSC=ADC Start Conversion, 1= memulai konversi

ADFR=ADC free running, memilih mode ADC, 1=mode free running

ADIF=ADC interrupt flag, 1 ketika terjadi interupsi pada ADC

ADIE= ADC interrupt enable, 1=mengaktifkan interupsi ADC

ADPS2..0=ADC prescaller

Setelah kita mengeset register2 kendali pada ADC, hasil konversi ADC dapat diambil diregister ADCL dan ADCH (2 register). Berikut contoh potongan program untuk mengeset ADC, dan mengambil data hasil konversi pada single mode.

mulaiadc:

Idi r16, ObOllOOOOl ; rreferensi dari AVCC, left adj, channel 1

out ADMUX, r16

Idi r16, ObllOOOlll ; enable, start, single conv, prescaier 128

out ADCSRA, r16

tungguselesai: ; tunggu adc tegangan selesai

sbic ADCSRA, ADSC

rjmp tungguselesai

in r17, ADCH ; ambil data, hanya ADCH, abaikan 2 bit LSB

cbi ADCSRA, 7 ; matikan ADC, untuk menghemat daya

out PORTC, r17 ; tampilkan bit-bit ADCH di LED

rcall tunggu ; tunggu sebentar

rjmp mulaiadc ; aktifkan ADC lagi

tunggu: ; subrutin tunggu

Idi r19, $FF

tunggulagi:

Idi r20, $FF

lagi:

dec r20

brne lagi

dec r19

brne tunggulagi

ret

Tinggalkan komentar