MKR NB 1500 won’t charge 3.7 V LiPo from solar panel via VIN (battery stuck at ~3.65 V)

Setup

  • Board: Arduino MKR NB 1500
  • Battery: single-cell 3.7 V Li-Po, connected to the board’s JST battery connector
  • Solar panel: (specs in the attached photo)
  • Regulator: XL6009E1 (step-up/step-down) to set the panel’s output voltage

Wiring (current attempt)

  • Solar panel → XL6009E1 regulator
  • XL6009E1 output → VIN and GND on the MKR NB 1500
  • Li-Po battery → JST battery input on the MKR

Symptoms

  • If I feed 5 V into VIN, the voltage measured at the battery (JST) stays very low, around 2.8 V.
  • If I feed 6 V into VIN, the battery voltage rises a bit but gets stuck around 3.65 V and does not increase further.
  • The board does not run from the battery alone anymore (no USB, no VIN), even though the battery is connected.

Measurements I’ve seen

What I suspect / What I’ve tried

  • I now realize VIN is not a battery-charging input; it feeds the 3.3 V rail through a regulator. The on-board Li-ion charger needs a stable supply (e.g., USB 5 V). A solar panel (even through a simple regulator) may not provide a stable enough input for proper CC/CV charging.
  • The battery being at ~2.8 V is borderline/critical for a Li-Po; it may have tripped protection or be degraded. When I tried 6 V at VIN, the battery voltage moved to ~3.65 V but then stalled, which suggests the charger isn’t actually completing the CC/CV cycle (input instability / insufficient headroom / battery condition).

Questions

  1. Is my understanding correct that feeding VIN (5–6 V) will not reliably charge the battery, and that the on-board charger expects a stable 5 V source (e.g., USB or a proper power-path/solar charger front-end), not a fluctuating solar/regulator feed?
  2. Given the battery sat around 2.8 V, could its protection circuit be latched or the cell degraded, explaining why it won’t recover or power the board by itself?
  3. What’s the recommended wiring for solar use with MKR NB 1500? My plan:
  • Solar panel → solar Li-ion charger with MPPT / power-path (e.g., CN3065, BQ24074, MCP73871 class)
  • Charger BAT+ / BAT− → MKR BAT and GND (not VIN)
  • Charger SYS/LOAD (or OUT) → powers the board while also charging the battery when sunlight is available
  • Alternatively, use a stable 5 V source to USB and let the on-board charger do its job
  1. Short-term diagnostic: If I disconnect the panel/regulator and power the board via USB, should I expect the battery voltage to climb gradually (3.0 → 3.7 → 4.2 V)? If it doesn’t move, is that a strong sign the battery or the on-board charger is damaged?

Safety notes I’m aware of

  • Never connect the Li-Po to VIN; the battery must go to BAT (JST).
  • A single-cell Li-Po must not exceed 4.20 V during charge.
  • A proper CC/CV charger and stable input are required; the solar panel alone (even with a simple regulator) is usually not sufficient.

Any guidance or corrections are welcome—especially on the best-practice wiring for solar + MKR NB 1500 and how to tell if the battery vs. charger IC is the culprit. Thanks!

First read the pinned post re 'How to get the most from the forum'. Replace as many words as possible with hand made drawings of the wiring and code in code tags after you Tools/Auto Format.

The one thing I see is the mention of a BQ24074 from Adafruit. That is indeed the correct board to use to charge Lithium batteries.

As a general rule, batteries are like buffers and on one side of the circuit is solar or wind or water or USB and the other side is the load. There are many problems with using solar as a direct power source.
Now that we understand that part of the circuit, it 's time to insert an MPPT between the solar (also for wind, etc) and the battery. The MPPT will use the variable Power (Amps x Volts) to a constant 5V at whatever amps it can manage.

I can tell from your questions that you have spent a good amount of time studying and learning. It seems you just missed a couple of things.

Do you want 5V or 3.3V? If 5V then look at the BQ25185. There are a couple boards that use that chip with slightly diferent feature sets.

From here https://content.arduino.cc/assets/MKRNB1500_V3.0_sch.pdf

I would try another battery.

For solar you need mppt / pseudo mppt charge controller, otherwise it's not worth to have solar. BQ2407x seems good choice.

So, thank you for your answer! So directly from the solar panel, I will connect MPPT between the solar panel and the battery. The scheme is attached.

The other requirement is to supply (during the day) all the weather station (Arduino etc.) also with solar panel.

That is looking closer. However, these charger+ boards all have pros and cons so read the datasheet VERY carefully to ensure you can live with any restrictions. I would compare to the BQ24074 and maybe more.

Hi guys, only to inform that I am trying to use this charger: https://www.joyfulpurchase.com/prodotto-p-636927.html
I will update you to see the effects about the battery LiPo charging.

the battery is charging, but there is a problem with the data transmission to the server of the various sensors (wind vane, temperature, humidity and pressure sensor etc). What could be the problem according to you? Thanks

That charger features: "Load output is regulated to never be over 4.4V"
It's not enough for MKR VIN.

ok, but what could be the solution for this?

I don't know any proper way to power your MKR with 3 - 4.4V output of that charger.
Either you get another solar converter or you add boost converter.

