

1. This project is Based on MPPT (Maximum power point tracker) algorithm 2. LED indication to show the low mid and high level of charge stat 3. LCD (20×4 character ) display for displaying power,current,voltages etc 4. Lightning /Overvoltage Protection 5. Protection For Reverse power flow 6. Overload & Short Circuit Protection 7. Logging data through WiFi 8.Charge your Cellphone, tablets any gadgets through USB port Electrical specifications: 1.Rated Voltage= 12V 2.Maximum input current = 5A 3.Load current support up to =10A 4. Input Voltage = Solar panel 12 to 24V 5.power of Solar panel = 50 Watts

PARTS REQUIRED: Resistors ( 3 x 200R ,3 x330R,1 x 1K, 2 x 10K, 2 x 20K, 2x 100k, 1x 470K ) TVS diode ( 2x P6KE36CA ) Arduino Nano ( ACS712-5A ) Current Sensor Buck Converter ( LM2596 ) Wifi Module ( ESP8266 ) LCD display ( 20×4 I2C ) MOSFETs ( 4x IRFZ44N ) MOSFET driver ( IR2104 ) 3.3V Linear regulator ( AMS 1117 ) Transistor ( 2N2222 ) Diodes ( 2x IN4148 , 1 x UF4007 ) Capacitors ( 4 x 0.1 uF, 3 x 10uF ,1 x100 uF ,1x 220uF) Inductor ( 1x 33uH -5A ) LEDs ( Red, Yellow, Green ) Fuses ( 5A) Libraries Required For Arduino IDE : TimerOne.h – Click Here To Download This Library

