maximum power point tracking battery charger

bobc

10 kW
Joined
Jan 20, 2011
Messages
993
Location
Knutsford England
Just a quick note about a project I'm working on; it's a solar charger for a 24V lead acid battery. It's a small (and I mean small - 25mmx40mm) PCB which runs from a 20V PV array - the sort you'd use to charge a 12V battery with a shunt regulator.
To do the maximum power point thing, it has a AVR ATtiny5 microprocessor on it - this thing has just 6 legs but that's more than enough to measure array amps and volts and provide a control output to set the array voltage.
Progress to date on 1st pass circuit: the "float charge" control works beautifully (controls output to 28V max) and the "bulk charge" controller, where it does its maximum power point tracking thing, also works beautifully, controlling the array output voltage to anything you want (provided it's lower than the array open circuit voltage of course...).
We got the maximum power point tracking software going today - brilliant fun, you can see the array volts stepping up and down as it searches for the maximum power point (I use the perturb & observe or hill climbing algorithm) but there's a fair bit of optimisation to be done in that area still.
So I've just sent off for the 2nd generation PCBs (with errors corrected and redundant elements removed) - they'll be back in 10 days.
I've done the circuit for my brother's gate automation business, but it looks as though they will be commercially available from a firm in Ashton - we'll see.
solarmpp_zpsc10784e8.gif

On the prototype the battery supplies about 2mA to the circuit, just in the battery voltage feedback path - I can reduce this by a factor of 10 or so in the next spin.
The circuit should get 10 to 30% more juice out of a given panel, so reduced PV panel cost should pay for it. It just uses low cost generic parts, the tiny5 is just 22p.....
 
Just a bit of an update: the PCBs arrived last week & no.1 was thrown together - works great. We're now looking at converter quantisation errors, search step sizes and rates & similar stuff to get it to work as well as possible. Because of quantisation issues it doesn't work so well at light loads so we're experimenting with a search step size determined by current supplied (at low currents use a bigger step). We're also writing our own arithmetic routines because the generic GNU 'C' compiler is a bit less than optimal in the poorly resourced ATtiny5/10. ANyway I should get my ebay programming dongle (£2 delivered ;^) in the next few days & I can move development home. I guess I'm going to have to do a few different sizes of this thing, the one pictured above is really only good for a 30W panel.
For anyone who's interested, the active devices on the board above are:
IC1 UC3843 current mode switchmode control chip
IC2 AVR ATtiny10 microcontroller
U5 Dual op amp on LM538 footprint (BTW a LM538 is not quite fast enough for this job....)
U1 Dual N channel MOSFET 30V 5A device
In normal operation all connections are via J2, 2 wires to the battery and 2 wires to the PV panel. J1 is the programming interface to the micro (it amuses me just how much bigger this is than the micro itself...)
It now drains just 200uA from the battery in the dark. Battery float voltage is set to 28.0V - this is adjustable/settable by a "tweaking" resistor.
When I get it going to my satisfaction, if anyone's interested, PM me & I can let you have details, source code, schematics etc.

BTW we're also looking at the "incremental conductance" method for optimisation, but I have little confidence that this will prove practical.
 
still excited about this to take the 12v load off my honda insight DCDC with three maplins suitcase 2.4w panels and a 9ahr sla agm ebike battery and dc dc drop down circuit. will catch up in a few weeks when both our avr programmer dongles have arrived.
 
pictures of circuit samples being built up
mpptracktop_zpsff985028.jpg
mpptracbot_zpsd08218b9.jpg

Today I improved converter resolution by oversampling & this improved the low light optimisation by loads. There was also a slight power converter issue due to the speed of the opamp - these are now changed to THS22I & it all works better. Still not quite there with the software but looking pretty good ;^)
 
Performance measurements of the max power search algorithm (hill climber);- with enhanced maths accuracy I see 190mV std deviation on array voltage (on max power voltage of about 17V) due to searching up & down. by curve fitting to the array power measurement curve that uquates to a power loss of 0.05% due to the search function - peanuts compared to what I lose in the PWM controller and the shunt ;^)
I've made a set of 30W boards, but I'll make one 50W board just to see if anything gets too hot: looking damn good so far!
If I do a mk3 - I'll put in an amps measurement zero null function in the micr0 start- up code - should improve things a tiny bit - it will get run at least once a day ;^)
 
Nice - I'm woring on one at the moment, larger scale (ie. 1.5Kw or so), using a PIC microcontroller and observe/peturb.

The biggest pain at the moment is getting the frequency right in the hardware PWM for the best efficiency for the Buck.

I'm designing this for a wide voltage input/ouput and current range, obviously the inductor value is othe one thing that needs to stay fixed.

My frequency calc is F(Khz) = ((Vin-Vout)*(Vout/Vin)*(1/0.3Iout)*1000000) / 1000L

Where
Vin/Vout in volts
Iout in amps
L in uH

