Keunggulan utama mikrokontroler keluarga AVR semisal mikrokontroler ATMEGA 8535 dibanding dengan pendahulunya MCS-51 adalah mikrokontroler ATMEGA 8535 ini telah memiliki ADC internal sebesar 10 bit.
Hal diatas menguntungkan karena bila kita ingin mengolah suatu data analog seperti sensor suhu LM 35, sensor kelembaban SHT 11, intensitas cahaya dengan LDR (light dependent resistor) atau dengan photodiode, dll maka kita tidak memerlukan komponen tambahan seperti IC ADC 0804.
Lalu bagaimana cara memprogram ADC pada mikrokontroler ATMEGA 8535, sangat mudah tentunya tergantung dengan bahasa pemrograman yang dikuasai, jika mahir dalam menggunakan bahasa basic maka silahkan gunakan compiler Bascom AVR jika mahir menggunakan bahasa C maka silahkan gunakan compiler codevision AVR. Dalam tulisan kali ini akan digunakan compiler codevision AVR.
Untuk simulasi, silahkan buat rangkaian minimum plus LCD di proteus, seperti dibawah ini.
Lalu buka codevision dan, setting seperti gambar berikut.
Ketikkan program seperti berikut:
-->
#define ADC_VREF_TYPE 0x00
unsigned int read_adc(unsigned char adc_input)
{
ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
delay_us(10);
ADCSRA|=0x40;
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCW;
}
int data_adc;
char data[8];
void main(void)
{
PORTA=0x00;
DDRA=0x00;
PORTB=0x00;
DDRB=0x00;
PORTC=0x00;
DDRC=0x00;
PORTD=0x00;
DDRD=0x00;
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
MCUCR=0x00;
MCUCSR=0x00;
TIMSK=0x00;
ACSR=0x80;
SFIOR=0x00;
ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0x84;
SFIOR&=0xEF;
lcd_init(16);
while (1)
{
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("Data ADC:");
data_adc= read_adc(0);
lcd_gotoxy(0,1);
ftoa(data_adc,1,data);
lcd_puts(data);
delay_ms(500);
};
}
Compile, dan downloadkan ke rangkaian proteus yang telah dibuat dan jalankan program
Semoga bermanfaat
Hal diatas menguntungkan karena bila kita ingin mengolah suatu data analog seperti sensor suhu LM 35, sensor kelembaban SHT 11, intensitas cahaya dengan LDR (light dependent resistor) atau dengan photodiode, dll maka kita tidak memerlukan komponen tambahan seperti IC ADC 0804.
Lalu bagaimana cara memprogram ADC pada mikrokontroler ATMEGA 8535, sangat mudah tentunya tergantung dengan bahasa pemrograman yang dikuasai, jika mahir dalam menggunakan bahasa basic maka silahkan gunakan compiler Bascom AVR jika mahir menggunakan bahasa C maka silahkan gunakan compiler codevision AVR. Dalam tulisan kali ini akan digunakan compiler codevision AVR.
Untuk simulasi, silahkan buat rangkaian minimum plus LCD di proteus, seperti dibawah ini.
Ketikkan program seperti berikut:
-->
#include
#include
#include
#asm
.equ __lcd_port=0x15 ;PORTC
#endasm
#include
unsigned int read_adc(unsigned char adc_input)
{
ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
delay_us(10);
ADCSRA|=0x40;
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCW;
}
int data_adc;
char data[8];
void main(void)
{
PORTA=0x00;
DDRA=0x00;
PORTB=0x00;
DDRB=0x00;
PORTC=0x00;
DDRC=0x00;
PORTD=0x00;
DDRD=0x00;
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
MCUCR=0x00;
MCUCSR=0x00;
TIMSK=0x00;
ACSR=0x80;
SFIOR=0x00;
ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0x84;
SFIOR&=0xEF;
lcd_init(16);
while (1)
{
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("Data ADC:");
data_adc= read_adc(0);
lcd_gotoxy(0,1);
ftoa(data_adc,1,data);
lcd_puts(data);
delay_ms(500);
};
}
Compile, dan downloadkan ke rangkaian proteus yang telah dibuat dan jalankan program
mas bisa bantu membuat sebuah program dengan code vision avr untuk menampilkan selisih data digital hasil konversi ADC mode 8 bit ATMEGA8535
BalasHapusmisal kita Gunakan input channel 2 dan 3 dengan rumus perhitungan channel 2 - channel 3 + 10 (input analog CH2 harus lebih besar dari CH3).
tetapi menggunakan interupsi adc !
dan Tampilan hasil perhitungan menggunakan penampil Led...kebingungan nich..thanks
kalo pake VB tp compilernya codevision bs tdk? ato harus pake bascomm?
BalasHapusgak bisa karena codevision AVR itu compiler mikrokontroler berbasis bahasa C, kalo mau pake bahasa Basic bisa gunain Basic Compiler(BasCom)
BalasHapusmas angka yang ditampilkan di LCD itu sudah dalam bentuk digital atau masih analog?
BalasHapusMas sep nilai digital 10 bit, jadi antara 0 - 1023
BalasHapusmas minta bantuanya, saya kn ingin membuat pengaman rumah gt, jd inputnya dari sensor inframerah erus kemodem yg nantinya akan mengirim sms ke pengguna, apa programnya jg sama seperti ini??
BalasHapusMAS,,saya pakai sensor koin,,output dari snsor koinnya itu berupa pulsa,,programnya dgn basic bgmn ya mas?makasih
BalasHapusinclude nya koq ga ad ktrngannya??
BalasHapusdianggap tag html sepertinya itu mas
Hapusgan jika inputnya photodiode di porta dan outputnya led di port d ,,gimna prodramnya gan ,,mohon bantuannya ??
BalasHapuskalau error yg "ftoa(data_adc,1,data);" itu knp ya mas?
BalasHapuspesan error ny :
Error: coba1.c(105): must declare first in block
-mohon bantuannya-
saya tertarik dengan tulisan anda mengenai elektronika,untuk berbagi pengetahuan
BalasHapuskami juga mempunyaiartikel semacam ini yang bisa anda kunjungi di Klik Disini , terima kasih
gan itu kan buat 1 adc di portA 0...
BalasHapuskalo adc nya lebihg dari satu contoh portA 0, PortA 1, PortA 2 dan seterusnya programnya gimana...? mohon bantuannya...
mas bisa bantu buat scrib penggerak motor servo dengan menggunakan sensor ldr nggak mas
BalasHapusmas bisa bantu buat program sistem kipas otomatis dgn lm35
BalasHapusga bermanfaat, tidak ada penjelasannya, hanya sekedar langkah langkah.
BalasHapus