I am a total beginner in electronics and I am facing a big problem with my prototype.

I am trying to create an autonomous circuit that runs an Arduino powered by a 3.7 Li-po battery. The problem that I am having is that after a few days the battery is discharged, even though the solar panel is exposed to direct sunlighy for 7 hours.

The solar panel's maximum output voltage is 5 V at a maximum output current of 45.7 mA (229 mW power).

The above solar panel is connected to a boost converter that outputs a constant 5 V and next connected to a TP4056 Li-po battery charge module.

There are some other components like a buzzer, an RGB LED, and a light-to-frequency converter TSL235L that are connected to the power rails of the circuit.

During the day, Arduino enters in a programmed sleep mode for saving energy. I have constantly measured the voltage in the circuit and it constantly drops from one hour to another with 0.1-0.2 V

Is there any problem with the circuit I created or are there any components that are consuming the battery without me noticing it?

enter image description here

  • 4
    \$\begingroup\$ I think you are choking the solar panel. It can only output certain power, depending on size and sunlight flux. That means, you can't just connect it to a booster or a charger, you need rather to only take what if gives. It is called MPPT- maximum power point tracking. \$\endgroup\$
    – user76844
    Commented Oct 22, 2020 at 9:15
  • 3
    \$\begingroup\$ +1 on what @GregoryKornblum said. Your TP4056 charge current will pull more current than your panel can supply and the boost converter will just dump the panel voltage to minimum. You need and MPPT or MPPC for this to work, or a battery charger IC with much lower current setting. \$\endgroup\$
    – winny
    Commented Oct 22, 2020 at 9:18
  • \$\begingroup\$ is this suitable for my circuit to work in parameters? aliexpress.com/i/4000181429185.html \$\endgroup\$ Commented Oct 22, 2020 at 9:36
  • \$\begingroup\$ you may need to understand things by yourself :) what you show looks OK, but i doubt anyone will invest more than 20 seconds to be sure. \$\endgroup\$
    – user76844
    Commented Oct 22, 2020 at 9:45
  • \$\begingroup\$ We normally don't recommend any part without a datasheet but your linked product is worth a shot. \$\endgroup\$
    – winny
    Commented Oct 23, 2020 at 13:54

3 Answers 3


The converter isn't needed.

Connect the PV panel to the TP5056 with a Schottky diode.
If you want to limit Vin_TP4056 you could connect a 5v6 Zener diode across the 4056 input but it is probably not needed.

We need to know the night time load to properly answer the question.

The equivalent full sun hours per day are much less than the time the sun is visible.
In Romania at present you get about 2.5 sunshine hours equivalent per day typically.
See Gaisma for insolation levels by month. 6th graph, 1st line - kWh/m^2/day = full sunshine hours equivalent.
At best your 229 mW panel will give your 2.5 x 229 =~ 570 mW-hours of energy.
After storing in the battery, and retrieval you get maybe 400 - 500 mW hours.
Divide this by Arduino operating current to get operating hours.

  • \$\begingroup\$ Thanks for the complete answer! After a small search on the Internet, Arduino has a maximum current draw of 40mA so if dividing 400mWh by 40 gives 10 hours of operating time. During the day Arduino enters in a deep sleep mode and it consumes something like 30 micro Amps. After removing the converter, I measured the output from the TP4056 and it's 4.2V which is great. After connecting everything back in the circuit and I am measuring the power rails, the voltage is 2.8V...too less for the battery to be charged I guess. Should I wire things differently? \$\endgroup\$ Commented Oct 24, 2020 at 13:47
  • \$\begingroup\$ If the battery is fully discharged it will start at 3 volts or less and increase as it charges. \$\endgroup\$
    – Russell McMahon
    Commented Oct 25, 2020 at 1:28

The charger (plus battery) is pushing the solar panel away from its Maximum Power Point, especially when the battery is discharged and sitting at a low voltage. This limits the power the solar panel can deliver to about 60 to 80% of what it could be.

A better solution would be getting one of the pseudo-MPPT charging ICs or modules; these will try to keep the solar panel at or around its Maximum Power Point, and maximise the current flowing into the battery.

If that isn't enough to charge your battery fast enough, you will also need a larger solar panel that can deliver more current at the same voltage.

CN3065 and LT3652 are examples of ICs that can do this, but there are others. Googling "solar Li-ion charger" should show a few modules you can use. Check if they can work with a 5 V solar panel; some state they require a 6 V panel.

As said in another answer, you don't need (or want) the separate DC/DC converter, just the solar charging module.

  • 1
    \$\begingroup\$ thanks for the answer!! I just ordered some MPPT modules based on the CN3163 chip and will put them to the test as soon as they arrive. As I read in the specifications they can work with Solar Panels ranging between 4.4 and 6 V, which suits my needs. see SD05CRMA \$\endgroup\$ Commented Oct 23, 2020 at 8:02
  • \$\begingroup\$ Best of luck. Don't forget to accept the answer (if you accept the answer). \$\endgroup\$
    – ocrdu
    Commented Oct 23, 2020 at 9:52

The simple way to charge your lipo is finding right PV panel for your battery then charge it throught diode and BMS as shown. The diode will prevent reverse current that can destroy solar panel and BMS will cut-off charging when battery is fully charge. You need to find solar panel which maximum power voltage around 4.4 to 5.0V (3.7 to 4.2 volt plust diode forward voltage) and maximum current not exceed charge rate of your battery.


simulate this circuit – Schematic created using CircuitLab

  • \$\begingroup\$ I already ordered the PV pannels and my question was how to obtain the necessary power to charge the battery from my already built system \$\endgroup\$ Commented Oct 23, 2020 at 10:09
  • 1
    \$\begingroup\$ Did you notice that OP's circuit already covers all the points you indicated? PV max is 5V and 45mA that surely both are below battery limits. OP's circuit contains a protection diode, and the boost converter working as a super-dumb "BMS". If it's output voltage is a bit below uhmm.. I think 4.2V is maxV for 100%charged LiPO... then the battery is safe even if boost converter doesn't ever stop... heh, even better, OP's using "a TP4056 LiPo battery charge module" that pretty much does-it-all for a BMS dlnmh9ip6v2uc.cloudfront.net/datasheets/Prototyping/TP4056.pdf \$\endgroup\$ Commented Oct 23, 2020 at 10:45
  • \$\begingroup\$ So my answer say that you make mistake at first step. If you not consider these factors before order any component you will end up with problem that never ending. \$\endgroup\$
    – M lab
    Commented Oct 24, 2020 at 21:50
  • \$\begingroup\$ I currently working with solar panel and OP’s circuit is... I can’t tell what gonna happens for solar panel if you drain current too high, to power is lesser. In my opinion this circuit is all wrong. When boost converter need to push voltage it drain more current then power from pv decreasing and it become no power at all. \$\endgroup\$
    – M lab
    Commented Oct 24, 2020 at 22:01
  • \$\begingroup\$ Also maximum power voltage is not open circuit voltage or maximum voltage. Maximum power voltage I mean the voltage that pv delivered maximum power. See pv voltage-current characteristic. \$\endgroup\$
    – M lab
    Commented Oct 24, 2020 at 22:09

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.