POWER FACTOR MEASUREMENT USING ARDUNO

CIRCUIT




ACS712 CURRENT SENSOR OUTPUT


CURRENT AND VOLTAGE WAVES AT THE OUTPUT OF COMPARATOR

 



CURRENT AND VOLTAGE WAVES AT THE OUTPUT OF COMPARATOR


OUTPUT OF HIGH PASS FILTER


OUTPUT OF INSTRUMENATION AMPLIFIER INA122


VOLTAGE AND CURRENT INPUT


VOLTAGE AND XOR GATE OUT


VOLTAGE OR CURRENT INPUT AND OUTPUT

PROGRAM
int x,y,r=0;
float z;//time,angle,pf,radians,pf2 relay
#define echoPin 11 // Echo Pin
#define pf1 9
#define pf2 9
//#define overvoltrelay A3
#include <LiquidCrystal.h>
LiquidCrystal lcd(3, 4, 5, 6, 7, 8);//LCD RS-12,En-11,D4-5,D5- 4,D6-3,D7-2,
void setup()
{
  relayinit();
// Serial.begin (9600);
 usinit();
lcdstart();
digitalWrite(pf1,LOW);
}

void loop()
{
uscheck();
//voltagecheck();
}
/*void voltagecheck(void)
{
  int f=analogRead(A0);
  if(f>480)digitalWrite(overvoltrelay,HIGH);
  else digitalWrite(overvoltrelay,LOW);
 
   lcd.setCursor(0, 0);
  lcd.print("volt=");
  int v=f/2;
  lcd.print(v);}

*/
void usinit(void)
{

pinMode(echoPin, INPUT);
}

void uscheck(void)
{

x = pulseIn(echoPin,LOW);//reads  duartion pulse in Microseconds
 y = (x*9)/1000;
z=cos(y*0.01745);

//if (y>10 && r==1)digitalWrite(pf2,HIGH);else digitalWrite(pf2,LOW);
if(y>10 && r==0){digitalWrite(pf1,HIGH);r=1;}
else if (r==1 && y>10){digitalWrite(pf1,LOW); r=0;}

if(x>500)
{
  delay(500);


  lcd.setCursor(0, 1);
  lcd.print("PF=");
  lcd.print(z);
  }
}

void relayinit(void)
{
 pinMode(pf1,OUTPUT);
 pinMode(pf2,OUTPUT);
// pinMode(overvoltrelay,OUTPUT);
}
void lcdstart(void)
{
  lcd.begin(16, 2);// set up the LCD's number of columns and rows:
//lcd.print("welcome");// Print a message to the LCD.
//delay(500);
lcd.clear();

}