CODEVISION AVR
(ADC DAN APLIKASI TERMOMETER)
Data_ADC = (Vin/Vref)*(Maksimal_Data_Bit)
Vin = Tegangan analog input yang akan diubah ADC.
Vref = Tegangan referensi yang dipakai oleh ADC sebagai
acuan pengubah.
Maksimal_Data_Bit = Kemampuan maksimal data yang
dapat dihasilkan oleh ADC.
Fitur ADC µC. ATmega16A
8 Kanal ADC:
PORTA.0 = ADC(0); PORTA.1 = ADC(1);
½ VCC
Aref
Vin ADC = 0V – 5V
DI-Smart AVR.16 System
(Sistem Plus µC. ATmega16A)
RP1 P0 P1
D7
D6
D5
D4
D3
D2
D1
D0
D0 IC1 AT MEGA PORTA PORTB
1
D1 PB0 1 40 PA0
2 PB0 (T0) PA0 (ADC0) 1 1
D2 PB1 2 39 PA1
3 L1 L2 L3 L4 L5 L6 L7 L8 PB1 (T1) PA1 (ADC1) VCC 2 VCC 2
D3 PB2 3 38 PA2 PA0 PB0
4 PB2 (AIN0) PA2 (ADC2) 3 3
8
D4 PC7 PC6 PC5 PC4 PC3 PC2 PC1 PC0 PB3 4 37 PA3 PA1 PB1
5 PB3 (AIN1) PA3 (ADC3) 4 4
D5 PB4 5 36 PA4 PA2 PB2
6 PB4 (SS) PA4 (ADC4) 5 5
D6 PB5 6 35 PA5 PA3 PB3
7 PB5 (MOSI) PA5 (ADC5) 6 6
PC7
PC6
PC5
PC4
PC3
PC2
PC1
PC0
D7 PB6 7 34 PA6 PA4 PB4
8 PB6 (MISO) PA6 (ADC6) 7 7
PB7 8 33 PA7 PA5 PB5
9 PB7 (SCK) PA7 (ADC7) 8 8
PA6 PB6
2
1 VCC
PD0
PD1
14
15
PD0 (RXD)
1 (TOSC2) PC7
29
28
PC7
PC6
PA7
9
10
P2
PORTC
PB7
9
10
P3
PORTD
PD1 (TDX) (TOSC1) PC6
JP3 TXD SERIAL PD2 16 27 PC5
PD2 (INT0) PC5 1 1
LED CONNECTED PD3 17 26 PC4
VCC PD3 (INT1) PC4 VCC 2 VCC 2
PD4 18 25 PC3 PC0 PD0
PD4 (OC1B) PC3 3 3
+ C12 PD5 19 24 PC2 PC1 PD1
1uF PD5 (OC1A) PC2 4 4
5 PD6 20 23 PC1 PC2 PD2
+
VCC
V-
R1 IN R1 OUT X2 AREF 9 9
7 8 9 X1 13 PC7 PD7
R2 IN R2 OUT X1 10 10
2 11 14 31
6
1
10
1
T1 IN
T2 IN
7 T1 OUT
T2 OUT
7
4 RST 9
AGND
30 P4 VCC
GND
3 5 ISP PROG
C1 - C2 -
PB5
+
C9 C13 1 2
MAX232CPE C1 LED RXD ISP
R1 3 4
1uF 1uF X1 RST
4 TXD ISP
15
VCC 5 6
1K PB7
Y1
11059200
X2
2 20pF
C2
3 SW1
RST
RST
PB6
7
9
8
10
3
4002 PD2
+ C5 + C6 C7 PD2 VR1
GND
POWER
9-12VDC 10uF 100nF 100nF
9 6
2
S3 AREF
2
W
+ PD3
POWER R3
1
C4 PD3 C17
2
1
DI-Smart AVR.16 System
1. ATmega16A
2. Crystal
3
PORTA
3. Reset 4 =
4. ISP
5. Power ADC
6. Vref ADC 1
7. RS232 7
8. LED Array
9. Push Button
2
5
6 Vref
9 8
Pemrograman ADC pada CVAVR
Inisialisasi “Wizard”
Pemilihan Vref
VCC
½ VCC
V@Aref
Pemilihan Clock
Aktivasi ADC
Pemrograman ADC Ditampilkan LCD
(Setup “Wizard”)
1 2 3
4
Pemrograman ADC Ditampilkan LCD
(Subprogram Hasil “Wizard”)
read_adc(channel)
adalah subprogram
untuk membaca
data dari kanal adc.
Dengan channel
adalah 0 – 7.
Pemrograman ADC Ditampilkan LCD
(Inisialisasi ADC Hasil “Wizard”)
Inisialisasi ADC sesuai
dengan yang
diinputkan saat
Wizard.
Pemrograman ADC Ditampilkan LCD
(Membaca dan Menampilkan ADC) [1/2]
#include <mega16.h>
#include <delay.h>
#include <stdio.h>
#include <alcd.h>
#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;
}
Pemrograman ADC Ditampilkan LCD
(Membaca dan Menampilkan ADC) [2/2]
unsigned char cstr[16];
unsigned int idata;
void main(void)
{
ADMUX=ADC_VREF_TYPE & 0xff; ADCSRA=0xA6; SFIOR&=0x1F;
lcd_init(16);
while (1)
{
lcd_clear();
idata = read_adc(0);
sprintf(cstr,"Data ADC: %04d",idata);
lcd_puts(cstr);
delay_ms(250);
}
}
Aplikasi ADC
“Termometer berbasis Sensor LM35DZ”
LM35DZ adalah sensor
temperatur analog ekonomis
namun cukup baik dalam
mengukur temperatur.
Jangkauan: 0 – 100 oC
Sensitivitas: 10 mV/ oC
Operasional: 4 – 30 V
Fungsi Transfer Sensor LM35DZ
Tinjau-ulang dasar ADC:
Data_ADC = (Vin/Vref)*(Maksimal_Data_Bit)
Data_ADC = Hasil konversi ADC internal ATmega16A
Vin = Tegangan LM35
Vref = Sesuai pengaturan di “Wizard” CVAVR = 5V
Maksimal_Data_Bit = 10 Bit = 1023