LiquidCrystal_I2C – Click Here To Download This Library Remember: Make a New Folder ( Folder name should be same as library names like TimerOne and LiquidCrystal_I2C. Paste these Two Folders in Arduino/LIbrary. ——————————————————————————— Model of Arduino Based MPPT Algorithm Charge Controller | Alternative energy

Project Flow Chart : Starts reading its analog inputs: The voltage supplied by the PV panel

The current drawn by the PV panel

The voltage of the battery Once all inputs are read, it calculates the current power supplied by the PV panel by multiplying read voltage by reading current. Then the charging configuration is set according to the above readings: If the supplied PV power is very low (night time, cloudy weather, dirty panels) the charging state is set to OFF , The MOSFET driver is shut down, and the PWM rate is set to 0%

If the supplied PV power is low and the battery is not fully charged, the charging state is set to ON , the MOSFET driver is enabled, and the PWM rate is set to 100%.

If the supplied PV power is medium to high, and the battery level is not fully charged, the charging state is set to Bulk , the MOSFET driver is enabled, and the PWM rate is set to 100%.



If the supplied PV power is medium to high, and the battery level is fully charged, the charging state is set to Float, the MOSFET driver is enabled, and the PWM rate is set to Maximum.

The next task is the settings of the output load control: If it is night time and the battery voltage level is higher than the “Low Voltage Disconnect” threshold which is 11.9V, the output is enabled and the battery supplies its energy to the load. If it is day time and the battery voltage level is higher than the “Low Voltage Disconnect” threshold which is 11.9V, the output is also enabled, but this time the load is energized by the battery and by the excess energy supplied by the PV Panel

If the battery voltage level gets below the “Low Voltage Disconnect” threshold which is 11.9V, the output gets disabled and the load gets disconnected. The next step is to set the Battery voltage indicators by turning on the corresponding LED: If the battery voltage level is lower than 11.9V, then the RED Led is turned on.

If the battery voltage level is higher than 11.9V but lower than 14.1V, then the GREEN Led is turned on.

If the battery voltage level is higher than 14.1V, then the YELLOW Led is turned on. Next, the Arduino updates the information displayed on the LCD screen according to the above processes and then starts another reading of the inputs to start the loop phase process once again, and then it continuously repeats this loop over and over.

This Simulation has been designed in Proteus Software 8.6 version. You can make your own by using Arduino Library for Proteus and a simulation tool known as Proteus. Project Schematic Diagram Explanation

Section A: is the input of the system which is the power supplied by the solar panel. The fuse F1 and TVSs represent the protection network against any high current that could happen to the circuit. The Voltage divider network (R1, and R2) are used to scale down the voltage provided by the solar panel (VPV) so that the maximum voltage supplied to the Arduino analog input (A0) doesn’t exceed it the maximum voltage limit which is 5V. The output voltage of the voltage divides is one-sixth (16) of the input voltage. So the maximum value for the PV panel voltage should not exceed 30V. VA0= R2R1+R2 VPV= 20100+20 VPV= 20120 VPV= 16 VPV Section B: is the current sensing network for the power supplied by the PV panel. The ACS712-5 is a hall-effect current sensor chip whose output is an analog signal proportional to the current passing through the chip. The capacitor is a general filter capacitor. The output of the current sensor is connected to the second analog pin of the Arduino (A1). Section C: represent a blocking circuit that allows the current to flow in only one direction which is from the PV panel to the charging circuit. The aim of this circuit is to protect the PV panel from the battery voltage when the solar panel is not producing electricity. The MOSFET transistor Q1 gate pin is connected to the MOSFET driver chip (IR2104) through the diode D3. So that Q1 is engaged only when the MOSFET transistors are operational. Section D: is the charging network. The MOSFET driver chip will control the MOSFET pair Q2 and Q3 in a push-pull configuration to enable the current to flow inside the coil. The output of this network is connected to the battery to be charged. Section E: is another voltage divider connected to the third analog pin (A2) of the Arduino. This network feed the voltage of the battery into the Arduino to measure it. VA2= R8R7+R8 Vbat= 20100+20 Vbat= 20120 Vbat= 16 Vbat Section F: is the output load control circuit. The Arduino output pin (D6) control the base of the NPN transistor Q5, which in turns control the gate of the MOSFET transistor Q4 responsible for allowing/ block the current to flow from the battery to the load. Whenever D6 is low (0V), the base of Q5 will be high, and the MOSFET Q4 will be passing the current. When D6 switch its state to High, (5V), the base of Q5 will be High, and the MOSFET Q4 will be open circuit and the current flow will be blocked. Section G: is the Push-Pull MOSFET network driver. It drives the MOSFET transistors Q2 and Q3 based on the signals generated by the Arduino board at pins D8 and D9. Section H: is the voltage regulator circuit responsible of supplying the Arduino with the rated voltage (5V). The input to the regulator is the battery. The output of the regulator are mainly the Arduino board and the LCD display. Section I: is the serial LCD display. It uses the I2C protocol to communicate with the Arduino Board. Section J: is the visual indication LED used to state the voltage level of the battery. The resistors R11, R12, R13 are current limiting resistors used to prevent the voltage supplied by the Arduino (5V) from damaging the LED which requires only 2 volts to operate.

WiFi Data Logging by using a Wifi module ESP8266

Read This Article: Learn How to Setup the Wifi Module ESP8266 by Using Just Arduino IDE After Reading The Above article I am assuming that you have successfully connected your ESP8266 module to your Wifi. Go and Sign Up in https://thingspeak.com/

Make a New Channel and write “Solar Panel Data” in Field 1 and leave other fields blanks and save it.

You will Get API key, Copy that Api Key and Paste in Source Code.

Done Project Images ( You can Use Arduino UNO, MEGA OR NANO + MORE MOSFETS IN PARALLEL ) + I have added Extra Functionality by adding small 500w Inverter along with Power outlet and Digital Ac voltmeter ( Optional)

Successfully Made by others | Alternative energy

Schematic Diagram ( UPDATED ON 7th Feb 2020 )

“Do not forget to install all the necessary libraries before uploading the code to Arduino Nano ” If you found any difficulty while making this project so don’t hesitate to ask first we are here to help you 24 hours a day and 7 days a week 24/7 thanks