how to make a AC & DC digital volt meter kit at home

 how to make an AC & DC digital voltmeter kit at the home  

friend, today I'm going to make AC / DC voltmeter | with pic16f676 microcontroller,

3 digit 7 segment display itis very simply microcontroller project I have also circuit diagram and hex. file.

this voltage meter best using for auto stabilizer voltage up/down monitor AC 300V max !!!





Component

  1. PIC16F676 Microcontroller
  2. 14 Pin IC Base
  3. 7805 Voltage Regulator
  4.  3 x BC557 Transistors
  5.  47uf/50v Electrolytic Capacitor
  6.  560 ohms Resistor
  7.  1M Resistor
  8.  3 digit 7 segment display
  9.  PCB 
  10.  Male Header
  11.  10uf/50v Electrolytic Capacitor
  12.   diode 1n4007

circuit diagram

Schematic 




pic16F676 volt meter hex. file here

volt meter hex. code 

#include <16f676.h>

#FUSES NOWDT                    //No Watch Dog Timer

#FUSES INTRC                 //Internal RC Osc, no CLKOUT

#FUSES NOMCLR                   //Master Clear pin used for I/O

#FUSES NOBROWNOUT               //No brownout reset

#FUSES PUT

#device ADC=10

#use delay(INT=4Mhz)

#define aon    output_LOW(PIN_C0);

#define aof    output_HIGH (PIN_C0);

#define bon    output_LOW(PIN_C1);

#define bof    output_HIGH (PIN_C1);

#define con    output_LOW(PIN_C2);

#define cof    output_HIGH (PIN_C2);

#define don    output_LOW(PIN_C3);

#define dof    output_HIGH (PIN_C3);

#define eon    output_LOW(PIN_C4);

#define eof    output_HIGH (PIN_C4);

#define fon    output_LOW(PIN_C5);

#define fof    output_HIGH (PIN_C5);

#define gon    output_LOW(PIN_A2);

#define gof    output_HIGH (PIN_A2);

#define d1_of    output_LOW(PIN_A1);

#define d1_on    output_HIGH (PIN_A1);

#define d2_of    output_LOW(PIN_A0);

#define d2_on    output_HIGH (PIN_A0);

#define d3_of    output_LOW(PIN_A5);

#define d3_on    output_HIGH (PIN_A5);

int32  value=0,val2,ind=0,ind2=0,cnt5=0,d1;

void off();

int thu,ten,unit,digit;

void zero(){

 aon;

 bon;

 con;

 don;

 eon;

 fon;

 gof;

}

void one(){

 aof;

 bon;

 con;

 dof;

 eof;

 fof;

 gof;

}


void two(){

 aon;

 bon;

 cof;

 don;

 eon;

 fof;

 gon;

}

void three(){

 aon;

 bon;

 con;

 don;

 eof;

 fof;

 gon;

}

void four(){

 aof;

 bon;

 con;

 dof;

 eof;

 fon;

 gon;

}

void five(){

 aon;

 bof;

 con;

 don;

 eof;

 fon;

 gon;

}


void six(){

 aon;

 bof;

 con;

 don;

 eon;

 fon;

 gon;

}

void seven(){

 aon;

 bon;

 con;

 dof;

 eof;

 fof;

 gof;

}

void eight(){

 aon;

 bon;

 con;

 don;

 eon;

 fon;

 gon;

}


void nine(){

 aon;

 bon;

 con;

 don;

 eof;

 fon;

 gon;

}

void comp1(){

if(digit==0)zero();

if(digit==1)one();

if(digit==2)two();

if(digit==3)three();

if(digit==4)four();

if(digit==5)five();

if(digit==6)six();

if(digit==7)seven();

if(digit==8)eight();

if(digit==9)nine();

 DELAY_MS(1);}

void mux(){

d1_on;digit=thu;comp1();d1_of;

d2_on;digit=ten;comp1();d2_of;

d3_on;digit=unit;comp1();d3_of;

//d3_on;digit=unit;comp1();d3_of;}

void mdelay()

{

mux();mux();//mux();mux();

mux();mux();mux();mux();

mux();mux();mux();mux();

mux();mux();mux();mux();

mux();mux();mux();mux();

mux();mux();mux();mux();

//mux();mux();mux();mux();

//mux();mux();mux();mux();

}

void getad(){

      int32   result=0;int8 i;

     SET_ADC_CHANNEL(3);

//       for(i=0;i<2;i++)

 //  {

  //   delay_ms(1);

 mux(); mux();mux();mux(); mux();mux();

 result=read_adc();

//}

   val2=result;

  //   value = (int8) (read_adc() * 500)/1023;

//val2 = read_adc ();

  value =   (val2* 5000)/1023;

 thu = (value/1000); mux(); mux();mux();mux(); mux();mux();

 ten = (value/100)%10; mux(); mux();mux();mux(); mux();mux();

 unit = (value/10)%10; mux(); mux();mux();mux(); mux();mux();

/*

putc(thu+48);

putc(ten+48);

putc(unit+48);

 unit = value%10;

putc(unit+48);

putc(10);putc(13);

*/

 }

void main ()

{ DELAY_MS(1);

/*

 //SETUP_ADC_PORTS(NO_ANALOGS);

//   set_tris_a(0);

   set_tris_c(0x00);

   setup_comparator(NC_NC_NC_NC);

   setup_adc_ports(sAN0 | VSS_VDD);

   setup_adc(ADC_CLOCK_INTERNAL);

setup_adc(ADC_CLOCK_INTERNAL );

set_tris_c(0x00);     set_tris_a(0xff);

     set_tris_a(0b00011001);

       setup_comparator(NC_NC_NC_NC);   // not use comparator module

   setup_adc_ports( sAN3 | VSS_VDD); 

   setup_adc(ADC_CLOCK_DIV_64);

     set_tris_a(0b00011001);

zero();//DELAY_MS(1000);

while(1)

 {

// DELAY_MS(10);

//pwmd();

getad();

mdelay();

}}


No comments

Note: Only a member of this blog may post a comment.

Powered by Blogger.