Hackaday Prize Entry: Arduino MPPT Controller

Imagine you’re building a small solar installation. The naive solution would be grabbing a solar panel from Horror Freight, getting a car battery and AC inverter, and hoping everything works. This is the dumb solution. To get the most out of a solar you need to match the voltage of the solar cell to the voltage of the battery. How do you do that? With [Debasish]’s entry for The Hackaday Prize, an Arduino MPPT Solar Charge Controller.

This Maximum Power Point Tracker uses a buck converter to step down the voltage from the solar cell to the voltage of the battery. It’s extremely efficient and every proper solar installation will need a charge controller that does something similar.

For his MPPT, [Debasish] is using an Arduino Nano for all the math, a DC to DC buck converter, and a few MOSFETs. Extremely simple, but [Debasish] is connecting the entire controller to the Internet with an ESP8266 module. It’s a great example of building something for much less than it would cost to buy the same thing, and a great example for something that has a chance at making the world a little better.


The 2015 Hackaday Prize is sponsored by:

17 thoughts on “Hackaday Prize Entry: Arduino MPPT Controller

  1. ” It’s a great example of building something for much less than it would cost to buy the same thing”

    Saving money is IMHO one of the worst reasons for building rather than buying. You can’t beat mass production prices. I bet you could find a similar solar charger for less. Especially so if you value your time at more than 0€/hour.

    Better reasons for building yourself are:
    – learning new skills
    – building something perfectly customized to your needs
    – knowing your device intimately and being able to fix it
    – the pride of building it yourself

    1. Try buying a high wattage motor controller. You can make one for a few hundred. You can buy one for a few thousand. It is because we do not take our own time into the equation because we enjoy doing it.

  2. I think Tim Nolan deserves to be remembered ( since 95% comes from his design )

    Arduino Peak Power Tracker Solar Charger

    in fact a see veeeery little difference !?

    I would like to see an MPPT circuit for 3V control logic !! …that would be something NEW ( in the 12V range there are plenty of interesting solutions ..like john doe pointed out )

    Personally I’m heading in this direction .. why not modify existing buck converters !?

    “Wham Bam” regulator

    “allow it to operate like a two input type.”

    1. “Personally I’m heading in this direction .. why not modify existing buck converters !?”

      I’m actually working on this now. I’ve taken a $20 385W PS3 power supply (Lots of these floating around cheap due to PS3 BGA failure) and modified the feedback circuit to output any voltage up to the 16v the output capacitors are rated for. This is plenty to work with for a lead acid battery bank. The supply is rated to operate from 100-240v AC but it seems to be working fine with my 80v panel as the input. It ran a small 12v air compressor and 100w lightbulb during testing. Right now I intend to just set it to a float voltage and use it like that but I have plenty of these PSUs laying around and they do have OCP so it should be possible to attach a microcontroller and have a pretty nice MPPT setup for way less than the cost of just the buck components alone.

  3. MPPT, as I understand it, isn’t about tracking the battery voltage – it’s about tracking the voltage across the solar cell that gives the best output power.

    1. Sort of.

      Without MPPT, charge controllers often rely on a closely matched panel voltage. The panels are connected to the battery directly (albeit briefly on a PWN controller), and this then drags the panel voltage down on the I/V curve.

      With MPPT, a DC-DC converter is used so that the panel voltage and battery voltage can be different. The battery is driven to accept more or less charge current (by changing the output voltage slightly), and in turn this changes the voltage/current from the panel. A smart algorithm then tracks and adjust the duty on the dc-dc converter to maximise the power being transferred.

      You can monitor the panel voltage/current, or the battery voltage/current, but they both represent a similar thing. All that matters is the product of voltage and current is maximised.

  4. By the way, why does he even use arduino in this project? Esp chip he uses has everything he needs and some…. I’m doing a cree headlamp retrofit project that was going similar path as he was and was using serial to bt adapter and gyro-accel board. Things got so cluttered so I decided to ditch arduino and bt board for esp board. (Remember, I have to stuff all this into dual 18650 battery box where the original led controller used to be)

  5. While it may be the “naive” solution, it’s a good place to start, if you make mistakes, you can learn from them, not to mention, not everybody has the knowledge to build a MPPT type charge controller. Hopefully it’d allow for those getting started to learn the differences between dumping the raw power from their panels to their batteries versus an MPPT controller, homebrew or store/ebay bought, and also to teach the differences between a big-box store inverter, or a true-sine wave inverter, and the fun of sizing wire for the current needed to run everything. All in all, this “dumb solution” is, for all the costs of any sort of solar installation, a cheaper means of learning.

  6. Adc should be present by default in some versions of 8266 (v7 and v12; don’t know if that refers to chip or board version tho) I just mentioned my project as similarities go with control circuitry, not the purpose. He doesn’t have any xml t6 led bulbs anywhere in there and I do not intend on driving my bike in night time with a solar panel on my head :). Of course, as for battery pack, 18650 refers to battery format not chemistry; he might leave the option of selecting chemistry in some easy way so one can use different batteries – leadacid and so on.
    Again, I believe that many of the things could have been duplicated with esp8266 alone and that there is no need for arduino in there.

  7. Maybe this is or is not cheaper than a commercial off the shelf system, but I think it must be better than my PCM-3012, judging from the source code. At least the code in that Arduino program appears keep the battery voltage in check. My PCM-3012 regularly surges up to 15V and then apparently shuts off like it doesn’t know what to do. With a smaller battery or load than I tested with, others have documented it going over 18V.

    Tim Nolan has the design I think I would have gone for if I’d had the skill to do this. When you have more power in the panel than you need, just switch to PWM. That seems simple and obvious. I hope Debasish knocks it out of the park with his adaptation of the design.

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.