Home / Mikrokontroler / AVR / Analog To Digital Converter Pada Mikrokontroler AVR

Analog To Digital Converter Pada Mikrokontroler AVR

Analog To Digital Converter Mikrokontroler AVR

Pada bagian ini kita akan belajar mengakses salah satu fitur dari mikrokontroler AVR yaitu ADC (Analog to Digital Converter). ADC merupakan salah satu fitur yang dapat digunakan untuk menerima masukan tegangan analog. Pada AVR mikrokontroler, besarnya resolusi ADC adalah 10 bit, namun kita juga bisa menggunakan resolusi 8 bit. Resolusi 10 bit artinya kita dapat membaca input tegangan analog dari 0 – Vref dengan nilai desimal dari 0 – 1023. Vref sendiri nilainya sebesar 0 – 5 volt, dan masukan Vref dapat kita pilih dari external (pin aref), 5V, atau internal.

Pada tahap ini kita akan mencoba menampilkan data hasil pembacaan ADC 8 bit pada 8 buah led yang berada pada PORTB. LED tersebut nantinya akan menampilkan nilai biner dari pembacaan ADC. Untuk mencoba program, saya menggunakan PROTEUS sebagai software simulasi. Berikut Rangkaiannya.

Analog To Digital Converter AVR ATMega8535
Analog To Digital Converter AVR ATMega8535

 

Pastikan pin AVCC diberi tegangan 5 volt pada saat ingin menggunakan ADC. Pin ini merupakan masukan tegangan supply untuk ADC.  Selanjutnya pengaturan pada mikrokontroler ATMega8535 dapat dilihat pada gambar di bawah ini. Frekuensi clock yang digunakan adalah 16MHz (external crystal)

Analog To Digital Converter AVR ATMega8535
Analog To Digital Converter AVR ATMega8535

 

Selanjutnya kita akan melakukan pemograman. Buat project baru pada CodeVisionAVR, selanjutnya gunakan code wizard seperti biasa. Adapun beberapa pengaturan yang dilakukan adalah sebagai berikut.

1. Pemilihan Chip & Frekuensi Clock

Sesuaikan dengan tipe mikrokontroler dan frekuensi clock yang digunakan. Karena kita menggunakan ATMega8535 dan clock sebesar 16MHz, maka pengaturan pada bagian chip adalah seperti di bawah ini.

Analog To Digital Converter AVR ATMega8535
Analog To Digital Converter AVR ATMega8535

 

2. Konfigurasi ADC

Beri centang tab ADC Enabled untuk dapat mengaktifkan ADC. Karena kita menggunakan resolusi sebesar 8 bit, maka pada bagian Use 8 bits harus diaktifkan. Untuk pemilihan tegangan referensi (Vref), pilih AVCC pin (5V).

Analog To Digital Converter AVR ATMega8535
Analog To Digital Converter AVR ATMega8535

 

3. Konfigurasi PORT output (LED)

Karena 8 buah LED kita hubungkan pada PORTB, maka kita harus mengkonfigurasi PORTB agar dapat berfungsi sebagai output (keluaran). Konfigurasinya sebagai berikut.

Analog To Digital Converter AVR ATMega8535
Analog To Digital Converter AVR ATMega8535

 

Pengaturan konfigurasi register telah selesai, selanjutnya kita dapat membuat program utama. Program ini akan membaca input analog pada pin ADCO, selanjutnya nilai digitalnya akan ditampilkan pada LED yang berada pada PORTB secara biner. Sintak program dapat dilihat di bawah ini.

Program Analog To Digital Converter Pada Mikrokontroler AVR

#define ADC_VREF_TYPE 0x60

// Read the 8 most significant bits
// of the AD conversion result
unsigned char read_adc(unsigned char adc_input)
{
ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
// Delay needed for the stabilization of the ADC input voltage
delay_us(10);
// Start the AD conversion
ADCSRA|=0x40;
// Wait for the AD conversion to complete
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCH;
}

// Declare your global variables here

