Are You Down With MPPT? (Yeah, You Know Me.)

Solar cells have gotten cheaper and cheaper, and are becoming an economically viable source of renewable energy in many parts of the world. Capturing the optimal amount of energy from a solar panel is a tricky business, however. First there are a raft of physical prerequisites to operating efficiently: the panel needs to be kept clean so the sun can reach the cells, the panel needs to point at the sun, and it’s best if they’re kept from getting too hot.

Along with these physical demands, solar panels are electrically finicky as well. In particular, the amount of power they produce is strongly dependent on the electrical load that they’re presented, and this optimal load varies depending on how much illumination the panel receives. Maximum power-point trackers (MPPT) ideally keep the panel electrically in the zone even as little fluffy clouds roam the skies or the sun sinks in the west. Using MPPT can pull 20-30% more power out of a given cell, and the techniques are eminently hacker-friendly. If you’ve never played around with solar panels before, you should. Read on to see how!

Power Points

Let’s start at the ends. The specs for any cell will include an open-circuit voltage and a short-circuit current that it produces under a given illumination. If you don’t have the spec sheet, you can measure these yourself. Connecting a voltmeter to the cell and putting it in the sun measures the former, and swapping out an ammeter and measuring the current measures the latter. So far, so good. But neither of these configurations produces any power, and power delivered over time is what charges up your batteries.

solarcellPower equals voltage times current, P=IV. The open-circuit power is zero because no current is flowing, and the short-circuit power is zero because there’s no voltage difference across the terminals (ideally). Somewhere between these extremes of infinite resistance and zero resistance lies the maximum power point.

Finding it by yourself is as easy as attaching a variable load resistor to the solar panel and noting down the voltage across and current through the resistor at various resistances. Write I with V down as you vary the load resistance and pick the highest value. Done! (Yellow is the current vs. voltage curve, and green is the power.)

If you’re doing this by hand, the first thing to mention is the power handling capacity of the resistor that you’re using to measure the current. A big twenty-watt panel is going to literally burn through a standard 1/4 watt resistor faster than you can say “what’s that smell?”. [Julian Ilett], in his lengthy YouTube video series on creating an Arduino-powered MPPT battery charger, uses a large array of miniature bulbs (LAMB) that he can screw into their sockets to vary the load. We’ve also seen various controllable dummy-load projects ranging from small to very large. That’s ideal, but it’s a project in itself.


For a quick lash-up that will work for small-to-medium cells, you could do worse than a potentiometer manually controlling the current through a heatsinked power MOSFET. This circuit doesn’t offer precise control of the current, but you don’t need it either, and heck, it only requires two parts and is good for a few watts. It won’t work below the gate threshold of the FET, which was around 3.5 V, so it’s only good for bigger panels or bright sun.

Stay in the Zone

Once you have a good idea about how your panel runs under various loads, you can start designing a system to optimize this for you, and switch out the dummy load for something useful like a battery. An MPPT automates the above current and voltage measurements and includes a voltage converter to keep the solar panel running at its maximum power rating. If we’re interested in charging batteries at a lower voltage than the cell’s maximum power voltage, this converter can be as simple as a buck converter: a fast switch, a large inductor, and a freewheeling diode (or second switch).

buck_circuit_diagramWe usually think of a buck converter as taking an unknown input voltage and stepping it down to a fixed lower output voltage by varying a PWM duty cycle. Here, the PWM is set to maintain the desired voltage on the input from the solar panel so that it’s operating at peak power. Whatever charge passes from the panel into the inductor eventually makes its way downstream to the battery, minus switching and resistive losses in the inductor.

TI has an app note (PDF) that describes possible control strategies in overview. These can be as simple as operating the panel at 80% of it’s open-circuit voltage, or as complicated as sweeping the full range and picking the maximum directly. Just be aware that any adaptive strategy has to take into account that external lighting conditions can be changing continuously as the controller is trying to find the peak.

In particular, if you choose what TI calls a “perturb and observe” strategy — varying the panel voltage a little bit and observing whether more or less power results — changes in the light hitting the panel can make a perturbation look like it improves the panel’s efficiency when really it was just a cloud fading away. Indeed, in [Julian]’s video on automating the power controller you can see it falling into this trap, and we suspect it’s because his algorithm reacts too frequently. A slower feedback loop would be better in our opinion: you don’t mind losing a tiny bit of total power by failing to account for every crow that flies over the panel, but still you do want to drop the buck ratio when it becomes cloudy over a few minutes. There’s tons of room here for experimentation.

With Great Power…

Nature controls the inputs, and your MPPT controls the solar panel’s working voltage to maximize power. The downstream voltage and current are left to fluctuate. If you’re doing something forgiving like charging a lead-acid battery, you can pretty much just dump straight into the battery, taking care to shut off the solar panel when the battery is fully charged. Other than possible overcharge, which you could guard against by reading the battery voltage, a car battery will soak up whatever current you hand it.

img_9195If you’re charging up a battery with more sensitive chemistry, you may need further voltage or current limiting. We’re currently experimenting around with cheap eBay 5 V lithium-ion chargers and old laptop batteries. [Rusdy] has more real-world data on his e-bike charging setup, but there he’s using a step-up converter to charge higher-voltage battery packs.

A panel-to-battery MPPT and charge controller that makes charging lithium-ion batteries simple and efficient is obviously a great thing to have. We’ve had a number of MPPT charger projects on and they’ve even done well in the Hackaday Prize. There are many open designs out there for you to draw inspiration from, or just copy.

An MPPT is a great intermediate project in power electronics — you’ll learn something about current measurement and get to build your own boost or buck converters. There’s lots of room for data logging and optimization of control algorithms in firmware if that’s your thing. You can start with a small panel and parts from your junk box, or modify eBay parts. And in the end, you get your batteries charged “for free”. How cool is that?

Are you working on an MPPT project right now? If so, let us know!

41 thoughts on “Are You Down With MPPT? (Yeah, You Know Me.)

  1. I’ve built a couple different solar chargers for my work. It is important to be biased near the MPP, but much more important in my observation is to make sure the solar cells are uniformly illuminated and that they are pointed as near to the sun as possible. Shading, nonuniform illumination, and bad angles will lose much more power than biasing, unless you’re way off the MPP.

    For MPP tracking, I’ve always just grabbed one of a couple of TI ICs that include MPP and battery charging circuitry. I did some fun stuff charging supercaps because I was generally making small things, and it takes forever to charge a 18650 with a 10cm x 10 cm panel – even a monocrystalline one.

      1. It depends. Used to be, that was so. More modern versio s are wired so that perhaps only the third of the cells which happen to be series-parralleled with that cell, get screwed, and the other 2/3rds keep on trucking..However, if you do not use a discrete mini-inverter per panel but use one big invertoe, panel totals slump because 1 panel is at 2/3rds amperage and in a many-hundred volt series-panel configuration, it is akin to 15D cells seriesed with a B cell.

      2. That should not happen. If one cell is weak it will be driven into reverse bias by the other (series connected) cells and behave simply as a diode in forward bias. So in effect you should only lose the power of 2 cells or thereabouts; one that is compromised and then looks like a diode and another whose energy is dissipated in the diode which is the compromised cell.

    1. Because you might want to rig up hundreds of solar cells. If it’s any sort of practical use, you’ll want at least dozens. And you only need 1 charge controller circuit, with it’s inefficiencies and expense. It’s much easier / cheaper / simpler to just have 1 controller suited to the array you’ve decided on. Makes it a tiny bit more complicated than Lego, but the tradeoffs are worth it. A higher-powered controller / MPPT doesn’t cost much more than a little one, and a lot less than hundreds of micro-scale ones.

      The usual voltage for a single solar cell is 0.45V, which is tricky to run a DC convertor on, small losses add up quickly.

      Also I believe the process for solar cell manufacturing is different from that for ICs. They start off in common then diverge. So it’d be a hybrid silicon process = expensive. And you’d still need the coils and caps.

      If you’ve got a giant solar farm, it probably makes sense to have one controller per panel, and network them up with computers. It’s just about the right scale to do things at, applies to many things. Organise things into the right levels.

      If you’re just experimenting at home, it’s easy enough just to stick a load of cells in series / parallel as you like, if you’re not too bothered about every last milliwatt. Generally I’d just use series, so there’s no trouble with brighter-lit cells back-feeding dimmer ones. If you want parallel, use a diode for each of the groups you’re parallelling together.

        1. I heard that, perhaps in the old days, most solar cells were made from wafers from IC production, that had gone wrong somewhere in the process. I suppose they’d just grind off the top layer of etching, dopant, metal, and the like, and use the bulk silicon to make the solar cells. Just a matter then of adding dopant like making a big flat diode.

          Monocrystalline are still the most efficient cells (possibly excepting some super-cell that was invented 2 years ago that I’ve forgotten about), but most expensive. Amorphous is cheap and not so efficient. A nice range of price and performance, which is nice for people to be able to pick from.

          Other interesting thing is remembering an article from HAD a year or two ago. Solar cells using teeny little nano-antennas, like radio antennas, but so small that their frequency was in the optical range. So they worked like receiving radio. Of course light is EM radiation and so is radio, but traditionally there’s been a dividing line somewhere between them, in terms of what’s optics and what’s electronics. I wonder how that project’s going?

          It’s something I wondered about as a kid. Could you build a radio transmitter in the whatever-Hz range, and have it emit light? Where would the light emit from, what would it look like? Actually, why can’t we build an oscillator in the 400 THz (red) range? Is it the switching speeds of transistors? Maybe some other process could do it, maybe something weird and vacuum-based, like a microwave oven’s magnetron.

          Maybe one day we’ll be able to rig up a diode mixer, shine red light onto one of it’s terminals, and get blue out the other.

          1. technically speaking, multi-junction cells are the most efficient, but they’re also most expensive

            >”Where would the light emit from”

            Well, the antenna would create a sort of probability field around itself, and the photon would shoot off in every possible direction in the antenna’s emission pattern, and the quantum wavefunction would collapse at some point so it seems like the photon flew straight from the antenna to that point.

            But from where does the photon seem to originate, that’s a harder question. Of course the whole antenna would be sub-microscopic so it would just look like a point source.

            >Actually, why can’t we build an oscillator in the 400 THz (red) range?

            Actually, many things are. The colors of objects are caused by two mechanisms. They absorb parts of the spectrum and reflect others, but they also produce light when excited with light. A fluorescent tube is a great example.

          2. If I had a second guess, assuming the transmitting antenna was a multiple of the photon wavelength, I’d say the photon would appear to originate from between the nodes along the antenna. Actually, it would originate from all of them, but the observation collapses the wavefunction to one random possibility and over multiple photons it would seem – through a microscope – that the antenna has regular halos of light along its length corresponding to the wavelength of the oscillation in the material in question.

    2. First problem is implementing the magnetic components of the power converter with only silicon, a few dopants and a bit of metallization unless you mean just a switch of some kind to limit the charging of a battery by turning the current off in which case did you read this article? ;-)

    1. I suppose so. It’s still an improvement overall, or at least over a range of circumstances. If panel, sunlight, and load, all happened to be perfectly matched for the ideal power level, then yep this would create a loss. But in general solar panel output varies a lot, so MPPT is a win overall.

      As for efficiency, if I needed it, either for a project with a small panel, or a lot of big panels I was using to power my house, then I’d figure that into the design of my controller. Isn’t that engineering overall? Taking a bunch of factors, inputs and outputs, resources and requirements, and solving it all like a big equation, to produce a thing that best suits it’s intended purpose. So you might take more time, use more sophisticated techniques, and use more expensive components, where you’re trying to siphon out every drop of power. Where for something mains-powered, power efficiency isn’t as important as, say, cost.

    2. Because the converter does not have a transformer and is only a simple buck or boost it is possible and fairly easy to get efficiencies over 95%. One recent article claimed 97% and I know I got 99% in a crazy no limits R&D project some years ago (late 1990’s). At that time the cost of the panels made MPPT very attractive. We were looking at AUS$500 plus for 80W monocrystalline panels from BP Solar.

  2. Mppt is good, but does add complexity. The larger the installation, the more it makes sense, but in small systems, when the added electronics costs are more than 20..30 percent of solar panels, it is usually better to buy more panels. The system will be larger and more inefficient like a tractor vs a sports car. But the simplicity and maintainability also makes it more reliable and easy to work on. Just like a tractor vs a sports car.

    We are so use to being marketed to on effeciency we often don’t ask: but efficiency to what end? Most solar systems are stationary, so weight is a non issue. Most solar systems have extra sunlight available to it, so space is not an issue. Most solar systems are expected to work every day for years on end with no maintenance at all, so reliability is an issue.

    There is a time and a place for MPPT. But falling solar costs decreaces Mppt viability not the other way around. The big question is, are the costs of good MPPT controllers falling faster than the costs of solar panels?

    1. Ummm… Tractors are very fuel-efficient *and* easy to maintain. Tractor manufacturers have been using fuel economy as a major selling point since the 1930s and they are designed so that any farmer can fix them. Large installations are just more sensitive to upfront system costs and have less constraints on output power

      1. The point is efficiency is not an issue, there is enough sun. The relevant issues are Cost per watt hour, complexity, and reliability. Usually, not always, reliability decreases with increased complexity (not applicable in redundant systems).

  3. That heat issue is a classic. Famous last words, “We have a gigawatt of solar PV available to cope with the heatwave…” ah, no you don’t because you may find you can only produce half of that when the temperature is +40 Celsius and you load is maximised by everyone’s air conditioning.

    Here is an interesting exercise, what rules should we use to control water flow (pump energy) to ensure that we find the sweet spot between power consumption for the pumps and maximisation of PV power by dropping their temperature?

    I’m pretty sure you will not find that in a text book either, but if you do please let us know the ISBN.

  4. Some of the big inhibitors of solar installations (in the us) right now are codes. The requirement for rapid shut down has really placed a large weight to the burden of the industry, particularly with small ( <40kw) systems.
    Lots of microinverters get installed in residential settings because their cheap to install, and safe. Instead of 400+ volts dc running around a house to an inverter, you get about 18" of 50ish volts dc running to an inverter that is then running on a 20a protected circuit. Basically you're wiring toasters that produce rather than consume energy. Pretty dummy proof, really nice aggregate data for the owner to geek out on, works great with the partial shading you get from that pesky chimney you can't remove, and a nightmare to maintain as things fail :)
    DC optimizers are the new thing. Being able to vary panel voltage to help out with the partial shading or panel failures and get the rapid shut down too. Also the added bonus of the efficiency of a single string inverter and easier (typically) access to that as it ages out- but still have the pesky optimizers to worry about.
    Then you have the crazy 10K solar (Minnesota company) system. Was described to me by a fellow skeptic as some engineers wet dream that will never amount to anything… Low volatage high current parallel panel dc strings that run to ribs (redundant inverter bus) a pack of microinverters. In the mornings mg at first light, they all handshake and decide the order they will ramp up as light hits the string. Less inverters on all the time and if one fails they just clip power in the event of a high potential production day… sounds good on paper but in practice- :/

    1. When the panel is delivering maximum power (by using mppt) you will have the (near) maximum current into the battery for the battery voltage at the time. A battery’s charge is measured in AHrs yes and mppt will maximise the Amps into the battery. So I guess the answer to your question is, mppt is, in effect and converter efficiencies aside, a maximum output current algorithm. After all, that is the point, maximum power to load, not, per se, maximum power from panel although that is how it is usually talked about.
      I hope that makes sense. I’ve reread it a few times and I think it came out ok but there is a bit of mental gymnastics in there.

  5. Most solar powered Arduino sensor projects run from a 4.2V LiPo or a 18650 Lithium-ion battery. I love to use the LT3652, It does MPPT, current is up to 2A, it has the constant current constant voltage charging and battery safetly feates built in.

  6. “Using MPPT can pull 20-30% more power out of a given cell”? ORLY? I have no experience with solar panels but from the start I assumed MPPT was essential and couldn’t imagine any set up able to work adequately without it. Consumer solar panels are there to save money right, so you’d be throwing away possible savings without an MPPT, essentially it’s not working ‘adequately’. In my book, it’s: “Using no MPPT reduces the power out of a given cell by 20-30%.”

    1. A big installation sure uses an MPP tracker, an inverter does that anyway. For small scale (mobile) like 50 to 100W you get many charge controllers without MPPT function. But they are really cheap like 7$ from china for a 12V/10 or 20A device.

  7. Neither this Abid Jamal nor Deba123 over instructables has a completely working design, yet those are the first results in google and hackaday for mppt. Deba at least admits that his design is not working, don’t build it. Then there is that swiss guy making everything with SMDs and not providing any source code for his project. So basically this is again a generic article about how mppts work but not a full blown article how to build your own. Ebay is crowded with counterfeit MPPT chargers which either do PWM or not even that so how about somebody document a working circuit down top to bottom or even release a kit based on arduino 100% open source both the hw and sw?!

    Also I don’t see people using barebone Atmega 328Ps to minimize the power consumption while the full blown arduinos draw ~50mA with the chip you can go down to microamp levels even tho it can be pain in the ass to take it out from your board and put it into the programmer any time you make a software modification.

  8. This seems to be crazy question but I will ask it any way,

    What happens when I connect the high efficiency buck converter in between solar panel and hi efficiency PWM solar charge controller ?

    solar panel –(pull panel to Vmax)–> Buck converter –(15V with higher current)–> PWM —-> 12v Battery.

    1. I think you need to decide which one you want to use and stick to it. What you describe sounds very dodgy at best. Most “PWM” solar charge controllers rely on the panel characteristics to work properly (inherent soft current limit) and similarly with the battery (terminal voltage movement being relatively slow). Besides that, two independent and random PWM based converters in cascade is a stability nightmare waiting to happen.

      1. Hi, do you think that a buck/boost converter (in which we have sustituted the potenciometer with digital potenciometer ICs controlled by and arduino) will work ?
        I mean,

        solar panel -> Buck/Boost converter controllled by arduino –> PWM —-> 12v Battery

        Arduino will need to read input voltaje and current, out voltaje and current and change the potentiometers of the buck/boost converter to adjust to MPPT.

        What do you think guys ?

  9. I also agree with the previous comment. We are looking for a solid DIY MPPT Regulator for at least 80A. and did not find a single thing. Any leads? I live in a community where around 20 people live from solar since 2004. We want to expand the system and have another 20 (250w) solar panels to install. We need regulators, inverter and batteries and would like to go open source. If anybody has any ideas or references we will be very grateful. Cheers!

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.