Wednesday, November 16, 2011

Specific aim 2: a dynamo digital buck converter

I am developing hardware and software for a dynamo peak power tracking system.  Maximum Power Point Tracking (MPPT) is something I learned about over on a thread at CPF and have subsequently become fascinated about.  Widely applied in the solar industry to extract the maximum available power from a photovoltaic array under all conditions of illumination, MPPT is, in essence, a way to tweak the load resistance to reach a peak power point on a current/voltage curve under dynamic conditions.  Bicycle dynamos operate primarily as constant current sources. They reach a saturation current at reasonably low speeds and the only extra power to be gained from a 'passive' system is through the increase in voltage that comes at higher speeds.  Passively extracting more power is done typically by adding more LEDs in series. If you have 1 LED with a Vf of 3.0V you can get a maximum of 3V x 0.5A = 1.5W.  If you add a second 3.0V LED in series you can get 6V x 0.5A = 3.0W, a third gives you 9V x 0.5A = 4.5W, etc.  The problem here is that for each LED added there is an increase in the minium speed at which the dynamo reaches Vf of the series chain. Below that you get no light, or, at best, very blinky lights.  However, there are some clever passive low speed boost circuits out there to get more power at lower speeds.

Today's power LEDs have maximum currents in the range of 1-3A, so a dynamo that saturates at 0.5 or 0.6A is not able to run these even close to their maximum theoretical outputs.  I want to a employ a single LED design for front and rear lamps, so running the LEDs at more than the dynamo saturation current would be useful.  In order to pull maximum power out at all times, a switched mode buck converter can be employed.  I'm working on a digitally controlled synchronous buck converter that uses LED current and bicycle speed as feedback.  Thus far I've developed a peak power tracking system that works with a bench top supply.  Essentially, under fixed current conditions (like a hub dynamo), it modifies the pulse width of the switching signal to maximize the power from the available voltage.

200 mA in, 370 mA out!
LED Current vs pulse width duty cycle at different input voltages where Vf of the series LEDs is 4.1V

Putting dynamo LEDs under microprocessor control may seem excessive, but I'm not the first to do it.  In theory, it should be possible to drive LEDs up to and beyond 1A at cruising speeds, with the obvious caveat that the extra power has to come from the cyclist's legs!

Buck converter hardware

Hardware is under Arduino µC control
The software still needs some significant tweaking to work with the fluctuating DC of the rectified dynamo output.  I'll post a full description of this buck converter soon, hopefully once I have the peak power tracking working with a dynamo.  I'm using the Arduino platform for development, which is great and easy to use, but I did need to employ a few under the hood tricks to get it working. I will ultimately have to switch to another, smaller AVR microcontroller for the final design.


Taras said...

Would you mind sharing your code + circuit+ parts list? I imagine it's similar to but it would be nice to confirm

minisystem said...

@Taras - I will, eventually. What I have going on right now is a work in progress - definitely not ready for public scrutiny yet! I had a look at Tim Nolan's code when I started this, but must admit that I couldn't make head nor tails of it (I have an especially hard time interpreting other people's code). I'm working with a basic hill climbing/perturb and disturb algorithm. The circuit itself is a very basic buck converter with a MOSFET driver specific for use with synchronous buck converters. You can find a schematic over in this CPF thread: