|Schematic for Arduino-controlled digital buck converter for hub dynamo|
The ZXCT1009 is a high side current monitor that is used as feedback for the PWM signal.
Here's what it looks like on the breadboard:
|Buck converter spaghetti!|
Pretty messy, which is certainly reducing efficiency. Once it's tidily committed to a PCB I hope the efficiency will go up a bit and there won't be as many issues with parasitic inductance. I'd also like to double the switching frequency from 32 KHz to 64 KHz so I can use a smaller inductor.
Here's how my buck converter performs with 2 series LEDs with a Vf of about 5V powered by a Sanyo H27 dynamo:
|Current versus speed of a dynamo powered buck converter at different duty cycles. Switching frequency is 32 KHz|
The advantage of dropping the duty cycle appears just over 20 km/h, although it is quite modest. Above 30 km/h I think the converter is getting a worthwhile amount of extra power, roughly 200 mA (1W or about 40% more). Efficiency is roughly 80%. I need to test other duty cycles and perhaps go below 50%. Thus far it seems like there's not much peak power tracking to be done. A simple implementation would be to leave the duty cycle at 100% below 20 km/h and then drop it to 50% above that. The H27 saturates at around 500 mA, whereas other hub dynamos saturate at slightly higher currents. Perhaps they also have better low speed performance and if they can generate a higher output voltage at lower speed then there might be more of an advantage to using a buck converter.
There is another microcontroller-based dynamo LED driver out there. Its performance seems to be considerably better than mine; it produces surprising amounts of power at low speeds, whereas mine can only begin to harvest more power out of the hub just before it saturates. To be fair, because of my specific application, I am measuring current into two series LEDs rather than total power output, so this is a bit of an apples to oranges comparison. However, there is no denying that this converter seems to perform better at speeds below 30 km/h. I naively speculate that its switching topology is something other than buck, but really I have no idea how it's done or how complicated or expensive the implementation is.
I'm not entirely sure if the complication of a buck converter is worth the effort. Human perception of brightness is commonly described as logarithmic, meaning that a linear increase in actual luminous flux does not result in a correspondingly linear increase in the perceived brightness. I've not really found this put very succinctly on the Internet, so this might be an oversimplification (and hopefully not entirely incorrect).
Whether or not this whole exercise is mostly academic remains to be determined...