Continue to Site

Welcome to our site!

Electro Tech is an online community (with over 170,000 members) who enjoy talking about and building electronic circuits, projects and gadgets. To participate you need to register. Registration is free. Click here to register now.

  • Welcome to our site! Electro Tech is an online community (with over 170,000 members) who enjoy talking about and building electronic circuits, projects and gadgets. To participate you need to register. Registration is free. Click here to register now.

MPPT Design Suggestion

Status
Not open for further replies.

NoKey

New Member
Hi all,
I am going to make a MPPT Solar Charger for 12v lead acid battery. I wish to use buck or sepic converter. A microcontroller will generate pwm to control voltage. Most of the codes I found uses calculation for solar voltage and current to determine maximum power point. Then sets the pwm. Like for example:

Code:
current = adc(pv_current_channel);
voltage = adc(pv_voltage_channel); 
battery_voltage=adc(battery_channel);

power_new = current * voltage;

if (power_old >= power_new) { 
 decrease_duty_cycle ;
else if (power_old < power_new) {
 increase_duty_cycle;
}

power_old = power_new;

I want to know whether it is really necessary to read solar current. Because finally the pwm has to be set to produce about 14v to charge a 12v battery. If the MPP is found at 17v set pwm to 14v, if MPP is found at 18v, 19v or other - set pwm to 14v to charge the battery. So, what is the use of reading solar current, unless you want to display the MPP or other info on LCD etc.? Does it help charging the battery more efficiently? If yes, please tell me how?

What happens if I code like bellow:

Code:
voltage = adc(pv_voltage_channel); 
battery_voltage=adc(battery_channel);

if (battery_voltage < 12 && voltage > 14) { 
 adjust_duty_cycle_to_set_14v ;
}

Even if I read solar current * voltage, at last I have to set pwm for 14 volts. If I straight set the voltage to 14 volts (considering solar voltage is more than 14), the deducted voltage will be converted to current and help charging the battery faster.

I beg your pardon for any mistake might have made by me due to inexperience and lack of knowledge.

Your suggestion please and thanks a lot.
 
If you are charging a battery, the simplest MPPT control algorithm is to just maximize the short time average charging current to the battery.

You should read a bit on PV cells. They are basically illumination based current sources that are capped in voltage by the inherent diode to the cell. No load voltage is the voltage of all the PV cells' in series inherent diode shunting away any illumination generated current.

Maximum power point is the highest voltage where the inherent cell's diode just barely starts to conduct (like 3% of illumination generatored current is shunted down the cells inherent diode.

The trick is the inherent cell diode has a negative temp coefficient just like a regular diode. The hotter it gets, the lower the diode's conduction knee. This is about -2 mV/degC for each cell. If a panel has 36 cells in series then the MPPT will change by about -2 mV/degC x 36 cells or -72 mV/degC. At 25 degs C MPPT is around 0.52 vdc per cells. Voc, voltage open current the diode voltage drop increases to about 0.65 vdc per cell because it is taking all the illumination curent.

A typical panel in summer noon sun can reach 40 to 55 degs C depending on ambient temp of the environment. (Phoenix Az being an oven having panel as much as 60 degs C in the noon summer sun)

The series resistance of the cell is the next variable in MPPT consideration. As illumination current increases and cell produce more output current there will be larger voltage drop across cells equivalent series resistance resulting is a lower MPPT voltage.

Just about all MPPT controller do some 'wobblng' around the last determine MPPT point to find out what direction to change. Efficient MPPT controller balances the searcing to avoid loss of eeficiency due to search algrorithm.
 
Thanks a lot for the reply. Although it is complicated for me to understand clearly :p

Just about all MPPT controller do some 'wobblng' around the last determine MPPT point to find out what direction to change.

After tracking/finding the right MPP by wobbling like others, what should be done regarding setting the voltage? Shouldn't I set it to 14 volts? Or other voltage depending on the newly found MPP? I think it would be 14 volts. If it is finally 14 volts, then the wobbling is useless for battery charging. Unnecessary complication.

If I need to make a meter to find MPP of any solar panel, then I would need to measure both voltage and current. But for charging a battery only measuring solar voltage would be sufficient.

Please suggest. And it would be good for showing me exactly where I am I making the mistake.

Best regards.
 
You control the charge for lead acid batteries by adjusting the current, not the voltage. You do set a maximum voltage, but you only reach that near the end of the charge.

For MPPT, you will adjust the charge current into the battery to whatever draws the highest power from the solar panel.

The voltage and current output of the solar panel are two curves that cross each other. You need to find the point that results in the highest power from the panel. That point will be constantly changing due to the position of the sun, cloud cover, ambient temperature, etc.
 
Thank you ChrisP58.

I know more or less about the curve. For example a panel would generate maximum power at 18v. Obviously it will vary panel to panel. I am telling this just for the discussion.

The pseudo code I earlier posted which is:

Code:
current = adc(pv_current_channel);
voltage = adc(pv_voltage_channel); 
battery_voltage=adc(battery_channel);
 
power_new = current * voltage;
 
if (power_old >= power_new) { 
 decrease_duty_cycle ;
else if (power_old < power_new) {
 increase_duty_cycle;
}
 
power_old = power_new;

Please give attention to the lines of the above code
Code:
.....
if (power_old >= power_new) { 
 decrease_duty_cycle ;
....

It repeats in every 1 second or so to check. Now for example if the sun maintains solar panel volts to 18 for the next 20 minutes (well, it may change, but for now let's say it will not). The PWM duty cycle is decreasing in every cycle - repeats in every 1 second or so .....

So there is a minimum and maximum duty cycle fixed at the beginning of the code. This does like:

if (duty_cycle < prefixed_min_duty_cycle){
duty_cycle = prefixed_min_duty_cycle
}

if (duty_cycle > prefixed_max_duty_cycle){
duty_cycle = prefixed_max_duty_cycle
}

-------------

The sun maintains 18v.
Duty cycle has reached to it's prefixed value within 1 or 2 minutes.
This prefixed duty cycle outputs 14v through buck converter when the input is 18v for approximately next 18 minutes.
The battery also needs 14v to charge.

Now when the sun and panel gives more than 18v, like 20v (considering 20v is not maximum power point), what output voltage should make the buck converter? One may say 16v, and 20-16=4v will be converted to current, which is the gain.

But if I set the buck converter to output 14v, will I not gain 20-14=6v, which is also being converted to current?

Same thing for every solar voltage steps, when it is more than 14v. I would maintain buck output to 14v. Is the gain not similar? If not, what the buck outputs after knowing the maximum or not maximum power point?

Enlighten please :)

Regards.
 
Status
Not open for further replies.

Latest threads

Back
Top