AVR Application Note By Hendawan Soebhakti Created on 19/11/2008 19:17:00 Page 1 of 3
Analog-to-Digital Converter Atmega8535 ATmega8535 menyediakan fasilitas ADC dengan resolusi 10 bit. ADC ini dihubungkan dengan 8 channel Analog Multiplexer yang memungkinkan terbentuk 8 input tegangan single- ended yang masuk melalui pin pada PortA. ADC memiliki pin supply tegangan analog yang terpisah yaitu AVCC. Besarnya tegangan AVCC adalah ±0.3V dari VCC. Tegangan referensi ADC dapat dipilih menggunakan tegangan referensi internal maupun eksternal. Jika menggunakan tegangan referensi internal, bisa dipilih on-chip internal reference voltage yaitu sebesar 2.56V atau sebesar AVCC. Jika menggunakan tegangan referensi eksternal, dapat dihubungkan melalui pin AREF. ADC mengkonversi tegangan input analog menjadi data digital 8 bit atau 10 bit. Data digital tersebut akan disimpan didalam ADC Data Register yaitu ADCH dan ADCL. Sekali ADCL dibaca, maka akses ke data register tidak bisa dilakukan. Dan ketika ADCH dibaca, maka akses ke data register kembali enable. Aplikasi 1. ADC 8 Bit, Tegangan Referensi adalah AVCC. Pada aplikasi ini mikrokontroler akan membaca tegangan analog pada input ADC0 dan menampilkan data hasil konversinya ke PORTC. Tegangan referensi ADC sama dengan AVCC.
+5V
+5V
+5V
Analog Input 0Analog Input 1Analog Input 2Analog Input 3Analog Input 4Analog Input 5Analog Input 6Analog Input 7
MISOSCK
MOSI
MISOMOSI
RESET
GNDVCC
SCK
S1
33pF
LED
10uF/16V
U1
ATmega8535
PB.2 (INT2/AIN0)3
XTAL113 XTAL212
RESET9
VCC10
GND11
PB.6 (MISO)7
PB.7 (SCK)8
PD.0 (RXD)14
PD.1 (TXD)15
PD.2 (INT2)16
PD.3 (INT1)17
PD.4 (OC1B)18
PD.5 (OC1A)19
PD.6 (ICP1)20
(OC2) PD.721
(ADC0) PA.040
(ADC1) PA.139
(ADC2) PA.238
(ADC3) PA.337
(ADC4) PA.436
(ADC5) PA.535
(ADC6) PA.634
(ADC7) PA.733
(TOSC2) PC.729
(TOSC1) PC.628
PC.527
PC.426
PC.325
PC.224
(SDA) PC.123
(SCL) PC.022
AREF32
GND31
AVCC30
PB.5 (MOSI)6 PB.4 (SS)5 PB.3 (OC0/AIN1)4
PB.1 (T1)2 PB.0 (XCK/T0)1
XTAL
11.0592 MHz
220
10K
33pF
SPI PORT
123456
Gambar 1 Rangkaian Aplikasi ADC Dengan Tegangan Referensi AVCC Jika resolusi dipilih sebesar 8 bit, maka data digital akan disimpan pada ADCH. Berikut adalah langkah percobaannya : 1. Pastikan pin AVCC terhubung ke VCC yaitu +5V. 2. Lakukan setting codewizard sebagai berikut :
AVR Application Note By Hendawan Soebhakti Created on 19/11/2008 19:17:00 Page 2 of 3
3. Buat program sebagai berikut :
#include <mega8535.h> #include <delay.h> #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) { . . . // ADC initialization // ADC Clock frequency: 691,200 kHz // ADC Voltage Reference: AVCC pin // ADC High Speed Mode: Off // ADC Auto Trigger Source: None // Only the 8 most significant bits of // the AD conversion result are used ADMUX=ADC_VREF_TYPE & 0xff;
AVR Application Note By Hendawan Soebhakti Created on 19/11/2008 19:17:00 Page 3 of 3
ADCSRA=0x84; SFIOR&=0xEF; while (1) { // Place your code here read_adc(0); PORTC=ADCH; }; }
4. Compile, download dan masukkan tegangan analog 0 s/d 5 V ke input ADC0. 5. Perhatikan apa yang terjadi pada LED.