Sie sind auf Seite 1von 6

double sensorVal,irms=0,imax=0,current=0,sensorVal2,imax2=0,current2=0,sensorVal

3,imax3=0,current3=0;
double power=0,power1=0,power2=0,power3=0;

double Voltage = 0;
double VRMS = 0;
double AmpsRMS = 0;

void setup()
{
Serial.begin(9600);
Serial.println("BEGIN");
pinMode(8,OUTPUT);
digitalWrite(8,HIGH);
pinMode(10,OUTPUT);
digitalWrite(10,HIGH);
pinMode(12,OUTPUT);
digitalWrite(12,HIGH);
pinMode(6,OUTPUT);
digitalWrite(6,HIGH);
pinMode(4,OUTPUT);
digitalWrite(4,HIGH);
pinMode(5,OUTPUT);
digitalWrite(5,HIGH);
}
char input;
char x;
void loop()
{
while(Serial.available())
{
x=Serial.read();
Serial.println(input);
while(1)
{switch(x)
{
case 'a':automatic();
break;
case 's':sets();
break;
case 'm':manual();
break;
}
}
}
}

//--------------------------------------------AUTOMATIC MODE-------------------boolean autolock=0;


void automatic()
{
int p[3]={8,10,12};
while(x=='a')
{
values();
if(power>90)
{
for(int i=0;i<3;i++)
{
digitalWrite(p[i],LOW);
}
}
values();
if(power<80)
{
for(int i=0;i<3;i++)
{
digitalWrite(p[i],HIGH);
delay(500);
values();
if(power>100)
{
digitalWrite(p[i],LOW);
delay(500);
values();
i=3;
break;
}
p[i]=0;
}
}
if(Serial.available())
{x=Serial.read();}
}

//---------------------------------------------MODE SELECTION-------------------void mode()


{
if(x=='a')
{

automatic();
}
else if(x=='s')
{
sets();
}
else if(x=='m')
{
manual();
}
else
{
autolock=1;
}
}

//--------------------------------------------SET MODE----------------int d=0;


double time=0;
void sets()
{
Serial.println("SET MODE");
while(!Serial.available());
time=Serial.read();
Serial.println(time);
d=(time-48)*1000;
delay(d);
digitalWrite(8,LOW);
digitalWrite(10,LOW);
digitalWrite(12,LOW);
Serial.println("TIME TO BE SWITCHED ON");
while(!Serial.available());
time=Serial.read();
Serial.println(time);
d=(time-48)*1000;
delay(d);
digitalWrite(8,HIGH);
digitalWrite(10,HIGH);
digitalWrite(12,HIGH);
}
//--------------------------------------------MANUAL MODE--------------char t;
char c=0;
void manual()
{
boolean i=-1,j=-1,k=-1,l=-1,m=-1,n=-1;
Serial.println("MANUAL MODE");
digitalWrite(8,HIGH);
digitalWrite(10,HIGH);
digitalWrite(12,HIGH);
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
digitalWrite(6,HIGH);

do
{
Serial.println("Enter the load to be switched off");
while(!Serial.available());
c=Serial.read();
switch(c)
{case '1':i=~i;
digitalWrite(4,i);
break;
case '2':j=~j;
digitalWrite(5,j);
break;
case '3':k=~k;
digitalWrite(6,k);
break;
case '4':l=~l;
digitalWrite(8,l);
break;
case '5':m=~m;
digitalWrite(10,m);
break;
case '6':n=~n;
digitalWrite(12,n);
break;
case 'a':x='a';
Serial.println(x);
break;
}
}while(x!='a');
}
/*
Measuring AC Current Using ACS712
*/

double values()
{
imax=0;
imax2=0;
imax3=0;
power1=0;
power2=0;
power3=0;
power=0;
time=millis();
for(int i=0;i<500;i++)
{
while(millis()%20>0)
{
sensorVal=analogRead(A0);
current = ((sensorVal*(5.0/1023.0)-2.5)*(1000/66));
e and 185 for 5A Module 66 for 30A

// use 100 for 20A Modul

if(imax<current)
{
imax=current;
}
sensorVal2=analogRead(A1);
current2 = ((sensorVal2*(5.0/1023.0)-2.5)*(1000/66));
ule and 185 for 5A Module 66 for 30A

// use 100 for 20A Mod

if(imax2<current2)
{
imax2=current2;
}
sensorVal3=analogRead(A2);
current3 = ((sensorVal3*(5.0/1023.0)-2.5)*(1000/66));
ule and 185 for 5A Module 66 for 30A

// use 100 for 20A Mod

if(imax3<current3)
{
imax3=current3;
}
}
}
if(imax<0.1)
{
imax=0;
}
Serial.print("imax 1"); Serial.print(" "); Serial.println(imax);
if(imax2<0.1)
{
imax2=0;
}
Serial.print("imax 2"); Serial.print(" "); Serial.println(imax2);
if(imax3<0.1)
{
imax3=0;
}
Serial.print("imax 3"); Serial.print(" "); Serial.println(imax3);
power1=imax*230*0.74;
if(power1<20)
{
power1=0;
}
Serial.print("POWER 1"); Serial.print(" "); Serial.println(power1);
power2=imax2*230*0.74;
if(power2<20)
{
power2=0;
}
Serial.print("POWER 2"); Serial.print(" "); Serial.println(power2);
power3=imax3*215*0.74;
if(power3<20)

{
power3=0;
}
Serial.print("POWER 3"); Serial.print(" "); Serial.println(power3);
power=power1+power2+power3;
Serial.print("Max Power");
Serial.println(power);
}

Das könnte Ihnen auch gefallen