Tutorial Analog to Digital Converter(ADC) dengan tampilan LED
- ADC penampil LED <halaman ini>
- ADC penampil LCD
- ADC penampil LCD 10bit rev AVCC pin
Analog to Digital Converter(ADC) sebagaimana artinya adalah untuk mengubah data analog menjadi data digital. Kata sederhananya, sebuah voltmeter digital yang membaca tegangan dari battery kemudian ditampilkan berupa angka. Jadi dengan mikrokontroler dengan ADC bisa diprogram menjadi semacam voltmeter digital. Tidak sebatas voltmeter digital, karena banyak komponen elektronika juga menghasilkan atau mengeluarkan data tegangan analog yang kemudian dibaca mikrokontroler melalui ADC.

Program:
/* * adc.c * Created: 08/05/2017 19:47:36 * Author: avr.easyelektro.com */ #include <io.h> #include <delay.h> // Voltage Reference: AREF pin #define ADC_VREF_TYPE ((0<<REFS1) | (0<<REFS0) | (1<<ADLAR)) char a; unsigned char read_adc(unsigned char adc_input) { ADMUX=adc_input | ADC_VREF_TYPE; // Delay needed for the stabilization of the ADC input voltage delay_us(10); // Start the AD conversion ADCSRA|=(1<<ADSC); // Wait for the AD conversion to complete while ((ADCSRA & (1<<ADIF))==0); ADCSRA|=(1<<ADIF); return ADCH; } void main(void) { PORTC=0xFF; DDRC=0xFF; DDRD=0xff; ADMUX=ADC_VREF_TYPE; ADCSRA=0b10000110; SFIOR=0b000; a=2; while (1) { a=read_adc(0); if (a<=75) {PORTC=0;} if (a>=76) {PORTC=0b10000000;} if (a>=102){PORTC=0b01000000;} if (a>=127){PORTC=0b00100000;} if (a>=153){PORTC=0b00010000;} if (a>=178){PORTC=0b00001000;} if (a>=204){PORTC=0b00000100;} if (a>=230){PORTC=0b00000010;} if (a>=255){PORTC=0b00000001;} PORTD=a; delay_ms(300); } }
di atas contoh program sederhana dari ADC mikrokontroler yang digunakan untuk mengukur tegangan battery. LED diberi label dengan tegangan 1.5 Volt sampai 5 Volt membaca tegangan yang diterima PORTA.0 kemudian menyalakan LED yang sesuai dengan indikator.
Pembahasan:
- PORTA=ADC
Selain PORTA dapat digunakan sebagai port input/output, PORTA ini dapat difungsikan sebagai ADC. Semua PORTA dapat digunakan sebagai ADC(ADC0-ADC7). ADC dapat digunakan satu buah saja ataupun secara bersamaan. contoh di atas adc yang digunakan pada PORTA.0(ADC0) maka untuk membaca ADC programnya adalah:
a=read_adc(0);
jika menggunakan PORT lain penulisannya bisa
a=read_adc(1);
a=read_adc(2);
a=read_adc(3);
… dan seterusnya
Hasil pembacaan ADC adalah 0-255. Bernilai 0 jika ADC membaca tegangan 0Volt(nol/gnd), bernilai 255 jika ADC membaca tegangan 5Volt(tegangan yang sama dengan AREV).
- AREV
AREF = Analog REFerence (tegangan analok referensi). digunakan sebagai referensi tegangan maksimal pada ADC. jika AREF diberi tegangan 3V kemudian PORTA.0 diberi tegangan 3V juga, maka hasil ADC akan menghasilkan angka 255(max)
- program lain
if (a<=75) {PORTC=0;} if (a>=76) {PORTC=0b10000000;} if (a>=102){PORTC=0b01000000;} if (a>=127){PORTC=0b00100000;} if (a>=153){PORTC=0b00010000;} if (a>=178){PORTC=0b00001000;} if (a>=204){PORTC=0b00000100;} if (a>=230){PORTC=0b00000010;} if (a>=255){PORTC=0b00000001;}
75; 76; 102; 127; 153; 178; 204; 230; 255 (ADC)
1.47; 1.5; 2; 2.5; 3; 3.5; 4; 4.5; 5 (analog Voltage)
Deretan angka di atas adalah perkiraan hasil ADC, bila tegangan 1.47 Volt hasil ADC adalah 75, bila 1.5 Volt hasil ADC adalah 76 dan seterusnya hingga 5 Volt adalah 255. Tentu saja deretan angka perkiraan angka ini bila AREF=5V.
Selain menggunakan Battery sebagai percobaan ADC, untuk lebih praktis juga bisa menggunakan potensio untuk menghasilkan tegangan yang dapat diubah ubah. Gambar skema bisa dilihat seperti di bawah ini.