Arduino Based MPPT Charge Controller | Alternative energy |renewable energy sources | clean energy
- 1 Arduino Based MPPT Charge Controller | Alternative energy |renewable energy sources | clean energy
- 2 Abstract
- 3 What is Mppt ( Maximum power point tracking)?
- 4 How MPPT works? Why 150W solar panel does not equal to 150 w?
- 5 Specification of the project
- 6 Electrical specifications:
- 7 PARTS REQUIRED:
- 8 Libraries Required For Arduino IDE :
- 9 Model of Arduino Based MPPT Algorithm Charge Controller | Alternative energy
- 10 Project Flow Chart :
- 11 Project Simulation in Proteus by Using Arduino Nano ( UPDATED 2019)
- 12 WiFi Data Logging by using a Wifi module ESP8266
For maximizing a photovoltaic (PV) power, continuously tracking the maximum power point (MPP) of the system is highly required. MPP of the PV system depends on solar radiation conditions, ambient temperature, and the load demand. Maximum power point tracking (MPPT) techniques can catch MPP of PV system. Such techniques can be realized in many various forms of hardware and software. The goal of this project was to develop, construct, and test a working solution to the MPP problem with a limited budget. This tutorial Contains the general circuit of MPPT, the panel cell and it is a formula, about how MPPT works, the required parts and sub-circuit. we choose buck converter in our project and explained how to use Arduino and how to apply it in Proteus.
What is Mppt ( Maximum power point tracking)?
We use MPPT algorithm to Extract the maximum available power from the Photovoltaic module under certain conditions. MPPT is a Most Popular tool that helps us to use Solar Energy (Renewable Energy Source) in an efficient way. If we want to Reduce the Graph of Carbon footprints then we must need to move towards clean Energy which is called Renewable Energy ( Energy we can get from Natural resources) Like SOLAR, HYDRO, WIND e.t.c otherwise we will directly move toward Global Warming. Every Country needs to Move towards the Green Energy especially CHINA because it is the Main contributor by producing 63% Co2 | Alternative energy.
How MPPT works? Why 150W solar panel does not equal to 150 w?
For example, you bought a new solar panel from the market which can deliver 7 amps current, under charge the setting of a battery is configured to 12 volts: 7 amps times 12 volts = 84w (P=V*I) You lost over 66 watts – but you paid for 150 watts. That 66 watt is not going anywhere, but it,s due to the poor match of the solar output current and battery voltage.
After using MPPT algorithm we can get the Maximum available power Battery gets is now 12 amps at 12 volts Output power is equal to p= V*I p=12*12=144w Now you still have almost 144 watts, and everyone is happy.
Specification of the project
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
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
- 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 :
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.
Project Simulation in Proteus by Using Arduino Nano ( UPDATED 2019)
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
- 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.
Click Here To Buy Source Code + Schematic Diagram + Proteus Simulation File (Arduino UNO & Nano) + Complete Project Report (50 pages) From Our Official Online Store
PCB-Board By Electronicslovers ( 31 January 2019)
“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