The charge controller is the brain of a solar battery system. It regulates the power flowing from the solar panels to the batteries, preventing overcharge and managing the charging profile. There are two fundamentally different technologies: PWM (pulse width modulation) and MPPT (maximum power point tracking). Choosing the right one and configuring it correctly is the difference between capturing 70% and 95% of your available solar energy.
This guide explains how each type works at the circuit level, when MPPT is worth the premium, how to configure string voltage for MPPT controllers, the NEC 690.7 temperature correction requirement, and the common configuration mistakes that waste production or damage batteries.
How PWM Controllers Work
A PWM controller is essentially a switch between the solar panel and the battery. When the battery needs charging, the switch closes and current flows from the panel to the battery. When the battery reaches its target voltage, the switch opens. During the absorb and float stages, the switch rapidly opens and closes (pulses) to maintain the target voltage, hence "pulse width modulation."
The critical limitation of PWM is that it forces the panel to operate at the battery voltage. A 12V nominal panel (Vmp around 18V) connected to a 12V battery through a PWM controller operates at approximately 12.5–14.5V depending on battery state of charge. The panel's maximum power point is at 18V, but the PWM controller cannot access that higher voltage. The excess voltage is wasted as heat in the controller. The panel produces current at battery voltage, not at its optimal voltage.
This means the panel efficiency through a PWM controller is battery voltage divided by panel Vmp. For a 12V battery at 13V and a panel Vmp of 18V: 13/18 = 72% utilization. You are leaving 28% of available power on the table. This penalty is constant — it exists in bright sun and in clouds, morning and noon.
PWM controllers are simple, cheap ($20–$60), reliable, and perfectly adequate for small systems where the panel voltage closely matches the battery voltage. A 12V panel charging a 12V battery through a PWM controller is the classic setup for RVs, boats, and small off-grid lighting systems.
How MPPT Controllers Work
An MPPT controller contains a DC-to-DC converter that actively adjusts its input impedance to keep the panel operating at its maximum power point (Vmp) regardless of battery voltage. It then converts the higher-voltage, lower-current panel output into lower-voltage, higher-current battery charging. Power in equals power out (minus conversion losses of 2–5%).
Here is the key insight: a panel producing 18V at 10A through an MPPT controller charging a 13V battery delivers approximately (18 × 10 × 0.97) / 13 = 13.4A to the battery. A PWM controller in the same situation delivers 10A. The MPPT controller harvests 34% more energy from the same panel. This is not a theoretical number — it is a real, measurable difference that shows up on your battery monitor every day.
The MPPT algorithm continuously sweeps the panel's I-V curve (typically every 30–90 seconds) to find the voltage at which the panel produces maximum power. This point shifts with irradiance level, temperature, and shading. On a partly cloudy day, the maximum power point moves rapidly, and a good MPPT controller tracks it in real time.
MPPT controllers cost more ($100–$600 depending on capacity) but the energy gain pays for the difference quickly on any system above 200–300W. For systems with panel voltages significantly higher than battery voltage (such as 60-cell or 72-cell panels on a 12V or 24V battery bank), MPPT is not optional — a PWM controller cannot safely handle the voltage difference and wastes the majority of available power.
Gain = (Panel Vmp ÷ Battery Voltage) − 1
Example: 36V Vmp panel on 13V battery:
Gain = (36 / 13) − 1 = 177% − 100% = 77% more power to battery with MPPT
(actual gain is slightly less due to 2–5% conversion losses)
When to Use MPPT vs PWM
Use PWM when: System is small (under 200W), panel voltage matches battery voltage (12V panels on 12V battery), budget is very tight, and simplicity matters more than maximum harvest. Typical applications: RV trickle charging, gate opener solar, small shed lighting, trail camera power.
Use MPPT when: System is above 200–300W, panel Vmp is significantly higher than battery voltage, you are using standard 60-cell or 72-cell residential panels (Vmp 30–40V) on any battery bank, you need to run long wire from panels to controller (higher voltage = less current = less voltage drop = smaller wire), or you are in a location with frequent partial shading or cloud cover where tracking the maximum power point provides significant benefit.
The decision is usually obvious. If you are buying standard residential solar panels and charging a 24V or 48V battery bank, MPPT is the only rational choice. The energy gain over a system lifetime exceeds the controller cost many times over. PWM is only competitive for very small systems using purpose-built low-voltage panels.
One common mistake: buying 12V nominal panels specifically to use a cheap PWM controller. The per-watt cost of 12V panels is higher than standard residential panels, and you need more panels for the same total wattage. By the time you buy extra 12V panels to compensate for PWM losses, you have spent more than the MPPT controller would have cost. Do the math before committing to PWM for anything above 200W.
Charge Controller Sizing Calculator
Size MPPT and PWM solar charge controllers per NEC 690.7. Cold-weather Voc correction, string configuration, and common controller size recommendations.
String Configuration for MPPT Controllers
MPPT controllers have an input voltage window — a minimum voltage to start tracking and a maximum voltage the controller can safely accept. Panels wired in series add their voltages. Your string voltage must fall within the controller's input window at all operating temperatures.
Example: A controller with a 16–150V input window and panels with Voc = 41V. You can wire 2 panels in series (82V Voc) or 3 panels (123V Voc). Four panels would produce 164V, exceeding the 150V maximum and damaging the controller. This is a hard limit — exceeding the maximum input voltage destroys the controller and voids the warranty.
Higher string voltage is generally better for MPPT systems: it reduces current in the panel-to-controller wiring (allowing smaller wire or less voltage drop on long runs), improves controller conversion efficiency (most MPPT controllers are more efficient at higher input voltages), and reduces combiner box complexity (fewer strings = fewer fuses).
The constraint is the maximum input voltage. And that maximum must account for cold-temperature voltage rise (covered in the next section). Always calculate maximum string Voc at the coldest expected temperature before finalizing your string count.
NEC 690.7: Temperature Correction for String Voltage
Solar panel voltage increases as temperature decreases. The Voc printed on the panel datasheet is measured at 25°C (77°F). On a cold winter morning at -10°F (-23°C), the panel Voc can be 15–20% higher than the nameplate value. NEC 690.7 requires that maximum system voltage be calculated using the lowest expected ambient temperature at the installation site.
The calculation uses the panel's temperature coefficient of Voc, listed on the datasheet in %/°C or mV/°C. A typical value is -0.29%/°C. To find the corrected Voc: multiply the temperature difference from 25°C by the coefficient. At -20°C (45°C below STC): correction = -0.29% × (-45) = +13.05%. Corrected Voc = 41V × 1.1305 = 46.35V per panel.
For a 3-panel string: 46.35 × 3 = 139V. If your controller maximum is 150V, you have 11V of margin. That is acceptable. But if you tried 4 panels: 46.35 × 4 = 185V. That exceeds 150V and destroys the controller on the first cold sunny morning.
NEC Table 690.7(A) provides correction factors by temperature range if you do not have the exact coefficient. At -40°C, the correction factor for crystalline silicon is 1.18 (multiply Voc by 1.18). Always use this table or the manufacturer's specific coefficient — never assume the nameplate Voc is the maximum voltage.
Corrected Voc = VocSTC × (1 + (ΔT × TempCoeff))
Where ΔT = (25°C − Tmin)
Example: Voc = 41V, TempCoeff = -0.29%/°C, Tmin = -20°C
ΔT = 25 − (-20) = 45°C
Corrected = 41 × (1 + 45 × 0.0029) = 46.35V
Solar Array Sizing Calculator
Size your solar panel array from daily kWh load, peak sun hours by region, system losses, and tilt derating. Grid-tied and off-grid modes with monthly production estimates.
Common Charge Controller Mistakes
Wrong battery chemistry profile: Every charge controller has settings for battery type (flooded, AGM, gel, lithium). Using the wrong profile under- or over-charges the battery. Lead-acid needs absorb and float stages. LiFePO4 needs different voltages and no equalization. This is the single most damaging configuration error.
Exceeding maximum input voltage: Usually happens when installers add panels to an existing system without recalculating string voltage, or when they forget the cold-temperature correction. The controller fails on the first cold, bright morning. This is an unrecoverable failure.
Undersized controller for the array: A 40A MPPT controller on a 48V battery handles 40 × 48 = 1,920W. If the panel array is 3,000W, the controller current-limits and wastes 1,080W during peak production. The controller is not damaged (it simply limits output), but you lose significant energy. Size the controller for the array, not just the battery current.
Ignoring the minimum voltage: MPPT controllers need a minimum input voltage (typically 16–25V) to begin tracking. If your panel string voltage drops below this threshold in low-light conditions (heavy overcast, late afternoon), the controller shuts down. Ensure your string Vmp stays above the minimum input voltage at the warmest expected operating temperature (when voltage is lowest).
No temperature sensor: Battery charging voltage must be temperature-compensated. Lead-acid batteries need higher voltage when cold and lower when hot. Most quality controllers include a battery temperature sensor. Install it. Without it, the controller charges at a fixed voltage that is correct at 77°F and wrong at every other temperature.