Pada
percobaan rangkaian pembagi tegangan dengan menggunakan nilai ADC untuk membuat
kombinasi beberapa tombol yang disediakan (4 tombol).
Rangkaian Skematik Push
Button (Hold)
. Menggunakan Software Eagle
2.
Menggunakan Software Proteus
Tabel
Perhitungan Tegangan Keluaran (Vout)
Pengukuran
dengan AVO Meter
|
Perhitungan
Teori
|
Vout
ADC(LCD)
|
S1 ditekan =
4.02 V
|
4.00 V
|
4.018 V
|
S2 ditekan =
3.02 V
|
3.00 V
|
3.055 V
|
S3 ditekan =
2.06 V
|
2.00 V
|
2.082 V
|
S4 ditekan =
1.07 V
|
1.00 V
|
1.085 V
|
S1+S2 ditekan = 3.77 V
|
3.75 V
|
3.778 V
|
S1+S3 ditekan = 3.35 V
|
3.33 V
|
3.363 V
|
S1+S4 ditekan = 2.53 V
|
2.50 V
|
2.537 V
|
S2+S3 ditekan = 2.54 V
|
2.50 V
|
2.566 V
|
S2+S4 ditekan = 1.72 V
|
1.67 V
|
1.740 V
|
S3+S4 ditekan = 1.31 V
|
1.25 V
|
1.329 V
|
Analisa Perhitungan :
Hambatan Total dari Rangakian di atas
diperoleh = 1650 Ω, dimana hambatan
masing-masing resistor adalah sebesar 330 ± 2 % Ω. Untuk mencari tegangan keluaran
(kaki.2) maka dapat dicari nilainya menggunakan rumus pembagi tegangan.
Penekanan tombol secara kombinasi (2
tombol) perhitungannya sama seperti penekanan tombol tunggal. Untuk nilai
pembilang dan penyebut disesuaikan dengan penekanan tombol.
Agar nilai tegangan keluaran (Vout)
yang berupa analog dapat diproses pada mikrokontroler, maka digunakan range tegangan ±0.005 volt.
Vreff merupakan tegangan referrensi yaitu = 5 V. Perhitungannya yaitu sebagai
berikut :
Nilai
Range Tegangan saat S1 ditekan
= 4.013<=vin<=4.023
Nilai
Range Tegangan saat S2 ditekan
= 3.050<=vin<=3.060
Nilai
Range Tegangan saat S3 ditekan
= 2.077<=vin<=2.087
Nilai
Range Tegangan saat S4 ditekan
= 1.080<=vin<=1.090
Nilai
Range Tegangan saat S1+S2
ditekan = 3.773<=vin<=3.783
Nilai
Range Tegangan saat S1+S3
ditekan = 3.358<=vin<=3.368
Nilai
Range Tegangan saat S1+S4
ditekan = 2.532<=vin<=2.542
Nilai
Range Tegangan saat S2+S3
ditekan = 2.561<=vin<=2.571
Nilai
Range Tegangan saat S2+S4
ditekan = 1.735<=vin<=1.745
Nilai
Range Tegangan saat
S3+S4 ditekan = 1.324<=vin<=1.334
Dari hasil percobaan diperoleh range tegangan dari pengukuran hasilnya
tidak jauh berbeda dengan hasil perhitungan.Jika pada hasil perhitungan ketika
kondisi S1 ditekan menunjukkan nilai tegangan keluaran (Vout) 4 volt maka pada
hasil perhitungan dan pembacaan data mikrokontroler menunjukkan nilai tegangan
keluaran (Vout) sekitar 4.018. Dari data tersebut diambil range sebesar 0.005
sehingga data range yang digunakan pada program 4.013<=vout<=4.023. Demikian pula untuk kondisi Switch yang
lain digunakan range + 0.005 volt dan – 0.005volt.
LISTING PROGRAM
/****************************************************
Chip type
: ATmega16
Program type
: Application
Clock frequency
: 11.059200 MHz
Memory model
: Small
External SRAM size
: 0
Data Stack size
: 256
*****************************************************/
#include <mega16.h>
#include <stdio.h>
#include <delay.h>
// Alphanumeric LCD Module functions
#asm
.equ
__lcd_port=0x18 ;PORTB
#endasm
#include <lcd.h>
#define ADC_VREF_TYPE 0x00
// Read the AD conversion result
unsigned int read_adc(unsigned char adc_input)
{
ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
// Start the AD conversion
ADCSRA|=0x40;
// Wait for the AD conversion to complete
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCW;
}
// Declare your global variables here
char lcd_buffer[16];
char lcd_buf[16];
unsigned int temp;
float vin;
//Function Display ADC and Volt value
void tampil(void)
{
lcd_gotoxy(0,0);
sprintf(lcd_buffer,"adc=%d ",temp);
lcd_puts(lcd_buffer);
lcd_gotoxy(0,1);
sprintf(lcd_buf,"Teg=%.3f volt",vin);
lcd_puts(lcd_buf);
}
//Main Program
void main(void)
{
// Declare your local variables here
PORTC=0xff;
DDRC=0xff;
PORTA=0x01;
DDRA=0x00;
// ADC initialization
// ADC Clock frequency: 86.400 kHz
// ADC Voltage Reference: AREF pin
// ADC Auto Trigger Source: None
ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0x87
;
// LCD module initialization
lcd_init(16);
//display lcd
lcd_gotoxy(3,0);
lcd_putsf("== ADC == ");
delay_ms(200);
lcd_clear();
delay_ms(100);
while (1)
{
// Place
your code here
PORTC=0xff;
temp=read_adc(0);
vin=((float)temp*0.00488758);
tampil();
delay_ms(300);
if (vin>=4.013 && vin<=4.023){
PORTC.0=0;lcd_clear();delay_ms(200);lcd_gotoxy(0,0);lcd_putsf("LED
1 Nyala");delay_ms(600);lcd_clear();
tampil();
delay_ms(300);}
else if(vin>=3.050 && vin<=3.060){
PORTC.1=0;lcd_clear();delay_ms(200);lcd_gotoxy(0,0);lcd_putsf("LED
2 Nyala");delay_ms(600);lcd_clear();
tampil();
delay_ms(300);}
else if(vin>=2.077 && vin<=2.087){
PORTC.2=0;lcd_clear();delay_ms(200);lcd_gotoxy(0,0);lcd_putsf("LED
3 Nyala");delay_ms(600);lcd_clear();
tampil();
delay_ms(300);}
else if(vin>=1.080 && vin<=1.090){
PORTC.3=0;lcd_clear();delay_ms(200);lcd_gotoxy(0,0);lcd_putsf("LED
4 Nyala");delay_ms(600);lcd_clear();
tampil();
delay_ms(300);}
else if(vin>=3.773 && vin<=3.783){
PORTC.0=0;PORTC.1=0;lcd_clear();delay_ms(200);lcd_gotoxy(0,0);lcd_putsf("LED
1 & 2 Nyala");delay_ms(600);lcd_clear();
tampil();
delay_ms(300);}
else if(vin>=3.358 && vin<=3.368){
PORTC.0=0;PORTC.2=0;lcd_clear();delay_ms(200);lcd_gotoxy(0,0);lcd_putsf("LED
1 & 3 Nyala");delay_ms(600);lcd_clear();
tampil();
delay_ms(300);}
else if(vin>=2.532 && vin<=2.542){
PORTC.0=0;PORTC.3=0;lcd_clear();delay_ms(200);lcd_gotoxy(0,0);lcd_putsf("LED
1 & 4 Nyala");delay_ms(600);lcd_clear();
tampil();
delay_ms(300);}
else if(vin>=2.561 && vin<=2.571){
PORTC.1=0;PORTC.2=0;lcd_clear();delay_ms(200);lcd_gotoxy(0,0);lcd_putsf("LED
2 & 3 Nyala");delay_ms(600);lcd_clear();
tampil();
delay_ms(300);}
else if(vin>=1.735 && vin<=1.745){
PORTC.1=0;PORTC.3=0;lcd_clear();delay_ms(200);lcd_gotoxy(0,0);lcd_putsf("LED
2 & 4 Nyala");delay_ms(600);lcd_clear();
tampil();
delay_ms(300);}
else if(vin>=1.324 && vin<=1.334){
PORTC.2=0;PORTC.3=0;lcd_clear();delay_ms(200);lcd_gotoxy(0,0);lcd_putsf("LED
3 & 4 Nyala");delay_ms(600);lcd_clear();
tampil();
delay_ms(300);}
else{
tampil();
}
};
}
Tidak ada komentar:
Posting Komentar