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.

Voltmeter Digital dengan ATmega8

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 :

Schematic Voltmeter Digital

Postingan ini sekaligus memenuhi permintaan beberapa teman2 di facebook inkubatek ya, jadi bagi yang kemarin saya janjikan, sudah sah berarti ya hutang saya, hehe…

4 thoughts on “Voltmeter Digital dengan BASCOM dan CVAVR

  • January 24, 2015 at 3:16 am
    Permalink

    ASSALAMUALAIKUM,,,mau bertanya nih,,itu potensio nya di connect ke pin ADC
    berapa yah mksih

    Reply
    • January 24, 2015 at 10:10 am
      Permalink

      Wa’alaykummussalam.
      Potensio bisa pakai sembarang, 10K, 50K atau 100K.
      Trims

      Reply
  • January 24, 2015 at 10:48 am
    Permalink

    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 😀

    Reply
    • January 29, 2015 at 9:12 am
      Permalink

      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.

      Reply

Leave a Reply

WhatsApp chat
%d bloggers like this: