POWER LINE COMMUNICATION BASED ENERGY BILLING AND LOAD CONTROLLING

Present electricity grids are designed for large scale generation, centralized control, transmission, and distribution of electricity. As such, these devices and system might not be efficient for housing intermittent power generation sources such as wind turbines and PV panels without compromising on the overall power system stability. In addition, present grid systems are designed for unidirectional power flow. Integrating additional devices to the smart meter system enhances the capabilities of smart metering technology. Geographic Information System (GIS) can be integrated to the smart meter system in order to obtain specific information regarding the geographical location of a potential fault. Quick identification and rectification of faults and other issues that demand the attention of utility company reduces the overall power outage duration . In addition, smart meters reduce the average power outage duration to 4 to 6 minutes due to their fast response and rectification to power outages and faults.
BLOCK DIAGRAM
PC SIDE


MONITORING SIDE
CIRCUIT 



PROGRAM

#include <LiquidCrystal.h>
LiquidCrystal lcd(3, 4, 5, 6, 7, 8);//LCD RS-12,En-11,D4-5,D5- 4,D6-3,D7-2
int t=0,p=0,u=0,y=2,z; //time,pulse,unit,unit rate,amount
char g[5],a;
void setup() 
{      
pinMode(9,OUTPUT);//relay
lcdstart();
Serial.begin(9600);

attachInterrupt(0, blink, FALLING);
}

void loop() 
{
lcd.clear();  
lcd.setCursor(0, 0);
lcd.print("unit=");// Print a message to the LCD.    
lcd.print(u);// Print a message to the LCD. 
z=u*y;
lcd.print(" AMT=");// Print a message to the LCD.    
lcd.print(z);// Print a message to the LCD. 
delay(100);  

power ();
t=t+1;
if(t==600){t=0;
Serial.write('A');del();Serial.write('M');del();
Serial.write('T');del();Serial.write('1');del();Serial.write('-');del();
u=u*y;
adctoascii();
Serial.write(g[2]);   del();Serial.write(g[3]);  del();Serial.write(0xd);  del();
u=0;
}
serial();

}
void serial(void)
{
 if(Serial.available()>0)
{
a=Serial.read();
if(a=='d'){lcd.setCursor(0, 1);lcd.print("off");digitalWrite(9,HIGH);}
else if (a=='c'){lcd.setCursor(0, 1);lcd.print("on ");digitalWrite(9,LOW);}

if(a=='k') //tarif
{

while(!(Serial.available()>0));
a=Serial.read();
y=(a-0x30);
}


else;
}

void power (void)
{
  if(p==3)
{
 u=u+1;  
 p=0;
}
}

void blink()
{
 p=p+1;
}
void lcdstart(void)
{
lcd.begin(16, 2);// set up the LCD's number of columns and rows:
lcd.setCursor(0, 0);
lcd.print("WELCOME");// Print a message to the LCD.
delay(500);
lcd.clear();
}

void del(void)
{
  delay(500); 
}
void adctoascii (void)
{
g[4]='\0'; //LSB section
g[3]=(u%10)+0x30;
g[2]=u/10%10+0x30;
g[1]=u/100%10+0x30;
g[0]=u/1000+0x30;//MSB section
}