Voltmeter Digital dengan BASCOM dan CVAVR
Yuk bikin aplikasi mikrokontroler yang enteng – entengan. Kita buat voltmeter saja, mengukur tegangan DC. Mikrokontrolernya juga kita pakai yang paling enteng dari keluarga ATmega, yaitu ATmega8. Tampilannya kita pakai 7 segmen.
Sebagai tegangan input kita pakai potensiometer yang dirangkai menjai voltage devider.

Programnya memakai 2 bahasa, tentu saja tidak secara bersamaan. Pertama biarkan BASCOM-AVR dulu :
$regfile = “m8def.dat”
$crystal = 16000000
Portd = &HFF
Ddrd = &HFF
Portb = &HFF
Ddrb = &HFF
Config Adc = Single , Prescaler = Auto , Reference = Avcc
Dim W As Word , V As Word , V_rib As Word , V_rat As Byte , V_pul As Byte , V_sat As Byte
Dim I As Word , J As Word , K As Word , L As Byte
Start Adc
Do
W = Getadc(0)
V = W * 5
V_rib = V / 1000
I = V Mod 1000
V_rat = I / 100
J = I Mod 100
V_pul = J / 10
V_sat = J Mod 10
For L = 0 To 100
Gosub _disp
Next
Loop
End
_disp:
Portb = &B1110
Portd = Lookup(v_rib , Angka)
Waitms 2
Portb = &B1101
Portd = Lookup(v_rat , Angka)
Waitms 2
Portb = &B1011
Portd = Lookup(v_pul , Angka)
Waitms 2
Portb = &B0111
Portd = Lookup(v_sat , Angka)
Waitms 2
Return
Angka:
Data &HC0 , &HF9 , &HA4 , &HB0 , &H99 , &H92 , &H82 , &HF8 , &H80 , &H90 , &HFF
Bagi penggemar bahasa C, ini ada yang memakai CVAVR :
#include <mega8.h>
#include <delay.h>
unsigned int W,V,V_rib, V_rat,V_pul ,V_sat;
unsigned int I ;
char angka[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
#define ADC_VREF_TYPE ((0<<REFS1) | (1<<REFS0) | (0<<ADLAR))
unsigned int read_adc(unsigned char adc_input)
{
ADMUX=adc_input | ADC_VREF_TYPE;
delay_us(10);
ADCSRA|=(1<<ADSC);
while ((ADCSRA & (1<<ADIF))==0);
ADCSRA|=(1<<ADIF);
return ADCW;
}
void disp(){
PORTB = 0B1110;
PORTD = angka[V_rib];
delay_ms(2);
PORTB = 0B1101;
PORTD = angka[V_rat];
delay_ms(2);
PORTB = 0B1011;
PORTD = angka[V_pul];
delay_ms(2);
PORTB = 0B0111;
PORTD = angka[V_sat];
delay_ms(2);
}
void main(void)
{
DDRD=0xFF;
DDRB=0xFF;
ADMUX=ADC_VREF_TYPE;
ADCSRA=0B10000111;
while (1)
{
W=read_adc(0);
V=W*5;
V_rib=V/1000;
V_rat=V%1000/100;
V_pul=V%1000%100/10;
V_sat=V%1000%100%10;
for(I=0;I<100;I++) disp();
}
}
Penasaran dengan rangkaiannya ? Nih :
Postingan ini sekaligus memenuhi permintaan beberapa teman2 di facebook inkubatek ya, jadi bagi yang kemarin saya janjikan, sudah sah berarti ya hutang saya, hehe…
ASSALAMUALAIKUM,,,mau bertanya nih,,itu potensio nya di connect ke pin ADC
berapa yah mksih
Wa’alaykummussalam.
Potensio bisa pakai sembarang, 10K, 50K atau 100K.
Trims
Seumpama aplikasi diatas ingin saya gunakan sebagai Voltmeter pada Adaptor bagaimana yah suhu?apakah saya harus memakai teg ADC sebesar 12 V sebagai batas maksimal Adaptor atau bagaimana,tentu nya ada perubahan untuk nilai pembacaan kan agar sesuai dengan real tegangan keluaran dari adaptor,,mohon solusi nya master 😀
Analog input mikrokontroler berupa tegangan 0 – 5 V, artinya maksimal 5 Volt. Untuk tegangan 12 V harus dibuat semacam conditioning supaya menjadi 0 – 5 V.