I'm starting at 300V-350V in, 250uH inductor and 72V 100AH SLA battery bank (so 90V in float) and 10-15A output. Design will probably be scaled up potentially to 3Kw, but starting half-scale at the moment. IGBT's of course, mosfets are useless that these voltages.

Couldn't come at the cost of a commercial unit at this output level - thousands!
 
Don't discount mosfets for this kind of application.
Also silicon isn't the only option any more - checkout
http://www.cree.com/power/products/1200v-sic-mosfet-packaged
you can run a 1000V converter at 100kHz potentially with these
Bob
 
bobc said:
Performance measurements of the max power search algorithm (hill climber);- with enhanced maths accuracy I see 190mV std deviation on array voltage (on max power voltage of about 17V) due to searching up & down.

Nice project. I've also found the P&O algorithm to work great but could not get the incremental conductance to work well. I used a step of +/-64mV and update rate of ~50Hz and it locks on the MPP very quickly even with fast changing condition, it is actually used on a solar RC plane controller.
Why do you need a dual opamp? did you consider integrated solution like the MAX4372, it simplifies thing a lot.
 
Hi walls99
the3843 is there for historical & development & cost reasons. The dual opamp is there because - I need 1 op amp to step up the shunt voltage (reduce the waste heat/energy in the shunt) an I need another to "take over" from the error amplifier inside the 3843 when it's doing the MPP bulk charge rather than the 28.0V float charge. When I'm in the MPP mode, I actually use the feedback to control the input (PV array) voltage rather than the load (battery) voltage - and that feedback loop is controlled by the external op amp. In float mode I use the 3943's internal voltage loop error amplifier in the good old fashioned way.
I also use about 64mV steps - but by the time it goes round the whole system the rms deviation of the PV voltage from its optimum is 190mV. This is conveniently the "Std. dev measurement" on many DSOs & can be measured over a couple of minutes to give a nice repeatable system performance test. The settling time of the control loops on my system dictated a step rate of 10Hz. This reacts within a second or two, good enough I reckon.
I can't see how incremental conductance can possibly work well in real life - measuring dI/dV ofer a tiny dV step with real life ADCs is going to be monstrously inaccurate isn't it? I'm sure it's lovely in a simulation.... ;^)
 
bobc said:
Hi walls99
the3843 is there for historical & development & cost reasons. The dual opamp is there because - I need 1 op amp to step up the shunt voltage (reduce the waste heat/energy in the shunt) an I need another to "take over" from the error amplifier inside the 3843 when it's doing the MPP bulk charge rather than the 28.0V float charge. When I'm in the MPP mode, I actually use the feedback to control the input (PV array) voltage rather than the load (battery) voltage - and that feedback loop is controlled by the external op amp. In float mode I use the 3943's internal voltage loop error amplifier in the good old fashioned way.
I also use about 64mV steps - but by the time it goes round the whole system the rms deviation of the PV voltage from its optimum is 190mV. This is conveniently the "Std. dev measurement" on many DSOs & can be measured over a couple of minutes to give a nice repeatable system performance test. The settling time of the control loops on my system dictated a step rate of 10Hz. This reacts within a second or two, good enough I reckon.
I can't see how incremental conductance can possibly work well in real life - measuring dI/dV ofer a tiny dV step with real life ADCs is going to be monstrously inaccurate isn't it? I'm sure it's lovely in a simulation.... ;^)

I see, thanks for the clarification. Having tried it, I think the "incremental conductance" would requires 16-26bit resolution ADC and some filtering which would make it a lot slower than the P&O.
I use a digital loop control with relatively slow PWM (80Khz) and currently working on upgrading to a hybrid solution like you do with high frequency switching to reduce weight and size of the system, since it's for a RC plan. I suggest you have a look at the MCP19111, I think it's possible to implement a solar battery charger with almost no other analog circuitry by applying the MPPT on the battery side which can be even further simplify to only maximizing the charge current.
 
That looks very slick walls - I'm right in thinking that it only does the MPP thing & doesn't limit/control output volts too? On mine there are 2 error amplifiers to do the 2 controls.
Hope my garbled notes were of some help or interest to you! I'd be interested in the performance of the plane when you get that far!
I now have 625W of PV power on my house wall feeding 200Ah of 12V battery - just shunt regulated for now, but an arduino based MPP will be applied in time for next summer. The shunt regulator heats my hot water cylinder....
dnmun - our projects maximise the electric power taken off the PV array, they make no attempt to point the array dynamically in the best direction.
Actually, for that particular job, RS components used to sell a photocell that was in 4 quadrants - but I've not seen anything like that in years....
 
bobc said:
I'm right in thinking that it only does the MPP thing & doesn't limit/control output volts too? On mine there are 2 error amplifiers to do the 2 controls.
The MCP19111 integrates an analog-based PWM controller and a PIC Micro-controller, the output voltage is fully programmable in fine step, so the plan is to "perturbate" the output voltage and "observe" the input power to maximize it...
 
Back
Top