Selasa, 16 Agustus 2011

Memprogram ADC Mikrokontroler ATMEGA 8535 dengan Codevision AVR

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.

Memprogram ADC Mikrokontroler ATMEGA 8535 dengan Codevision AVR

Lalu buka codevision dan, setting seperti gambar berikut.

Memprogram ADC Mikrokontroler ATMEGA 8535 dengan Codevision AVR Memprogram ADC Mikrokontroler ATMEGA 8535 dengan Codevision AVR


Ketikkan program seperti berikut:
-->
#include      
#include
#include

#asm
   .equ __lcd_port=0x15 ;PORTC
#endasm
#include

#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

Memprogram ADC Mikrokontroler ATMEGA 8535 dengan Codevision AVR


Semoga bermanfaat

16 komentar:

  1. mas bisa bantu membuat sebuah program dengan code vision avr untuk menampilkan selisih data digital hasil konversi ADC mode 8 bit ATMEGA8535

    misal 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

    BalasHapus
  2. kalo pake VB tp compilernya codevision bs tdk? ato harus pake bascomm?

    BalasHapus
  3. gak bisa karena codevision AVR itu compiler mikrokontroler berbasis bahasa C, kalo mau pake bahasa Basic bisa gunain Basic Compiler(BasCom)

    BalasHapus
  4. mas angka yang ditampilkan di LCD itu sudah dalam bentuk digital atau masih analog?

    BalasHapus
  5. Mas sep nilai digital 10 bit, jadi antara 0 - 1023

    BalasHapus
  6. mas 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??

    BalasHapus
  7. MAS,,saya pakai sensor koin,,output dari snsor koinnya itu berupa pulsa,,programnya dgn basic bgmn ya mas?makasih

    BalasHapus
  8. include nya koq ga ad ktrngannya??

    BalasHapus
  9. gan jika inputnya photodiode di porta dan outputnya led di port d ,,gimna prodramnya gan ,,mohon bantuannya ??

    BalasHapus
  10. kalau error yg "ftoa(data_adc,1,data);" itu knp ya mas?
    pesan error ny :
    Error: coba1.c(105): must declare first in block
    -mohon bantuannya-

    BalasHapus
  11. saya tertarik dengan tulisan anda mengenai elektronika,untuk berbagi pengetahuan
    kami juga mempunyaiartikel semacam ini yang bisa anda kunjungi di Klik Disini , terima kasih

    BalasHapus
  12. gan itu kan buat 1 adc di portA 0...
    kalo adc nya lebihg dari satu contoh portA 0, PortA 1, PortA 2 dan seterusnya programnya gimana...? mohon bantuannya...

    BalasHapus
  13. mas bisa bantu buat scrib penggerak motor servo dengan menggunakan sensor ldr nggak mas

    BalasHapus
  14. mas bisa bantu buat program sistem kipas otomatis dgn lm35

    BalasHapus
  15. ga bermanfaat, tidak ada penjelasannya, hanya sekedar langkah langkah.

    BalasHapus

Silahkan tinggalkan komentar...