Basically my inspiration is this guy's work. A buck converter that provides MPPT as long as the solar voltage is higher than the battery voltage. But I want to extract power to the battery even at low voltage.

I tried building/testing a small 4-switch single-inductor buck/boost but I blew a couple of capacitors on the output. My understanding is - this was because, while switching one side (buck xor boost), I was unable to supply a 100% duty cycle to the opposite side. The interference of the PWMs on both sides caused some serious current/voltage spikes. So I thought of this: My buck/boost idea

  • Input: Solar panel or rectified wind turbine output.
  • V_in, I_in for power throughput tracking, and V_out for battery level checking
  • H-bridge with NMOS/PMOS setup so there's never a short and (I think) simplifies driving circuitry. The project Tim Nolan did (see link in first paragraph) uses a 50kHz PWM. I would like to use logic-level MOSFETs, but will I be able to switch them at 50kHz from the Arduino?
  • 2-to-1 multiplexer set up so that if one side is receiving a PWM signal, the other side is fully ON and not interfering with the power flow. So just one PWM signal is needed (in this case, Arduino using the Timer1 library). Freeing other pins for SD datalogging, communications, alternator RPM measurement, whatever.
  • Output: A (lead acid) battery will be connected to the output, which will pretty much prevent the output voltage from actually changing, but the MOSFET switching should be able to match the impedance (is that the correct terminology?) to the input and extract maximum power.

The benefit (I think) is that this should be scalable to a wide range of DC inputs / battery outputs with suitable sensing resistor / MOSFET / minimal code changes. Using lead acid / deep cycle batteries since those are more tolerant to abuse.

Your inputs are welcome! I guess the question is, is this a feasible design?

EDIT: Just found the CircuitLab thingy. Mocked up a slightly more professional-looking picture.


simulate this circuit – Schematic created using CircuitLab


4 Answers 4


The main issue is the PV panel voltage drops the MPP voltage with solar power and on a 19.4Voc PV panel that Vmpp is now dropping from 14.5V@100%sun to 13.6V@50%sun to 10.9V@10%sun. So now you need a boost. So there is much more work to do to define how to regulate the PWM with Voc, Vmpp and Vbat & SoC.

It turns out the panel threshold voltage (1%current) also drops with %sun. So using a solar sensor you can bias the regulator voltage to77% of this Voc(1%A) and that will be your Vmpp reference voltage from a small solar cell or similar diffused response photo diode.

This means you need your regulator to control both the supply side voltage and the demand side current to match at various currents and voltages to achieve this optimal power transfer, so as the demand does not exceed the optimal supply and the supply does not exceed the float voltage of the battery.

This is one solution using load line analysis. However, I prefer to use a photo sensor to prevent hunting and instability for determining the MPP cheaply from a solar sensor.

ESR of PV is low and fixed at all PV voltages for %sun> 50. At no load I rises sharply then reaches a curved slope then rises sharply again below Vmpp at low voltage. 0.5 to 25 Ohm range in this 50W example.

If you wish to harvest the meagre power below 20% sun, your regulator losses must be less than the gain of a few Watts using a boost regulator with a battery above the Vmpp.

This SMPS can be any type that accepts current and voltage controls to match the load line with your buck-boost arrangement. But gains in power must exceed fixed losses.

Since load is much lower ESR than the source, you will want a big cap on the PV with a much lower ESR than the PV for stability and noise.


I guess the question is, is this a feasible design?

The H-bridge buck-boost circuit is becoming quite common these days for your type of application so unless you have a particular reason to do all the work discretely I would recommend starting with something like this: -

enter image description here

  • \$\begingroup\$ Can I use those ready ICs to perform MPPT, is the main issue I'm facing. The ones that have MPPT built-in are few and far between, and expensive to boot. \$\endgroup\$
    – Boloar
    Mar 3, 2014 at 1:19
  • 1
    \$\begingroup\$ You can if the IC has the necessary current and voltage regulation inputs, the one Andy is suggesting has some capabilities, whether those are sufficient or not is a question only you can answer. The main point here is that designing an H bridge buck-boost from scratch is a very complex, time consuming task, and unless you need special voltages or currents, which you don't, you are better off searching for something ready made. \$\endgroup\$ Jul 30, 2020 at 14:11

There are several issues with your proposed schematic.

  • You have your MOSFETs backwards. You want the drains connected to the coil, not the sources. Put the P-channel devices on top. The way you have it, the transistors will always have their threshold voltage across them, wasting a lot of power.

  • Once you've done the swap, you'll need to tie the gates of the side that isn't switching low (rather than high) in order to turn on the high-side MOSFET.

  • You can't drive the high-side MOSFETs in any case with a ground-referenced logic voltage. You'll need level shifters of some sort — either discrete transistors, or ICs specifically designed for the job.

  • It's silly to use an inverter on the select input of a mux. Just swap the other two inputs instead.

  • You can't use OA1 like that. It would require a supply voltage that's higher than any other voltage in the circuit, and the output would be referenced to the incoming solar/wind voltage, which isn't particularly useful. Note that the reference you cited uses a special high-side current-sensing IC.

  • I'm not sure what M5, your N-channel "blocking" transistor is supposed to be doing (can't you just avoid turning on M1?), but again, you probably want a P-channel device here so that you don't need to drive its gate above the "DC in" voltage. Make sure that the body diode doesn't conduct when you don't want it to.

  • You're going to need to add some filtering on "DC in" so that you're not trying to draw a pulsing current through the solar panel. If you're doing MPPT, it really needs to be a steady DC current.

  • \$\begingroup\$ Thanks for your input - I kind of mocked up the circuit there and didn't pay good attention, just to get the general idea across. But - correct me if I'm wrong - the vibe I'm getting from this is that the circuit is a feasible design? \$\endgroup\$
    – Boloar
    Mar 2, 2014 at 15:43
  • \$\begingroup\$ Generally, yes. See the additional points I've added above. But remember, engineering is all about the details! \$\endgroup\$
    – Dave Tweed
    Mar 2, 2014 at 16:41

You are on the right track.

A bridge driver will solve many problems. You can use all N-MOSFET and do not have to worry about both transistors conducting at the same time.

This one is great driver: Infineon ir2103

About Arduino the ATtiny402 can be used. Lot of information about fast PWM and code samples.


Your Answer

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

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