My application has a small device, which draws about a watt, and is powered through a small dynamo, backed by a battery:

Current-limited Buck converter scheme

The dynamo generates 33 volts at maximum speed, close to L6902's max input voltage, and I can draw up to 800 mA from it.

A small micro is dedicated to observing the charge levels and commanding the DC-DC converter. The MCU tweaks the output current limiter of the L6902, the idea being that at low speeds less energy should be harvested - the MCU keeps the generator current roughly constant across the speed range.

The problem is that I cannot generate electricity at low rotation speeds, where the dynamo would supply < 8V, below the minimum input voltage of the L6902. Analysis suggests that the prime mover can in fact spend significant time at those lower speeds, where the dynamo will freewheel and the electronics would run off the battery only.

I'm thinking of ways to harvest at least a small amount of power at those lower speeds. One way would be to replace the current step-down converter with a SEPIC one. However, from what I've read, these are notoriously tricky to get right in terms of PCB layout, and usually take up lots of components and board area. Besides that, a SEPIC converter sporting such a wide voltage range (say 2-36 volts) is probably a very unwieldy one.

On the other hand, if I throw in some step-up conversion before the step-down regulator, a lot of shortcuts can be taken: like not using a dedicated chip at all!

With Boost converter in front of the L6902

I can easily wire a PWM output of the MCU to command a MOSFET for a crude boost converter. When I simulate the following schematic, I see that I can boost 3V to 10V at 400 mA output; there's some ripple in the 10V output, but the L6902 shouldn't care.


simulate this circuit – Schematic created using CircuitLab

The MCU will observe the dynamo voltage and adjust the duty cycle in attempt to keep the output at only approximately 10 volts.

I'm new to DC-DC converter design so I'm pondering on the workability of this idea, as there may be caveats I'm unaware of. Particular points I wonder about:

  1. Switching frequency. I'm thinking of experimenting in the 100-300 kHz range, measuring what's most efficient.
  2. Inductor parameters. I'll probably use the same as the recommended in the L6902 datasheet, which is 22µH, 180mOhm, 800 mA max.
  3. MOSFET gate drive. I guess a MOSFET driver is a must?
  4. What to do at fast motor speeds. I can probably just leave the MOSFET off, I will be getting Vout = Vin - Vdiode for the step-up part (of course, there would be resistive losses in the inductor, but those will be trivial at the low currents I'll need). Is this a reasonable thing to do, or should I design a bypass around the step-up part completely when the dynamo voltage is > 8V?

In the end, the question boils down to - whether I should really be scared of SEPIC or not? I can change the dynamo for a lower-voltage one and use a SEPIC IC; nothing in this design is set in stone.

  • \$\begingroup\$ you have not defined current, power or source/load impedance and yet an exceptional wide input ratio of input to output, making this super impractical. Consider two stage stepup to >40V and then buck to 4.2V after you define missing variables. \$\endgroup\$ Commented Mar 7, 2017 at 5:01
  • \$\begingroup\$ The electronics require ~300 mA @ 3.3V, so 1 Watt. If the dynamo is moving fast enough, the extra power available over this 1W should be charging the battery, at up to 1A. \$\endgroup\$
    – anrieff
    Commented Mar 7, 2017 at 5:37
  • \$\begingroup\$ thats not enough specs to start any design \$\endgroup\$ Commented Mar 7, 2017 at 5:41
  • \$\begingroup\$ Let me then restate it like this: the source voltage is 0-33 volts, and we shouldn't draw more than 800 mA from it. We've resigned that under 3.0V we won't try to harvest anything. After that we shall have a DC-DC convertor in constant current mode, where the current should be programmable between 0.3-1.0A. The compliance is exactly 4.2V. The L6902 already can do that, but requires > 8.0V input. The force moving the dynamo will always have ample torque available. In fact, if it would have been easy to put a gearbox, that would have solved the issue entirely. \$\endgroup\$
    – anrieff
    Commented Mar 7, 2017 at 5:49
  • \$\begingroup\$ A compromise might be to use a buck, but one that can go to very high duty cycle. Then you could start generating at 4.3V, say. Instead of 8. Do you know how much power is available from the dynamo when it is supplying 2 or 3 or 4V? Maybe it isn't enough to run your load anyway. So if you try to boost you will overload the dyno. \$\endgroup\$
    – user57037
    Commented Mar 7, 2017 at 6:52

1 Answer 1


I implemented the proposals here and I think I can now confidently answer my own question :)

  1. Making a crude boost regulator yourself is not black magic, it's actually way easier than I first thought. I use a NMOS with somewhat low gate capacitance (AP2310GN) and drive it directly from a PIC PWM pin. The inductor is 33µH / 0.15Ω. My switching frequency is 100 kHz, and the duty cycle can be adjusted in increments of 5%; I selected 55% as my max duty cycle limit after some testing, as it proved to be sufficient in normal circumstances. My step-up is very crude, as it targets to output 11V ±1V (that's a lot of ripple!). What I didn't know initially is that even for this crude output you need a tight feedback loop. I continuously sample the input and output voltage and adjust the duty cycle. This is actually the most problematic part, since my PIC is doing other things, too (mostly servicing queries from a master MCU). The feedback loop runs at around 3kHz, but because of the "other things", it can sometimes fail to adjust the duty cycle quickly enough to stay within the desired band. It is especially problematic if your duty cycle is high and there is a positive voltage transient in the input (which can happen for various reasons). In that scenario, the output voltage can jump way above the 12V upper limit, and in fact exceed the 40V "absolute maximum" input on the DC-DC converter. In my case, I fried the downstream L6902 twice, and after those incidents I added some protection (much larger storage capacitor at the boost output to limit the slew rate, and a TVS diode).

  2. Since the L6902 is a very useful, but somewhat mysterious chip, I'll write my findings here, to help any other engineers that may ponder at its sparse datasheet. I was particularly worried what happens if Vin is lower than 8V - is it bad for the chip, does it try to output anything? I found out that

    • The chip is fine and doesn't do anything below ~4.1 V in; above this voltage the integrated LDO starts to work;
    • If the desired output voltage is about 2V below the input, the switcher does not try to run, i.e. I have around 2V of "dropout". This means that for an output voltage of 4V you might be able to operate the chip at Vin=6V, albeit I guess at reduced performance;
    • The chip becomes quite inefficient above 30V, or at least that's the case in my setup. At 3.7Vout, I=1A it gets mighty hot, more than 100˚C. If you need such high Vin, either run it with reduced current, or place it on a large enough copper pad;
    • As mentioned above, when ST wrote "absolute maximum input: 40V", they weren't joking. I fried one chip by overspeeding the generator - in this incident I was feeding it around 45 volts for a few seconds, and this was enough to kill it;
    • Even though the current limit setting requires a resistor, you can easily modify it to be voltage-controlled (ST has an app note explaining how);
    • The sweet spot, efficiency-wise, seems to be around 10-15V input for 4.1V output, I measured around 85% efficiency there.
  3. Does the whole setup (step-up, followed by a step-down) work? Yes. Is it worth it? Somewhat - I'm able to source small amounts of power even at Vin=2V. The suggested in the comments approach of just one step-down with 100% duty-cycle capability is also fine, but it would require different gearing of the generator, which in my scenario is impossible... BUT, if someone is working on the same problem, them might want to explore this approach. I found the LTC3637 buck regulator, which looks like a good chip for the purpose.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.