Sie sind auf Seite 1von 11

Title of the project

“Power factor correction using Arduino”

Group Members:
Hamza Iftikhar 16-EE-77
Usama Ayub 16-EE-83
Arslan Aslam 16-EE-86
Hafza Faiza Abbasi 16-EE-89
Adnan Munir 16-EE-92

Abstract
Power factor losses represent a significant loss in both industrial and domestic units. Various
methods have been devised earlier in this regard to tackle the problem. This report aims to
present an effective method used for power factor correction. The report demonstrates phase
advancers, synchronous condensers and capacitor banks to be the most efficient methods for the
purpose. Further, the use of capacitor bank has been elaborated and is also practiced on the
hardware.
This report is the outcome of detailed study conducted and analyzed in various aspects. The
major points emphasized range from the need of improving power factor to the applications and
analyzing the calculated results. Thus it covers all the aspects of the topic ranging from
introduction to conclusion.

Components
 Arduino uno
 Choke (RL load )
 Capacitors
 LCD 16X2
 Push button switches
 Step down transformer (220V:13V)
 PCB circuit board.

Theoretical background
Description
Power Factor is the phase relationship of current and voltage in AC electrical systems. Under
ideal conditions, current and voltage are in phase and the power factor is 1. If inductive load are
present, power factors less than 1 occurs. Low power factor causes more current to flow in the
power distribution lines. The effects are:

• Power distribution systems can be overloaded by excess current


• The excess current produces more losses within the distribution systems, and larger
voltage drops result
• Costs can be incurred if the electric utility charges a penalty for low power factor.

Formula:
Power factor is an expression that determines the efficiency of an electrical system. It only deals
with the AC power efficiency.

It is quite important that the power factor remains close to unity because it indicates higher
efficiency of the system.
Improving power factor means reducing the phase difference between voltage and current. Since
majority of loads are of inductive nature, they require some amount of reactive power for them to
function. This reactive power is provided by the capacitor or bank of capacitors installed parallel
to the load.

Power triangle:
The relationship between real power, reactive power and
apparent power can be expressed by representing the
quantities as vectors. Real power is represented as a
horizontal vector and reactive power is represented as a
vertical vector. The apparent power vector is the hypotenuse
of a right triangle formed by connecting the real and reactive
power vectors. This representation is called the power
triangle.

Power Factor Correction:


Power Factor correction refers to the increment of the value of cosφ and reducing the phase
difference between current and voltage, making the circuit more efficient. Reactive power in
VAR (Volt Amps Reactive) (Q) is power that circulates between the source and the load. Power
that is stored in capacitors or inductors, the less the value of reactive power the more efficient the
circuit is.
Usually the load we use practically is inductive. The most
common power factor correction device is the capacitor. It
improves the power factor because the effects of capacitance
are exactly opposite those of inductance. The var rating of a capacitor shows how much reactive
power the capacitor will supply. Since this kind of reactive power is caused by inductance, each
kilovar of capacitance decreases the net reactive power demand by the same amount.

Methods of Power Factor Improvement:


Normally three methods are used to improve power factor
 Capacitor bank
 Synchronous condensers
 Phase advancers

Benefits:
 Increased system capacity (generators, cables, transformers)
 Reduced losses in transformers and cables
 Improved voltage regulation
 Greening the power system

Circuit diagram

Calculations
Before capacitor is connected
V=220V , f=50Hz
Power factor=0.5, wattage =50W
Desired power factor :0.9
Now,

Active component of Iload=Iload cos φ1


=0.45(0.5) =0.225
Active component of I=Icos φ2
=I(0.9)
Now since I cos φ2=Iload cos φ1
I=0.225/0.9 =0.25

Reactive component of Iload =Iloadsin φ1


=0.45*√(1-cos2 φ1) =0.389
Reactive component of I= Isin φ2=0.109

Now Ic= Iloadsin φ1- Isin φ2 =0.281


And Ic=V*2𝝅fC

C=4.07uF

Working
A 220V 50 Hz supply is connected to a choke (RL load).Since the choke is an
inductive load, so normally its power factor is low. We have used the method of taking ratio of
real and apparent power. Firstly the total real power is determined and then the apparent power
and then we take it’s ratio to see the power factor. The power factor is measured with the help of
Arduino by taking the real and apparent powers and displays that power factor, voltage and
current on LCD. Initially only fake reading will appear.
As we start our circuit a PF of almost 0.5 appears on it and corresponding voltage and current
also appear. Now we improve it with the help of capacitors. We push a button which actually
connects the capacitor in parallel with the load. Now another current Ic is also introduced in the
circuit. This current when combined with the load current, makes a vector more close to unity
than the one with capacitor i.e φ2< φ1 such that
cos φ2>cos φ1

due to which power factor will improve to about 0.9

Hardware pictures
Arduino code
// EmonLibrary examples openenergymonitor.org, Licence GNU GPL V3
#include <LiquidCrystal.h>
// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(4, 11, 10,9,8,7);//new lcd pins for pcb
const byte cap1 = 5;
const byte cap2 = 6;
const byte interruptPin = 2;
volatile byte capSwitch = 0;
#include "EmonLib.h" // Include Emon Library
EnergyMonitor emon1;
EnergyMonitor emon2; // Creating a new instance for over use with check
float volcal,Vmain; // this variable is used for obtaining voltage callibration values
//int Vmain; // ??what is our main supply voltages
float Q;
float error = 0.025; // ususally present when no voltage is applied
//external interrupt isr
void Cap_Switch()
{
capSwitch++;
Serial.print("capswitch=");
Serial.print(capSwitch);
if(capSwitch%2==1)
{
// digitalWrite(cap1_led,HIGH);
digitalWrite(cap1,HIGH);
Serial.println("cap1");
delay(50000);
}
if(capSwitch%2==0)
{
// digitalWrite(cap2_led,HIGH);
digitalWrite(cap2,HIGH);
Serial.println("cap2");
delay(50000);
}
delay(1000);
}
void setup()
{
Serial.begin(9600);
lcd.begin(16, 2);
emon2.voltage(A5,1,1.28);
//emon1.voltage(2,320, 1); // Voltage: input pin, calibration, phase_shift
emon1.current(A4,14.30232558); // Current: input pin, calibration.14.30232558
//15.053482320 //15.27748414 15.32973215
// pinMode(cap1_led, OUTPUT);
//pinMode(cap2_led, OUTPUT);
pinMode(cap1, OUTPUT);
pinMode(cap2, OUTPUT);
digitalWrite(cap1,LOW);
digitalWrite(cap2,LOW);
pinMode(interruptPin, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(interruptPin), Cap_Switch, LOW);

}
void loop()
{
emon2.calcVI(20,2000);
emon1.calcVI(20,2000); // Calculate all. No.of half wavelengths (crossings), time-out
emon1.serialprint(); // Print out all variables (realpower, apparent power, Vrms, Irms,
power factor)
//long check1;
float realPower = emon1.realPower; //extract Real Power into variable
float apparentPower = emon1.apparentPower; //extract Apparent Power into variable
float powerFActor = emon1.powerFactor; //extract Power Factor into Variable
float supplyVoltage = emon1.Vrms; //extract Vrms into Variable
float irms = emon1.Irms;
Serial.println("irms=");
Serial.println(irms,7);
float Q;
Q = sqrt(apparentPower*apparentPower-realPower*realPower);
Serial.print("Q = ");
Serial.println(Q);
float check1 = emon2.Vrms; // this is check whic is responsible for giving us info
of mains as well as voltage callibrations
check1 = check1*10000; // this step was necessary because we have to use
checks(if else)
Serial.print("checkin check = ");
Serial.println(check1);
if(supplyVoltage<150||supplyVoltage>=260)
{
Serial.println(supplyVoltage);
lcd.clear();
lcd.print("Calibrating ");
lcd.print((char)0xaf); //for displaying smiley refer to lcd character set for more detail
lcd.setCursor(0,1);
lcd.print(check1);
lcd.home();
delay(1000);
}
if (supplyVoltage>=150&&supplyVoltage<=260){
Serial.println(supplyVoltage);
//Serial.println("we r here");
lcd.clear();
lcd.home();
lcd.setCursor(0,1);
lcd.print(check1);
lcd.setCursor(0,0);
//lcd.print("APFC");
//lcd.setCursor(0,1);
lcd.print("V=");
lcd.print(supplyVoltage);
lcd.setCursor(9,0);
lcd.print("I=");
lcd.print(irms);
lcd.setCursor(0,1);
lcd.print("PF=");
lcd.print(powerFActor);
lcd.setCursor(9,2);
/*lcd.print("Q=");
lcd.print(Q);
lcd.setCursor(0,3);
lcd.print("S=");
lcd.print(apparentPower);
lcd.setCursor(9,3);
lcd.print("P=");
lcd.print(realPower);
*/
}
//serially printing our check
/*lcd.clear();
lcd.home();
lcd.print("checkin check = ");
lcd.print(check1);
*/
int check11 = (int)check1; // another temp variable for our check so we type casted
it(float) to int
//8131 for 170 8419 for 180
//8131,9390,170,207
//9350,10334.71,200,223
float Vmain = map(check1, 10000,14000,204,229);
// float Vmain = map(check1, 8500,9390,187,207);
check1=check1/10000;//again getting back our floating check in 0.something
/*Serial.print("V=");
Serial.println(supplyVoltage);
Serial.print("Vmain=");
Serial.println(Vmain);
*/
volcal = Vmain/(check1); // this is my unitary method for obtaining voltage
callibrations
//Serial.print("volcal = ");
//Serial.println(volcal);
//Serial.print("Irms = ");
emon1.voltage(A5,volcal, 1.28); //updating this instance with updated volcal
// float Irms = emon1.Irms; //extract Irms into Variable
}

Das könnte Ihnen auch gefallen