Solar Homelabs
Flat isometric illustration of a white battery cabinet cabled to a pink inverter box topped with a solar panel, beside a small wind turbine on a pink platform.
Troubleshooting

Solar Batteries Not Charging: How to Diagnose It

A diagnostic order for an off-grid bank that stops accepting charge: BMS cutoffs, wrong profiles, array voltage, shading, voltage drop, and open protection.

By Solar Homelabs Editorial · · 7 min read

A bank that stops charging is rarely a dead battery. It is far more often a protection device doing its job, a set point that does not match the chemistry, or a connection that has quietly turned into a resistor. The instinct to start by swapping components is expensive and usually wrong.

What follows is a diagnostic order. Work it top to bottom and stop at the first thing that explains the symptom, because these faults stack and fixing the second one while the first is still present looks like the fix failed.

Step zero: read the controller before touching anything

Every modern charge controller reports its own state, and that report narrows the search immediately. Note four things: the reported charge stage, PV voltage, PV current, and battery voltage as the controller sees it.

What the controller showsWhat it usually means
Float or storage, near-zero current, bank voltage highNothing is wrong. The bank is full.
No PV voltage at allArray-side open circuit: breaker, fuse, connector, or a disconnect switch
PV voltage present, zero PV currentController is not starting, or the battery side is open
Bulk with low current in full sunArray underperformance: shading, mismatch, soiling, or a dead string
Cycling in and out of charge every few secondsProtection tripping and resetting, usually BMS or over-voltage
Bank voltage on the controller different from bank voltage at the terminalsVoltage drop or a bad connection between them

That table resolves a large share of cases before a meter comes out.

The bank may simply be full

Worth stating plainly because it accounts for a surprising number of reported faults. An MPPT controller that has moved through bulk and absorption into float will taper charge current to almost nothing, and a lithium bank at rest will sit near its float voltage. Zero charge current at midday with a full bank is correct behaviour, not a failure. Check state of charge, not current, before concluding anything.

Low-temperature charge cutoff

This is the classic winter failure and it looks alarming. Lithium iron phosphate must not be charged below roughly freezing; plating damages cells permanently and the damage is not recoverable. Victron’s lithium battery documentation and the general lithium handling guidance in Battery University’s BU-808 both treat sub-zero charging as a hard limit rather than a preference.

Battery management systems therefore block charge current below a temperature threshold. From outside, the symptom is a bank that refuses charge on a cold clear morning and starts accepting it in the afternoon once the enclosure warms, with no fault indication that obviously names temperature. Discharging in the cold is a much smaller problem, so the bank continues to power the load normally, which makes the fault look intermittent and voltage-related.

Fixes are enclosure heating, self-heating cells, relocating the bank, or a controller that honours a temperature sensor. A bank in an unheated shed or garage at latitude will hit this every year.

Cell imbalance and the high-voltage cutoff

The other BMS-side cause is imbalance. A series pack is only as charged as its highest cell. If one cell reaches the per-cell maximum while the pack as a whole is still well short of full, the BMS opens the charge path to protect it. The pack voltage looks mid-range, the controller sees the charge path disappear, and charging appears to stop for no reason.

Symptoms that point here: charging cuts out at a consistent, repeatable pack voltage that is below the configured absorption target; capacity has been drifting downward over weeks; the cut-out happens sooner each cycle. Per-cell voltages are the diagnostic, and if the BMS exposes them, read them at the end of a charge rather than at rest. Balancing current in most passive BMS designs is small, so a badly drifted pack needs a long deliberate top balance rather than one more cycle.

Charge profile set for the wrong chemistry

A controller configured for flooded or AGM lead acid will do several unhelpful things to a lithium bank: hold an absorption voltage that is wrong for the chemistry, run absorption far longer than needed, float the pack at an elevated voltage indefinitely, apply temperature compensation that lithium does not want, and in the worst case run a periodic equalisation cycle that deliberately overcharges the bank.

The failure mode that looks like “not charging” is the opposite one: an absorption target set too low, so the pack never reaches the point where the BMS considers it full, state of charge estimates drift, and usable capacity quietly shrinks. Check the configured absorption voltage, absorption time, float voltage, temperature compensation and equalisation setting against the battery manufacturer’s documented values. The profile differences between chemistries, and which controllers even let you change them, are covered in MPPT vs PWM charge controllers for homelab solar.

Array voltage below the controller’s start threshold

An MPPT controller cannot buck a voltage it does not have. Manuals document a minimum PV voltage relative to battery voltage that the controller needs before it will begin charging, commonly expressed as the array voltage needing to exceed battery voltage by a margin at start-up and to stay above battery voltage thereafter.

An array whose string voltage was designed with too little headroom will start late, stop early and drop out under cloud. The tell is PV voltage present but sitting close to bank voltage, with no PV current. The fix is a longer series string, subject to the cold-morning open-circuit voltage limit that constrains string length from the other direction, and to the array sizing worked through in solar panels for a homelab: how many do you need?.

Array-side faults: shading, strings and soiling

If PV voltage and current are both present but production is a fraction of expectation, the problem is upstream.

  • Partial shading. One shaded module drags its entire series string. Bypass diodes limit the loss without removing it. Shadows move seasonally, so an array that was clear in July can be shaded at 11am in December.
  • One dead or disconnected string. In a parallel-string array, losing one string halves or thirds output while everything still reports as working. Compare per-string current if the controller or a clamp meter allows it.
  • Soiling. Dust, pollen, salt, snow. Cheap to rule out.
  • A failed bypass diode or a water-ingressed connector. Both present as one string performing far below its siblings.

Voltage drop, connections and protection devices

The unglamorous causes, and the ones that turn dangerous. Victron’s Wiring Unlimited covers the underlying rules in detail, and the practical checks are:

  • Measure at both ends under load. With meaningful charge current flowing, compare voltage at the controller’s battery terminals with voltage at the battery terminals themselves. A significant difference is cable that is too thin, too long, or a bad joint. The controller then thinks the bank is fuller than it is and terminates charge early.
  • Inspect every crimp and lug. A high-resistance joint gets hot. Discolouration, softened insulation or a smell is a fault to fix immediately, not later.
  • Check the DC protection. A tripped breaker or blown fuse between controller and bank presents exactly as “not charging”. Battery banks can deliver enormous fault current, so overcurrent protection belongs as close to the battery terminal as practical and must be correctly rated. This is a safety item, not an optimisation.
  • Confirm polarity and grounding after any rework. Reverse polarity on the PV or battery side damages controllers, and ground faults on the array can disable charging entirely.

When the telemetry is the thing that is lying

A battery monitor reading from an unconfigured or wrongly configured shunt will report a state of charge that has no relationship to reality, and it will drift further every cycle until it is synchronised at a known full state. Before concluding that capacity has been lost, confirm that the shunt’s capacity, efficiency factor and charged-voltage parameters match the bank actually installed, and that the monitor has recently synchronised at full charge.

Where to stop

Anything involving conductors that must be rated, permanently mounted arrays, or bonding and grounding falls under local electrical code, and in many jurisdictions requires an inspection or a licensed electrician. NFPA 70 governs this in the United States and equivalents exist elsewhere. Diagnosis and configuration are one thing; rewiring a DC system carrying thousands of amps of available fault current is another.

If the diagnosis ends up being that the system was never large enough for the load in the first place, the sizing order is in sizing an off-grid solar system for always-on homelab loads, and the solar and battery sizer will produce the array and bank figures to compare against what is installed.

This guide is compiled from manufacturer documentation and published battery handling references rather than from installed hardware. Confirm every set point and limit against the manuals for the specific battery, BMS and controller in your system.

Sources

  1. Victron Energy - Lithium Battery Smart manual (BMS behaviour, charge parameters, temperature limits)
  2. Victron Energy - Wiring Unlimited (cable sizing, voltage drop, DC protection)
  3. Battery University - BU-808: How to Prolong Lithium-Based Batteries
  4. NFPA 70, National Electrical Code - standard development page

Related