This charger is the only one you need to keep all your Lithium Polymer (LiPoly) or Lithium Ion (LiIon) rechargeable batteries topped up. No matter the power source at your disposal! The Adafruit Universal USB / DC / Solar Lithium Ion/Polymer Charger can use USB, DC or Solar power, with a wide 5-10V input voltage range! The charger chip is super smart, and will reduce the current draw if the input voltage starts to dip under 4.5V, making it a perfect near-MPPT solar charger that you can use with a wide range of panels.

Even though we designed it with solar in mind, it's also great as a plain USB or DC charger - we like that you can use 5V or 9V chargers without worry, and the high charge rate is great for quickly charging up those large battery packs!

Check the polarity of your batteries, if you have opposite-polarity batteries plugged in, it will destroy the charger board

Compared to our earlier, MCP73871-based charger this universal charger has some nice improvements:

  • USB Type C port for modern computers and chargers
  • Up to 1.5A charge rate
  • Up to 10V input voltage, 28V protected
  • Load output is regulated to never be over 4.4V so it's safe for 3.3V regulators or 5V boost converters
  • No stabilization capacitor needed (although you can add one if you like!)
  • Same load sharing so that DC/USB/Solar is prioritized over battery power when available, to keep the battery from cycling
  • Power Good LED lets you know that the charger is working
  • Less expensive


  • The max load current is 1.5A instead of 1.8A
  • There is no 'Done' LED - when the CHG LED turns off, thats how you know charging is complete

This charger is a breeze to use for solar projects: pick up any of our many 3.7V/4.2V LiIon batteries, and a 6V solar panel. Plug the battery into the BATT port using a 2-pin JST cable and the solar panel into the DC jack using a 2.1mm adapter cable Put the solar panel outside (and keep the battery out of the sun, it needs to be kept cool!) to start charging. You can power another project at the same time by connecting to the LOAD output port, which will never go above 4.4V.

The bq24074 which powers this design is great for solar charging, and will automatically draw the most current possible from the panel in any light condition Even thought it isn't a 'true' MPPT (max power point tracker), it has near-identical performance without the additional cost of a buck-converter. Our detailed tutorial on how to use this charger includes a design document explaining how it all works.

For use with Adafruit Lipoly/LiIon batteries only! Other batteries may have different voltage, chemistry, polarity or pinout.

Comes with an assembled charger board, and  bit of header. Does not come with a Lipoly battery or solar panel but we do have tons available in the shop that work quite well.


  • 3.7V/4.2V Lithium Ion or Lithium Polymer battery charger
  • Charge with 5-10V DC, USB or 5-10V solar panel, can have both USB and DC plugged in at the same time, higher voltage source will be used.
  • Automatic charging current tracking for high efficiency use of any wattage solar panel
  • Use any 5-10V solar panel
  • Two color indicator LEDs - Power good and Charging
  • Set for 1000mA max charge rate, can be adjusted to 500mA or 1.5A by soldering closed a jumper
  • Will always draw the most current possible from a solar cell - up to the max charge rate!
  • Smart load sharing automatically uses the input power when available, to keep battery from constantly charging/discharging, up to 1.5A draw. Load output is regulated to no-more-than 4.4V
  • Optional Temperature monitoring of battery by soldering in a 10K NTC thermistor (not included) - suggested for outdoor projects where the battery may get hot (50°C) or cold (0°C).

Power Pins

  • VBUS - The 5V power rail from the USB connector
  • OUT - Regulated load output. This pin will provide a regulated output when the input voltage is below the over voltage protection threshold and above the regulation voltage. It will never be higher than 4.4V (but it may dip down to 3V or whatever the LiPo battery voltage is at, if USB/DC isnt plugged in)
  • LIPO - Battery input. Connect to the positive terminal of the battery,
  • GND - Common ground for all power and logic

JST Connectors

The top Load Out connector is the same as the OUT pin - it will have between ~3V and 4.4V output, and can be used to power the load project

The bottom Lipo Batt connector is the same as the LIPO pin - it is the port for connecting the 3.7V/4.2V nominal LiPoly or LiIon battery

Control Pins

  • CE - Charge Enable (active low) - Set or pull to a high logic level to disable charging. This pin is pulled low by a 10K resistor by default.
  • THERM - Optional external NTC Thermistor Input. To use, carefully cut the THERM jumper connection and connect a 10kΩ NTC thermistor in the battery pack to the THERM pin. The thermistor should also be connected to the negative lead of the battery pack (e.g. to ground)
  • ISET - Optional Fast charge current setting input to manually set the charge current if not using the charge current jumpers. Carefully cut the trace on the 1.0A solder jumper and connect a 590-Ω to 8.9-kΩ resistor from ISET to GND to program the fast charge current level. Charging is disabled if ISET is left unconnected. 
    If you just want 0.5A, 1A or 1.5A charge rates, you can use the selectable jumpers in the middle of the board. Cut the 1.0A one and solder closed your desired charge rate!

