Maximum Power Point Tracking (or MPPT) for solar PV panel is a vast subject of interest for many researchers out there.
The reason being that maximum efficiency of any solar PV Panel is 25.89%
Optimisation Techniques like Perturb and Observe, Ant Colony Optimisation, etc are being explored in order to attain the maximum possible power point.
Here is an instructable which you can easily follow to make your own P&O algorithm and implement it using a CUK Inverter.
Hey, and don't worry! I will tell you all that you need to know on the way.
Step 1: What Do You Mean by MPPT in a Solar Panel?
I'm going to use most simple definations here for all to understand. So all those people who love to be "technically correct" and use fancy jargons, pls bear with me!
Pls refer to the I-V curve here. You will notice that the curve between Power and Voltage is highest at one point and then slags of in the neighbourhood.
Also, the I-V curve is getting intersected at a particular bending (or Knee-Point). This is exactly what we call "Maximum Power Point".
Now like I mentioned earlier, the max power that can be obtained from any PV panel is 25.89%. So we need to ensure that we try and hit the max power each time Atleast. That's the reason why we want to make such algorithms and converters.
Step 2: P&O Algorithm
The Perturb and Observe algorithm is an algorithm which is widely used for industrial Solar PV panel systems.
P&O algorithm is essentially just that- you Perturb or disturb any input parameter of the PV panel and wait for the output to settle for you to observe.
It is a simple algorithm, and you can easily code it on MatLAB or any microcontroller.
Pls look at the flow chart to understand the algorithm.
The input parameters here are Irradiance and Temperature.
Pls understand that a PV Panel of specific rating shows negative resistance coefficient beyond a certain temperature. So to say, it starts conducting lesser as the temperature increases.
So, when the irradiance changes, say with clouds passing or the sun changing its position in sky, the algorithm should kick in such that we still obtain the max possible power.
What you want to control as output from your converter is the Duty Cycle.
Pls read further to understand what is this duty cycle and how does it fit our picture.
Step 3: CUK Converter
The CUK converter is not very different than a buck- boost converter.
It is a DC/ DC Converter which gives output voltage greater than or lesser than the input voltage, depending upon the Duty cycle.
This nature of the converter obviously implies that we can easily control the output voltage by controlling the duty cycle by our algorithm.
Kindly understand the working of the CUK converter here::
So now that you are clear with what a CUK Converter is, let us dive into the algorithm and then the converter hardware implementation!
Step 4: Components Required
MatLab 2015a (with Simulink libraries)
1.5mH Inductors - 2 nos
220uF capacitor, 400V- 1 no
0.47 uF capacitor, 450V- 1 no
(PS: 220V Ac is the normal supply in India, pls choose you transformer accordingly)
A Current sensor (a tiny module which you can buy off any website)
A Voltage sensor
A 4Amp 50 ohms variable resistor for the load
PCB board of suitable size
RTF20 Power Diode- 1 no
IRF840 MOSFET- 1no
Heat sinks for the diode and mosfet
MOSFET Stand- 1 no
1 amp wires
Connectors (the black and red ones in the picture)
Arduino Mega or Uno
Hand drill machine (to drill holes in your PCB and attach the connectors)
Nuts and bolts (for the connectors)
Step 5: How to Write the P&O Algorithm
As shown in the previous section, you can use the algorithm to easily make your code on Matlab or on Arduino.
In fact you can write and control your code on Matlab and dump it on Arduino as well!
However, it is inevitable that you write your code on Matlab and call the m-file into you CUK converter simulink model as a "Function".
Pls find CUK converter simulink models here:
Step 6: CUK Converter Hardware Implementation
On the PCB board:
Connect the connectors for Input power supply, diode, MOSFET and output load.
To do this, drill 4 pairs of holes at good distances on the PCB and set the connectors on the board using nuts and bolts.
Next, you have to build your circuit as per the circuit diagram.
Make sure that your Inductors and Capacitors are rated for Atleast 4 Amps (that is 400V or 450V)
Once all connections are done, connect your variable resistor to the load side connectors.
Use a multimeter between the load terminals. Pls note that CUK Converter gives reverse polarity at the output.
Use a Function generator at 10kHz square pulse to test your initial prototype. You can even code an Arduino to generate the 10kHz frequency.
So in a nut shell, your hardware connections should be as follows:
The 220V AC supply comes into your transformer.
PS:: we are initially going to test our prototype with the 220Vac supply. However, once we are satisfied with the performance of the prototype, we can replace it with the solar PV panel.
Transformer steps it down to 12V and gives the supply to the TLP250 driver circuit.
The function generator gives 10KHz square pulses at the IN1 and IN2 pins of the TLP250
The positive output O1 of TLP250 goes to the "GATE" of the MOSFET while the negative output goes to any of the common grounding points on the PCB.
The voltage sensor and the current sensor is connected between the transformer outputs.
They go straight into the Arduino, where they are being monitored for changes in the input supply.
Step 7: Final Step
Once testing with the 220V AC supply is done, you can integrate it on your solar panel and watch it work as you get the maximum possible power!
Pls let me know in the comments if you have any other queries or doubts.
This project was made as part of a final year graduation project.
Hope you have understood it well and will implement it to explore the beauty of these renewable energy resources.
Lastly, pls pls pls do conserve precious resources! It is not a matter of brief awareness anymore! Many places in India, in fact even my city is facing power cuts and consequences of so much pollution.