Skip to content

Solar MPPT battery charge controller

Marc Juul edited this page Dec 12, 2019 · 2 revisions

We've been talking about designing the electronics relating to solar panel and battery as a separate module since we need something like this for our solar 4G hotspots as well.

Specs

For disaster.radio we're expecting to ~1.2 A max input, probably at no more than ~6 V. For the 4G solar nodes we have closer to ~20 V input at up to 2.5 A but we don't need all 2.5 A. 2 A would be quite OK. For disaster.radio we may have down to a single NCR18650B li-ion cell so max charge should be reducible down to ~1 A. For the 4G solar nodes it's probably more like 4 A max charge current and might go higher.

Tested modules

For a previous iteration of the disaster.radio module we've used pre-built CN3722 modules that can be gotten on ebay/aliexpress, but they did not perform well.

For the first solar 4G hotspot we used the Sparkfun Sunny Buddy which is just a breakout board with support components for the LT3652. We ran into several issues with this board:

  • Temperature probe pin for automatic cold/hot safety shut-off not accessible on board
  • Max current set to 450 mA and requires soldering very small value resistor to change
  • Charges with 4.0 V instead of 4.2 V and no obvious way to change that

Possible chips

Here's a price comparison of chips I've found so far:

  • BQ24650 - 10 A max - $3.27 single unit, $2.92 at 100 units (pricing via rocelec.com)
  • LT3652 - 2 A max - $7.71 single unit, $4.05 at 100 units
  • LT8490 - 13+ A - $20.05 single unit, $12.57 at 100 units (probably too expensive and higher power than we need)
  • CN3722 Dirt cheap but not actually MPPT
  • Homebrew solution with a microcontroller: Dirt cheap but will efficiency be good enough?

LT3652

A couple of example schematics exist:

Requirements

Here's the wishlist of features we'd like in our module.

Easy to adjust charge current limiting

Either via potentiometer, or moving a jumper to select from options, or soldering pads to select from options. Worst case would be swapping out a through-hole resistor.

Thermal safety

We want easily accessible pin headers for a thermistor (or similar) that will shut down charging at some sane min/max. Bonus if we can easily set the min and max somehow.

Output voltage selection

We want to be able to adjust output voltage. The minimum options would be:

  • ~4.0 V for ~90% charge on Li-ion
  • ~3.1 V for ~90% charge on LiFePO4

4.2 and 3.2 options would be nice to have. One or two options for lead-acid output voltages would be nice to have.

Easy to adjust solar MPPT set point

Small potentiometer like on the Sunny Buddy.

Battery discharge safety (nice to have)

It would be nice if there was a safety circuit for battery discharging but it probably makes more sense to just buy cheap off-the-shelf 1S, 2S, 3S etc. battery safety circuits for whichever battery chemistry is in use.

What would be nice is a settable battery undervoltage cut-off. The problem is that most of these battery safety circuits have a very low and non-adjustable battery under-voltage cut-off. Repeatedly discharging to this voltage would reduce number of battery cycles.

Wake-up circuit (nice to have)

Some devices need to have their power button pressed for some amount of time after they've been shut down in order to boot back up. To accomplish this we need to detect whether the device is off and the battery is above a set voltage. If both are true then the circuit should simulate a button press for an adjustable number of ms (maybe up to 3 seconds). To detect whether the device is on, the circuit needs to be able to detect a voltage of 1.8, 3.3 or 5 V. So basically it should just check if there is a voltage of e.g. 1.6 or more. To simulate the button press it should have two options: Pull high or pull low. The pull high option should let the user connect the voltage source since it should be available on the device already.

We've implemented a prototype of this circuit using an Atmega328P running at 128 kHz and 1.8 V, staying in sleep mode and being woken up by a timer occasionally to see if it needs to send the "turn on" signal.

If this ends up using a microcontroller, it would be nice if it could report battery voltage to the device over serial.

This circuit could be a part of the charge controller that we only optionally populate.