Status Pins

  • PGOOD - Power Good Status (active low). PGOOD pulls to GND (open drain) lighting the connected led when a valid input source is connected. If the input power source is not within specified limits, PGOOD is disconnected from ground (high impedance) and the LED will be off.
  • CHG - Charge status (active low) pulls to GND (open drain) lighting the connected led when the battery is charging. If the battery is charged or the charger is disabled, CHG is disconnected from ground (high impedance) and the LED will be off.

Solder Jumpers

  • 0.5, 1.0, 1.5A - Used to configure the charge current by connecting ISET to included resistors. To change the charge current, carefully cut the trace on the 1.0A solder jumper and bridge either of the other two current level jumpers.
  • THERM - Connects the thermistor input to ground when not in use. To use a thermistor, carefully cut the THERM jumper connection and connect a 10kΩ NTC thermistor in the battery pack to the THERM pin. The thermistor should also be connected to the negative lead of the battery pack.
  • D+/D- These are the USB data lines from the USB socket. You can attach them along with VBUS and GND to connect the USB socket to something else.
  • EN1 and EN2 - Input current limit configuration. To modify from the default, cut the traces in the jumpers and solder according to the options below

EN1 Low, EN2 Low - 100 mA input current limit

EN1 High, EN2 Low - 500 mA input current limit 

EN1 Low, EN2 High - (Default) Input Current limit set by an 1K external resistor from ILIM to GND

EN1 High, EN2 High - Standby (USB suspend mode)

Is this a Max Power Point Tracker (MPPT)?

This design is not a 'true' MPPT, and we did that for a reason! Max power point trackers work by 'tracking' the voltage and current curve of a solar panel so that the total Power (Voltage * Current) is maximized. This means that as the light changes, the voltage and current must be carefully tracked. In general, the way controllers perform MPPT is to have a DC/DC converter - that's because to have the best power conversion you'll want DC/DC not linear converters (that lose any excess voltage as heat). For example, say you want to charge a 6V lead acid battery and you have a 12V (approx) panel. The voltage will range between 9V and 14V depending on current draw and visible light. The buck converter will do its best to keep the current draw so that the total power available at the output is maximized.

This diagram from Linear is really good at describing how it works:

The Green lines show the I-V curve of the panel for a given light condition. As the light increases the voltages stay sort of the same but the amount of current you can draw goes up! If you can keep the DC/DC converter operating on the red line, that's the maximum power.

However, there are some side effects to using a MPPT design.

First is that DC/DC converters are expensive, and adding a DC/DC converter to a LiPo charger chip increases the cost by 2x. For small panels, if the MPPT increases the efficiency by 30% but you can double the panel size for the same price increase, it might be easier to just go with a larger panel.

Second is that DC/DC converters are not necessarily more efficient than a linear converter at low voltages and currents. At the voltages we're talking about, a 6V panel charging a 4V battery, the max power point will tend to be around 5V - only a volt above the battery. Considering there's a 0.5V drop with the input diode, the added inefficiency of a DC/DC converter is about equivalent to the extra voltage drop used by the linear charger. For this reason, you tend to see MPPT controllers only for multi-ampere chargers for big lead acid batteries and really big panels.

So the upshot is...

If your panel voltage is ~1V above your battery charging voltage, your current draw is under an Ampere, and you control the current draw to keep the voltage steady at around the 'max power voltage' (the red line up above), it's possible to get near-MPPT performance, without the complexity of a DC/DC converter, and without the high price. That's what the design of this charger does.

Why a special solar charger?

We've had a lot of customers that are interested in making solar powered projects, so we wanted to make a lipo charger board that is specifically designed with Solar & USB charging in mind. We'll explain why...

Most people try to plug a solar panel directly into a lipo charger and while it sort of works, the battery takes forever to charge because the efficiency is terrible! That's because most lipo chargers are meant to plug into a USB port or wall, and are very simple in their design. USB ports supply 5V at up to 500mA and they're pretty solid - the voltage doesn't change much even at the max current draw. So when you plug a charger into a computer with a USB port, they just draw 500mA or so and happily chug away. Same goes for wall adapters. The voltage and current limits are kept steady.

Solar panels are a little different, the voltage and current vary constantly depending on sunlight available. They are unstable! That instability confuses battery chargers, which causes them to do one of two things: rapidly turn on and off as they try to draw more current from the panel than possible and/or draw much less current than they can, to keep the voltage from collapsing

Here is a diagram of a single solar cell, in various light conditions (the colored rainbow lines):

We find these diagrams common but a bit confusing. So we'll show how to use them. Pick the top red line (maximum light) and start at the very right of the line where it meats the horizontal scale. This is the current (I) = 0 point. We're drawing no current and the voltage of the cell is 0.5V. 0.5V is the open circuit voltage. Keep following the graph up and to the left. As the current draw increases, the voltage drops slightly until we reach the point of drawing 38mA (0.038A). At this point, the voltage is around 0.4V. Next draw a bit more current, moving to the left some more and the voltage starts collapsing.We can try to draw more current but as you can see, drawing even a tiny bit more than 38mA makes the cell voltage drop to 0V. 38mA is the short circuit current

