// 1 is eqv to .004673
solar_volt=(sample1*4.673* 3.127)/1000;
bat_volt=(sample2*4.673* 3.127)/1000;
Serial.print("solar input voltage :");
Serial.println(solar_volt);
Serial.print("battery voltage :");
Serial.println(bat_volt);
// ///////////////////////////PWM BASED CHARGING ///////////////////////////////
/////////////////
// As battery is gradually charged the charge rate (pwm duty) is decreased
// 14.4v = fully charged(100%)
// 12v =fully discharged(0%)
// when battery voltage is less than 12v, give you alart by glowing RED LED and
displaying "DISCHARGED..."
if((solar_volt > bat_volt)&& ( bat_volt <= 12.96 ))
{
analogWrite(pwm,242.25); // @ 95% duty // boost charging// most of the charging
done here
Serial.print("pwm duty cycle is :");
Serial.println("95%");
}
else if((solar_volt > bat_volt)&&(bat_volt > 12.96)&& (bat_volt <= 14.4 ))
{
analogWrite(pwm,25.5); // 10% duty // float charging
Serial.print("pwm duty cycle is :");
Serial.println("10%");
}
// // shut down when battery is fully charged or when sunlight is not enough
else if ((bat_volt > 14.4) or (solar_volt < bat_volt))
{
analogWrite(pwm,0);
Serial.print("pwm duty cycle is :");
Serial.println("0%");
digitalWrite(GREEN,LOW); // green LED will off as no charging is done during thi
s time
}
///////////////////////////////////////// BATTERY STATUS INDICATOR ////////////
////////////////////////////////////
//The map() function uses integer math so will not generate fractions
// so I multiply battery voltage with 10 to convert float into a intiger value
// when battery voltage is 6.0volt it is totally discharged ( 12.96*6.94 =89.942
4)
// when battery voltage is 7.2volt it is fully charged (14.4*6.94=99.936)
// 12.96v =0% and 14.4v =100%
charged_percent=bat_volt*6.94;
charged_percent=map(bat_volt*6.94, 89.9424 , 99.936 , 0 , 100);
/*
if (solar_volt > bat_volt)&&( bat_volt <=14.4))
{
Serial.print (charged_percent);
Serial.println("% charged");
Serial.println("");
Serial.println("***************************************************************
*******************");
}
else if (bat_volt < 12.96)
{
lcd.print("BAT DISCHARGED..");
}
// Red LED will OFF when battery is not discharged
if (bat_volt > 12.96)
{
digitalWrite(RED,LOW);
}
//Green LED will glow when battery is fully charged
if(bat_volt >=14.4)
{
digitalWrite(GREEN,HIGH);
}
}