Anda di halaman 1dari 16

MIKROKONTROLER ATMEGA BERBASIS

CODEVISION AVR
(ADC DAN APLIKASI TERMOMETER)

dins DEPOK INSTRUMENTS


ADC
 Konsep Dasar ADC
 ADC = Analog to Digital Converter

 Pengubah sinyal analog menjadi sinyal digital (bit)

 Rumus dasar ADC:

 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);

 PORTA.2 = ADC(2); PORTA.3 = ADC(3);

 PORTA.4 = ADC(4); PORTA.5 = ADC(5);

 PORTA.6 = ADC(6); PORTA.7 = ADC(7);

 Maksimal_Data_Bit = 10-bit = 0 – 1023


 Vref ADC:
 VCC

 ½ 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
+

C10 C11 PD6 (ICP ) PC1 5 5


9 PD7 21 22 PC0 PC3 PD3
16

PD7 (OC2) PC0 6 6


2
6

4 DB1 1uF 1uF PC4 PD4


7 7
8 SERIAL U2 PC5 PD5
8 8
3 13 12 RXD SERIAL X2 12 32 AREF PC6 PD6
V+

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

C1+ C2+ RESET AVCC VCC


+

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

20pF C3 JP1 JP2


RXD SERIAL TXD SERIAL
1 1
U0 LM7805CT 100nf PD0 PD1
D1 1
Vin
5 +5V
3
VCC
S2 VCC RXD ISP
2
3
2
3
TXD ISP

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

470uF 100nF VCC


10K L10 2K2

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

 Sensitivitas LM35 = 10 mV/ oC


 Temperatur terukur (T):
 T = (Vin/10 mV) oC
 T = ((Data_ADC*5V/1023)/10 mV) oC
“Termometer berbasis Sensor LM35DZ”
(Skrip Program CVAVR) [1/3]
 #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;
 }
“Termometer berbasis Sensor LM35DZ”
(Skrip Program CVAVR) [2/3]
 unsigned char cstr[16], T; //T = Temperatur
 unsigned int idata;
 float fdata; //Nilai pecahan agar perhitungan baik.
 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);
“Termometer berbasis Sensor LM35DZ”
(Skrip Program CVAVR) [3/3]
 fdata = (((float)idata*5)/1023)/0.01;
 T = (char)fdata;
 sprintf(cstr,"Temperatur: %02d C",T);
 lcd_gotoxy(0,1);
 lcd_puts(cstr);
 delay_ms(250);
 }
 }

Anda mungkin juga menyukai