void main(void)
{

PORTB=0x00;
DDRB=0xFF;

// ADC initialization
// ADC Clock frequency: 1000.000 kHz
// ADC Voltage Reference: AVCC pin
// ADC High Speed Mode: Off
// ADC Auto Trigger Source: ADC Stopped
// Only the 8 most significant bits of
// the AD conversion result are used
ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0x84;
SFIOR&=0xEF;

while (1)
{
PORTB = read_adc(0);
}
}

Sekian tutorial tentang Analog To Digital Converter pada mikrokontroler AVR, semoga tulisan ini dapat menambah pengetahuan Anda di bidang mikrokontroler

About Eko Rudiawan

Seorang lelaki yang punya ketertarikan dengan dunia elektronika dan robot yang saat ini sedang serius belajar tentang dunia bisnis dan internet marketing. My dream to be success technopreneur

Check Also

PCB Downloader Mikrokontroler AVR USBasp

Membuat Rangkaian Downloader Mikrokontroler AVR USBasp

Apa Itu Rangkaian Downloader Mikrokontroler? Downloader atau programmer dalam dunia mikrokontroler dikenal sebagai alat yang …

34 comments

  1. mas… bisa ajarin saya pembacaan 3 sensor lm35 dan dikirim melalui wirelless…
    agungwicaks@gmail.com

  2. mas tau caranya baca adc kl input bit adc nya lbih dari 8 bit ga? kan port adc yg disediain cm 8 port mas(PA.0-PA.7).

  3. Mas mau nanya dong
    Gimana bahasa C buat komunikasi serial dari atmega8 ke max232
    trus datanya di olah menggunakan J2ME pada hp dengan interface kabel data usb
    Itu bisa g mas?
    Makasih

  4. mas kenapa program di proteus temperaturnya tidak berubah (pada lcd) padahal input pada adc sudah dirubah2..

  5. kalau arti dari PORTB = 0b 1111000
    trus sama delay_(1000)
    itu apa?

  6. knp clock pada pemilihan ADC nya harus tinggi tdk pakai 750 saja?
    terima kasih

  7. kalau saya pakai cristalnya 16 apakah sampling ADCnya jauh lbh cpt dr cristal 12MHz ?

    mohon pencerahannya.

  8. mas nanya misalnya teganganny 12volt berrati itu sangat mempengaruhi

  9. mksh mas ya mas….
    sangat membantu,,,,,

  10. Mas, saya kn mw nampilin nilai keluaran tegangan sensor cahaya ke LCD…
    tpi kok gx stabil yh…
    Padahal semua catu daya udh d cek, mantap keluarannya…

    Mohon pencerahanny mas…
    Makasih…

  11. Mas, salam kenal saya Regie,mau tanya kalo menggunakan 2 LM35 dan hasil pengukuranya ditampilkan pada 1 lcd,artinya kita mengaktifkan 2 adc, bisa kasih contoh listing programnya dengan bahasa C mas ? terimakasih.

  12. mas, mau tanya.
    1. kita kan make ADC0, kalo mau pake selain ADC0 gimana?
    2. kita mau nambahin sensor lain juga, multiplexingnya gimana?

  13. mas mau nanya mas…
    saya mau bikin data akuisisi yang nantinya dari sensor untuk mendeteksi capasitansi benda trus mau danhasil datanya mau diubah ke ADC dan ditampilkan ke komputer menggunakan kominikasi serial… caranya dan programnya gmn ya mas? saya menggunakan ATmega 8535

  14. mas biar arduinonya bisa terima perintah dan kirim perintah ke java netbean gimana ya caranya?

  15. sallam mas eko.
    ijin tanya, bagai mana cara setting adc utk sensor LDR dengan prinsip jika sensor LDR membaca cahaya, maka led akan ON dan sebaliknya.
    mohon buantuannya.
    Trimakasih sblm n sesudah.

  16. bisa menggunakan if-else saja, membandingkan data adc yg dibaca contoh
    if(read_adc(0)>500) {
    PORTA.0=1 // Lampu On
    }
    else{
    PORTA.0=0 // Lampu Off
    }

  17. Maksud angka >500 diatas itu apa ya?

  18. mas mau nanya tau ngak dimana ada jual color barcode scenner? makasih mas

  19. bang itu dekat pin adc0 simbol apa ya di proteus ?

Leave a Reply

Your email address will not be published. Required fields are marked *

4 × three =