You’re right — VIN isn’t a proper Li-ion charge input, the MKR’s on-board charger expects a stable 5 V (USB) or a proper power-path front end, so feeding a raw/regulated solar output into VIN will often stall charging. For solar use you need a dedicated Li-ion solar charger with power-path/MPPT (so it can power the board and do CC/CV charging) and its BAT output should connect to the MKR’s JST BAT, not VIN. For diagnosis, power the board from USB and watch the JST battery voltage: if it doesn’t climb from ~3.0→4.2 V then the cell or the charger IC is likely damaged — remove the cell and try a known-good bench LiPo charger to see if the cell recovers; if it won’t, replace the battery.

Hi @antonino99 , your observations actually match how the MKR NB 1500 power system works. VIN does not charge the Li-Po battery. On MKR boards the charger IC is connected to the USB 5V rail, while VIN only feeds the 3.3V regulator. So when you apply 5–6V to VIN, the board powers up but the battery never enters a proper CC/CV charge cycle. The ~3.6–3.7V you see is just leakage/back-feeding, not real charging. The solar panel + XL6009 also won’t work reliably because the charger needs a stable input voltage. A panel voltage collapses under load, so the charger repeatedly resets and the battery stays around storage voltage. In solar setups, solar bonding and grounding is key as well floating grounds or unstable reference levels often make regulators behave unpredictably, especially with small panels. About the 2.8V reading that is deep discharge territory. The protection circuit may have latched off or the cell may be degraded, which explains why the board won’t run from the battery alone.

Quick test: disconnect the panel and power the board from USB only.
If the battery slowly climbs toward 4.2V → charger OK
If it stays ~3.6V or ~2.8V → battery likely damaged

For solar projects the correct wiring is: solar Li-Ion charger with power-path (CN3065 / BQ24074 / MCP73871 type) battery connector (not VIN)

So your understanding is right — VIN powers the board, USB charges the battery.

I would have simply used a 5volt panel with USB lead, plugged directly into the Arduino.
That would have charged a battery connected to the Arduino the way it was designed.

But..., you already have a 6volt panel.
You can try to wire the MPPT battery directly to the battery terminals of the Arduino.
Forget about that XL6009.

Test the MPPT charger with battery on it's own first.
Note that a solar panel needs bright sunlight to deliver significant current.
Indoor light won't cut it.
Leo..

Many of the MKR boards use the BQ24195 power management chip. The USB 5V and the Vin supply are both connected to the Vbus pin of the chip. It doesn’t know or care where the supply is coming from. It will charge the battery and feed the 3.3V regulator just fine on either USB or Vin power.

Right now the sun is up and my 5V solar panel is charging the 3.7V Lipo on the MKR1310 via the Vin pin on the board. I can see the battery voltage creeping up.

The quirk with the BQ24195 is that it doesn’t start a charge cycle until it sees the battery fall below 4.208 minus 100mV . So it will try and keep the battery between 4.208 and 4.108V if there is supply available. The problem is that it will not reliably start charging a battery at say, 3.7V, if it has never seen it fall below 4.108V.

So the first time after power-on, charging may not start, and lead you to think there is something wrong with your setup. You can work around this by using the PMIC library and including the PMIC.begin() and PMIC.enableCharge() functions in setup(). These cause charging to start immediately if appropriate.

The MKRs with BQ24195 will work fine with a 5V solar panel direct connected into Vin. Unless you have very high power requirements you don’t need MPPT controllers or similar. It is perfectly happy with varying power (due to solar shading, for example).

The only thing to watch is if you are feeding some external device from the 5V pin. It will see up to Voc of the solar panel - could be up to 7.5V for a 5V panel.

Hi, your understanding is correct. VIN is not a proper Li-Po charging input—the MKR NB 1500 on-board charger needs a stable 5 V source like USB or a regulated adapter. Using a fluctuating solar panel through a step-up/step-down regulator can prevent proper CC/CV charging, which is why your battery stalls around 3.65 V.

If the battery sat at ~2.8 V, its protection IC may be tripped or the cell partially degraded, so even proper charging might not recover it fully.

For solar use, it’s best to use a dedicated Li-ion solar charger with MPPT or power-path capability (like CN3065, BQ24074, MCP73871). Connect BAT+ / BAT− → MKR BAT and GND, and use the charger output to power the board while charging. Ensure proper solar bonding and grounding to avoid voltage instability.

Also, for mounting and wiring hardware, consider high-quality components like AK Stamping for durability.

Short-term test: power the board via USB with the panel disconnected. Battery voltage should gradually rise toward 4.2 V; if it doesn’t, the battery or on-board charger may be damaged.

This is just plain untrue. The BQ24195 charger chip on the MKR boards can work with a wide range of input voltages. If an unregulated 5V solar panel is connected to Vin, it will charge the battery if the panel is in bright sun and stop charging when it is not. There is even a library call, PMIC.isPowerGood() that will tell you if the power source is strong enough to be used to charge the battery and drive the microcontroller.

Like I said previously, if the battery is not charging, you should add PMIC.begin and PMIC.enableCharge to your setup() code. This will get it started after powerup and it will hold the battery at about 4.1V indefinitely after that, even when charging from a solar panel.