CONVERTER (ADC)
ANALOG TO DIGITAL
CONVERTER
ADC (Analog to Digital Converter) dalam mikrokontroller
berfungsi untuk mengubah atau mengkonversi data
analog ke data digital.
Prinsip dasar karakter ADC
1. Kecepatan sampling ADC adalah seberapa sering
sinyal analog dikonversikan ke bentuk sinyal digital pada
selang waktu tertentu. Kecepatan sampling biasanya
dinyatakan dalam sample per second (SPS).
2. Resolusi ADC menentukan ketelitian nilai hasil
konversi ADC.
Alat dan bahan:
1. CodeVision AVR
2. Proteus Professional :
ATMEGA32
LM016L (LCD)
LM35 (Sensor suhu)
POT-HG (Potensiometer)
OSCILLOSCOPE
GROUND
POWER
RANGKAIAN ADC
MENGGUNAKAN PROTEUS
PROGRAM UNTUK MENGKONVERSI
DATA ANALOG KE DIGITAL
#include <mega32.h>
#include <lcd.h>
#include <delay.h>
#include <stdlib.h>
#asm
.equ __lcd_port=0x15 //PORTC
#endasm
#define ADC_VREF_TYPE 0x40
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;
float suhu;
char temp[8];
void baca_suhu() {
data = read_adc(1);
}
void hitung_suhu() {
suhu = (float)(data)/2;
}
void main(void) {
PORTD.0=1; DDRD.0=1;
ACSR=0x80;
SFIOR=0x00;
ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0x84;
lcd_init(16);
lcd_clear();
lcd_gotoxy(2, 0);
lcd_putsf("Data ADC");
while (1) {
if(suhu <= 20) {
PORTD.0=1;
} else {
PORTD.0=0;
}
baca_suhu();
hitung_suhu();
ftoa(suhu,1,temp);
lcd_gotoxy(0,1);
lcd_puts(temp);
lcd_gotoxy(5,1);
lcd_putchar(0xdf);
lcd_putsf("C");
}
}