Depending on the light conditions, the amount of maximum current can range, from 38mA (red) to 32 mA (orange) down to 5mA (yellow) or even lower. Solar cells can be made larger (the short circuit current is bigger) but the voltage of the cell is fixed at 0.5V open circuit - it's just part the physics of the cell. However, you can connect a bunch of cells in series to add them up. A 6V panel has 12 cells (12 * 0.5V = 6V)

Now you can see what happens if you connect a 6V solar panel to a lipoly charger. As long as the current being drawn by the charger is less than the panel's short circuit current at that light condition, everything is peachy. The moment the light changes even a little, and the current the lipo charger wants is higher than the short circuit current, the charger becomes unstable: it will draw too much current, which will cause the voltage to collapse, which causes the charger to turn off, which reduces the current draw, which makes the panel voltage recover, which turns on the charger again, which then draws too much current, and the cycle repeats.

You can see this happen in the image from my scope below:

The scale is 1V per square, and the 0V point is one square above the bottom of the display (see the 2-> on the left) The open circuit voltage of the panel is about 6.5V, the lipo charger draws some current and quickly the panel voltage collapses. After 250 us, the charger tries again, but fails again. The lipo charger may seem to be charging because the CHRG light is on but really its doing a poor job of it!

Solar Optimization!

OK so how do we fix this problem? The issue we have here is that the voltage collapses during high current draw. We need to find a way to keep the lipo charger from drawing too much current, and backing off when the voltage starts to droop. 

The bq24074 is designed to handle this sort of situation, calls it Input Dynamic Power Management Mode (Input DPM) and basically, it does precisely what we want. When the input drops below 4.5V approximately, the charger will back off and will automatically increase/reduce the charge rate to keep the voltage higher than 4.5V!

Unlike the MCP73871, this charger is dynamically stable and does not need an optional capacitor to keep solar charging from oscillating.

Why didn't you make this an MPPT?

For low power solar charging of lithium ion's, its not necessarily a better way to charge. For information on why we did not design it as a true MPPT, read our design notes!


For large multi-watt solar arrays that are charging lead acid batteries, you will want to get an MPPT charger. For small cells, its not necessarily more efficient. For information on why we did not design it as a true MPPT, read our design notes!

What if my microcontroller also charges batteries?

This can in VERY RARE cases cause issues where the microcontroller tries to also charge the battery through the JST connector.

If you are using a microcontroller with charging circuitry, you should add a diode into the positive line (red wire) between the microcontroller JST connector and the board JST connector, oriented so that power can only flow into the microcontroller.

This will prevent the microcontroller from using its charging capabilities to send power to the board.

What solar panels can I use?

Use any rigid, flexible, monocrystal, polycrystal, etc panels with 6V to 10V rating (12 to 20 'cells') for the best performance

5.5V panels sometimes work, 6V to 9V is really the best!

Can I charge with a solar panel on my windowsill?
The charger will draw as much current as possible, but the efficiency of the panel will be much lower. Solar panels must not have any glass or shade to work efficiently, they must be outside, pointed as best as possible directly at the sun!
The Power Good or Charge LEDs are not on and the battery is not charging.

This is a fault condition detected by the charger.  Most often it is a battery problem or voltage input problem.  This can happen if the battery is allowed to discharge completely.   The protection circuits on some LiPo cells require the battery to be disconnected in order to reset the circuit after an over-discharge cutoff event.  Often just disconnecting and reconnecting the battery will allow it to charge again.

Splice or Adapt?

The first verison of the solar charger came with a 4mm DC barrel jack on it. On older versions (4mm) it would come with a converter cable.

  • If you have an older v1 charger, you can use the terminal block method above OR cut the adapter cable in half and splice the 4mm connector onto the panel. The panel will plug right into the board but its more work.

Other 6V Solar Panels

If you have a panel with something other than 2.1mm or 1.3mm connector, you'll need to remove any existing connector. Cut off whatever connector is on

Gently remove the outer casing without nipping the inner wires.
Strip and tin the inner wires.

Method 1

For this you'll need a 2.1mm Terminal Block Adapter but its really simple. Just open up the screw terminals, slide the red wire into the + hole and the black wire into the - hole and retighten! Now you can just plug it directly into the charger (or adapter cable).

If You Have a Pre-2013 Solar Charger

This method is a little tougher, but results in a nicer cable. You'll need some heatshrink as well as some item with a 2.1mm DC barrel plug (like the 2.1mm adapter)

Cut off anything on the opposite end.

And carefully strip off the outer sheath.
You'll want some longer wires on this side, maybe 1.5" (3-4 cm).
Strip just the ends of the wires and tin them.
Place a big piece of heatshrink onto the cable, and then two shorter and smaller pieces on each of the wires.
Solder red to red and black to black, keep the heatshrink away from your soldering iron since it may shrink too fast!
After the solder cools off, pull the smaller shrink onto the wires and heatshrink them!
Then pull the big piece over everything!
And heatshrink it (with a hot air gun if you have one, or carefully with a lighter if you don't).
That's it! Check with a multimeter, in the sun, to verify that you have a open circuit voltage on the plug.

This guide was first published on Sep 16, 2020. It was last updated on Mar 27, 2024.