Low power portable MPPT

MPPT charger and load controller designed for getting the most out of cca 12W panels while powering QRP amateur radio station.

Similar projects worth following
There is plenty of high (100s Watts) and low power (USB chargers) MPPT charge controllers on the internet. But I haven't found anything that would be able to take my portable panel (12W Solarclaw) with LiFe4Po battery and produce 12V output necessary to power a portable device like HAM radio needing about 10W of power.

I finally selected the platform and CPU for the project. TI TM4C123 based CPU will be used because it has dual ADC (with quite lot of channels) with DMA capability and also two PWM modules each with 8 outputs which is exactly what I need to control two four switch buck-boost modules. Having an Cortex M4F core with support for FPU and optimized DSP libs provided by ARM helps :)

The power stage will consist of two cascaded buck-boost modules with the battery in the middle:

  1. First stage will be used for doing the maximum power point tracking.
  2. Second stage will convert the MPPT (optimal) / battery voltage to the expected output voltage.

I will build the prototype using the TI Tiva C Launchpad (EK-TM4C123GXL) that I have in my "junkbox" waiting for a project.

The high level diagram might look like this:

  • 1 × EK-TM4C123GXL ARM Cortex M4F board for evaluating the TI's Tiva C family of micros

  • PCB routed

    Martin Sivák09/01/2015 at 08:27 0 comments

    I just finished the routing and made it pass the DRC. It might not look symmetrical, but some of the components had to be shifted since there are parts on both sides, many vias for ground and signals and even the four layer board is quite full (the smallest component size is SOT-23 and passives are mostly 1206).

    The building blocks are separated to minimize component interference - the mppt switchers are at the top, board power supplies are on the left side and the measurement part is on the lower right of the PCB.

    You might be wondering where the mounting holes are. Well, the answer is nowhere :) the 10cm x 10cm board will fit into a slotted box like this one: 1455N1601. This should provide good enough RF shielding for the switchers inside as well as for the outside electronics.

    The next step is to re-verify the schematics as four layer boards are a bit expensive, even though I am planning to use a cheap chinese fab for the prototype (

  • Routing the board

    Martin Sivák08/20/2015 at 02:13 0 comments

    Just a preview of my progres in preparing the PCB layout... I am using four layer 10x10cm board to keep the prototyping cost low. Most of the auxiliary components (power supplies, power source switching) are already placed as are the connectors and measurement resistors (the white cubes - Royal ohm, PRW05W, 0.1R, 5W, max ~7A).

    I had to model the resistor models myself so I wrote a parametrized python script for Blender and generated all the resistor sizes I have with it. I plan on improving and publishing that script as it makes it "easy" to create other models as well. Kudos to KiCad team for adding X3D support.

  • Top level schematics

    Martin Sivák08/14/2015 at 18:39 0 comments

    Here is the overview of the design in terms of schematics. I am using hierarchical sheets in KiCad to make it manageable. There are still TODOs, but this is getting close to how the prototype will work.

  • Measuring high-side current

    Martin Sivák08/14/2015 at 17:31 0 comments

    Measuring current on the high side is always tricky. It is not possible to use normal opamps directly as the common mode voltage is too high and the difference is too low. Fortunately there are couple of very nice application notes to explain the tricks of seasoned engineers :)

    There are two I would like to bring to your attention:

    Linear Technology's application note 105 - Figures 5, 51 and 141


    Lattice's application note AN6049 - Figure 9-3

    The setup described in those nice app notes works by converting the difference into constant current which is then flowing across another sense resistor (high value this time) that scales the small difference to easily measurable higher voltages.

    Check the schematic diagram here (taken from the LT appnote):

    One issue still remains. The high common mode voltage at the input of the constant current generator's opamp. I am using a single supply opamp (in/out signal can go very close to the negative rail) that can't process such a high input voltage without help. I built (simulated) a low power boost converter similarly to my PFM buck converter to use as the positive supply for the opamp. I can increase the maximum acceptable input voltage of my opamp that way.

    The boost converter has a soft start reference again and you can check the startup behaviour as well as the frequency modulation on the next image. Note the voltage rise around 1ms. That is the time where the soft start reference got above the startup overshoot that was limited by having very small target voltage at the beginning.

  • Powering the logic

    Martin Sivák08/14/2015 at 17:10 0 comments

    Since the whole controller is digitally controlled it needs some bootstrap power to boot the CPU. But the CPU is not eating a whole lot of amps and so most PWM buck controllers are inefficient or expensive.

    My setup will use primitive PFM (Pulse frequency modulation) based buck converter to generate the necessary 5V input for the TM4C kit. The 5V will be then down-regulated by the internal linear regulator to the stable 3.3V level needed to get sufficient stability for the CPU and its ADC peripherals.

    The goal is to eat as little power as possible from one of two sources. When the solar panel gets above 6V it will be used as the source. The battery will be used otherwise.

    Attached here is the simulation of voltage level switching logic. The trigger point is about (but not exactly as it is not important) 6V.

    The second simulation shows the PFM buck converter used to generate about 5V from the input (6 to 15V). It has a soft start to limit the start-up overshooting and it fills up the output capacitor every time the voltage gets below threshold determined by the hysteresis of the comparator U1. The frequency of operation is about 300kHz and it uses behavioral voltage source B1 to simulate the FET driver.

    You can check the result on the following image including the frequency change once stable voltage is reached.

  • Simulation start

    Martin Sivák05/20/2015 at 18:35 0 comments

    I started with a rough simulation of the circuit. I used ad-hoc components from the LTspice library, used some random component values and violated some specs (like diode current). I guess I just needed to know if this could work at all :)

View all 6 project logs

Enjoy this project?



Martin Sivák wrote 05/18/2015 at 11:46 point

I saw most of these before. But all of them are just charge controllers. I need something that will support charging while operating.

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates