Solar Charge Controllers

Understanding Solar Charge Controllers: PWM vs MPPT

As a professional solar installer, I’ve learned that the charge controller is the most underestimated box in a DC system. When it’s sized or set wrong, issues can occur in it. You notice “weak” batteries, random inverter alarms, or lights dimming at night. Panels also never seem to hit their potential. In this post I’ll explain what a solar charge controller does. I will also cover the difference between PWM and MPPT. Additionally, I will describe how I size and wire them correctly. Finally, I will share my field-tested troubleshooting playbook with fixes for the most common issues.


Solar Charge Controllers

What a Solar Charge Controller Actually Does

In plain terms, the controller sits between your PV array and the battery bank and does four critical jobs:

  1. Multi-stage charging
    • Bulk (push as much current as possible),
    • Absorption (hold at a set voltage to finish the charge),
    • Float (keep a full charge gently),
    • Equalize (periodic controlled overcharge for flooded lead-acid only).
  2. Voltage/current limiting
    It prevents overcharging and limits charge current to what the batteries can safely accept.
  3. Reverse-current blocking
    At night it stops batteries from back-feeding the panels.
  4. Load management (if equipped)
    Many controllers have a “LOAD” output. They include a low-voltage disconnect (LVD) to protect batteries. This feature prevents deep discharge on DC loads.

PWM vs MPPT (What I Recommend and Why)

PWM (Pulse Width Modulation)

  • How it works: Think “fast switch.” PWM rapidly connects/disconnects the array to hold the battery at a target voltage. The array is effectively pulled down near battery voltage.
  • When I still use it: Very small, budget systems where panel Vmp ≈ battery charge voltage (e.g., a single 36-cell 12 V panel into a 12 V battery) and short wire runs.
  • Limitations you feel in the field: Any “extra” panel voltage is thrown away. Long strings or higher-voltage modules waste power.

MPPT (Maximum Power Point Tracking)

  • How it works: Think “DC-DC converter with brains.” MPPT keeps the array at its sweet spot (Vmp/Imp) and converts extra voltage into extra current for the batteries.
  • When I use it: Almost always. It is especially used with 60/72/120/144-cell modules and in colder climates (higher Voc). It is also used for longer wire runs, 24/48 V banks, or anytime efficiency matters.
  • Real-world gain: 10–30% more harvest vs PWM is typical; more on cold, clear days.

Quick Math Example (why MPPT wins)

  • Two 350 W panels in series: Vmp ≈ 34 V each → 68 V, Imp ≈ 10.3 A, P ≈ 700 W.
  • Charging a 24 V battery at ~28.8 V (absorb):
    • PWM clamps array near 28.8 V → power ≈ 28.8 V × 10.3 A ≈ 297 W (huge loss).
    • MPPT converts 68 V×10.3 A ≈ 700 W (minus conversion losses) into ≈ 24 A at 28.8 V.

If you’re deciding today, MPPT is usually the right answer.


How I Size a Charge Controller (Correctly)

1) Electrical Limits

  • PV input voltage (Voc) must be below the controller’s max even on the coldest day.
    • Use: Voc_cold = Voc_STC × [1 + |temp-coeffVoc| × (T_STC − T_min)].
    • Example: Panel Voc_STC 41 V, temp-coeff −0.30%/°C, T_min = −5 °C
      ΔT = 25−(−5)=30 °C; 0.003×30=0.09 → Voc_cold=41×1.09=44.7 V.
      Three in series → 134.1 V must be < controller Voc max (e.g., 150 V).
  • PV input current per string ≤ controller input current rating; each string fused.
  • Output current to battery ≤ controller charge rating.

2) Power & Current Headroom

  • Size for 1.25× safety on both Isc (NEC 125% rule) and charge current.
  • With MPPT, I’m comfortable oversizing PV power to ~1.2–1.5× controller’s rated output; it just clips at peak.

3) Cable & Voltage Drop

  • Keep PV and battery cable voltage drop ≤ 3% (≤ 2% is ideal on battery side).
  • Choose cable gauge from run length and current; shorter & thicker beats hot conductors and lost watts.

Battery Charging Setpoints (Typical Ranges I Use)

Always confirm with the battery’s datasheet. These ranges are “typical,” not gospel.

Battery TypeBulk/Absorb (25 °C)Absorb TimeFloatEqualizeNotes
Flooded Lead-Acid (FLA)14.4–14.8 V (12 V)2–4 h13.4–13.8 V15.2–15.8 V (1–2 h, monthly)Temp compensation −4 mV/°C/cell
AGM14.2–14.6 V1–3 h13.4–13.6 VNo/LowLower gassing; no equalize unless OEM allows
GEL14.0–14.2 V1–3 h13.5 VNoSensitive to over-voltage—be conservative
LiFePO₄ (with BMS)14.0–14.4 VMinimal13.4–13.6 V or noneNoFollow BMS; often no float, rely on BMS limits

(Scale to 24/48 V banks by ×2/×4.)


Wiring & Protection: How I Build It So It Lasts

  • Sequence for connect/disconnect (critical):
    • Connect: Battery → program settings → PV.
    • Disconnect: PV → Battery.
  • Protection:
    • PV side: fuse/breaker per string, PV isolator, Type-2 DC SPD, correct MC4s (same brand, proper crimp).
    • Battery side: Install a fuse or circuit breaker within 18–20 cm of the battery positive. Use proper lugs and torque to the specified value. Add Type-2 DC SPD if required.
  • Earthing: Bond array frames and metal enclosures to earth; keep earth resistance low; follow local code.
  • Layout: Short, direct battery leads; avoid “daisy-chain” battery jumpers—use a proper bus bar for multi-battery banks.
  • Ventilation: Controllers hate heat. Mount vertical, shaded, with clear airflow.

Commissioning Checklist I Run Every Time

  1. Verify battery chemistry, set absorb/float/equalize properly.
  2. Plug in battery temp sensor; confirm controller detects it.
  3. Confirm time-of-day and absorb duration.
  4. Check Voc per string and polarity at the PV input (meter, not eyes).
  5. Close PV isolator; confirm MPPT finds Vmp and tracks smoothly.
  6. Watch the charge current rise; confirm no unusual noise/heat.
  7. Log firmware version, final settings, and initial performance snapshot.

Solar Maintenance & Repairs
Solar Maintenance & Repairs

My Troubleshooting Workflow (Step-by-Step)

  1. Identify the symptom (no charge, low charge, resets, hot unit, odd readings).
  2. Visual & tug test (loose lugs, browning, melted plastics, wrong MC4 pairs).
  3. Measure PV side: per-string Voc/Isc, compare strings (±5–10%).
  4. Measure battery side: voltage at battery posts and at controller (detect drop).
  5. Check settings: battery type, absorb/float voltages, LVD, time windows.
  6. Thermal check: IR temp on heat sink; ventilation review.
  7. Firmware & logs: update if manufacturer lists relevant fixes.
  8. Isolate: test with known-good panel/string or bench supply if needed.

Diagnostic Table: Common Controller Problems, Root Causes & Fixes

Symptom / ErrorQuick ChecksLikely Root CauseField Fix I Use
Controller dead / no displayBattery voltage at controller? Polarity? Fuse near battery?Blown fuse, reverse polarity, open battery circuitReplace/size fuse, correct polarity, fix battery link before PV
Charges only in morning/eveningAmbient temp, enclosure airflow, unit too hot at noon?Thermal derating or shutdownImprove ventilation, relocate, add heat sinking, upsize controller
“Batteries not charging”Per-string Voc/Isc; PV isolator on? Shading?Open string, MC4 mismatch, blown PV fuseRe-terminate MC4s, replace string fuse, fix broken home-run
Low charge current all dayCompare array power vs controller output; check cable dropLong thin cables, PWM on high-V panelsUse MPPT, thicken cables, tighten lugs
Overcharging (high V, boiling FLA)Setpoints vs datasheet; temp sensor detected?Wrong battery profile, bad temp sensorCorrect profile, replace sensor, enable temp comp
Undercharging (never hits absorb)Panel cleanliness, Vmp vs battery voltage, loadsDirty/shaded array, undersized PV, heavy daytime loadsClean/realign, add panels, reschedule big loads
MPPT “hunts” / unstableString Vmp vs MPPT window; partial shade?Vmp near limits, mismatch, bypass diode issuesRe-string to keep Vmp in window; replace weak module
PV over-voltage faultCold morning Voc vs controller specToo many in series for climateReduce modules per string; respect cold Voc calc
Controller very hotMounting orientation, sun exposure, dust clogPoor location, derated heatsinkShade, clean, re-mount vertical with clearance
LOAD output trips (DC loads)LVD setting vs battery SOC; load surgeLVD too high, motor surgeLower LVD carefully; connect motors directly via fused feed
Noise/sparking at terminalsTorque, oxidation, correct lugs?Loose/corroded jointsClean, new lugs, torque to spec, anti-oxidant compound
Random resetsVoltage dip on input, weak battery, poor bondingCable drop, battery bad, EMIShorter/heavier leads, service/replace battery, tidy wiring
Lithium bank misbehavesBMS comms? Correct profile?Wrong profile, bad CAN/RS485 cableSelect Li profile, use vendor cable, update firmware
SOC wildly inaccurateShunt installed? Correct tail current?No shunt or wrong parametersInstall/commission battery monitor; calibrate
Reverse current at nightBack-feed observed on PV?Failed internal MOSFETReplace controller; don’t rely on external diode for long term

10 Common Issues (Explained) and How I Fix Each

  1. Wrong Battery Profile Selected
    Effect: GEL/AGM overcharge, LiFePO₄ undercharge or float forever.
    Fix: Set correct chemistry; absorb/float per datasheet; for LiFePO₄, often no float and rely on BMS.
  2. PV String Voc Too High in Cold
    Effect: Over-voltage faults or latent damage.
    Fix: Recalculate cold Voc; reduce series count; keep 10–15% margin below controller max.
  3. Undersized Controller
    Effect: Thermal clipping, early failure.
    Fix: Upsize to handle array and ambient; give physical cooling and headroom.
  4. PWM Used with Modern High-V Modules
    Effect: Chronic low harvest.
    Fix: Swap to MPPT or re-panel with lower-V modules matched to battery.
  5. Bad Temp Sensor / Not Installed
    Effect: Wrong charge voltages as seasons change.
    Fix: Replace sensor, route away from hot sinks, secure to battery.
  6. Voltage Drop on Battery Cables
    Effect: Controller “thinks” it’s at absorb; battery never truly full.
    Fix: Short, thick cables; measure at posts; use remote voltage sense if available.
  7. Partial Shade & Mismatch
    Effect: MPPT hunts; peaks never stabilize.
    Fix: Panel layout/optimizer/micro-inverter; or re-string to minimize mismatch.
  8. Dirty/Soiled Modules
    Effect: 5–30% loss that looks like “controller issue.”
    Fix: Clean safely; implement schedule; show before/after numbers.
  9. Loose MC4 / Mixed Brands
    Effect: Hot joints, intermittents, melted plugs.
    Fix: Use same-brand MC4s, correct crimp die, firm click, gentle pull test.
  10. LOAD Port Abuse
    Effect: Motors/pumps trip the controller.
    Fix: Don’t run inductive/heavy loads off LOAD; feed them directly via fused lines.

Preventive Maintenance I Promise My Clients

  • Monthly: Visuals, log charge cycles, spot-clean modules.
  • Quarterly: Torque check on terminals, firmware check, verify absorb time achieved, thermal inspection.
  • Bi-annually: Full string Voc/Isc test, battery health check (voltage spread, capacity test), settings review vs season.
  • Annually: Combiner inspection, MC4 sampling (open/re-make a few), SPD check, re-calibrate monitors.

I keep a simple log: date, weather, PV peak power, bulk/absorb/float times, max controller temp. Trends tell the truth.


Quick Decision Guide: PWM or MPPT?

  • Tiny cabin / lighting only / 12 V panel matched to 12 V battery? PWM is fine.
  • Anything else (24/48 V, long runs, modern panels, growth plans)? MPPT.
  • Hot climate with cramped enclosures? Oversize the controller and ventilate—heat kills electronics.

FAQs I Hear on Site

Q: Can I mix old and new panels on the same MPPT input?
A: I avoid it. Mixed Vmp/Imp forces the MPPT to compromise; harvest suffers. If you must, group like-for-like on the same tracker.

Q: My controller says “float” by noon—good or bad?
A: Good if the batteries are truly full. Verify with a hydrometer (FLA), BMS SOC (Li), and that absorb time actually completed.

Q: Do I need a separate controller if my hybrid inverter has one?
A: No, if its PV charger meets your array/battery specs. Add a separate MPPT only for an additional PV input or different battery.


Field Notes That Save Headaches

  • Program absorb time based on battery capacity and charge current. Too short = chronic undercharge; too long = heating.
  • For LiFePO₄, let the BMS be the cop. Set conservative voltages; don’t fight the BMS.
  • Respect cold Voc and hot Vmp windows when stringing. The math takes minutes; the mistake lasts years.
  • Always connect battery first so the controller knows its target voltage before PV arrives.

Similar Posts