Skip to content
Electronics 17 min read

How Does an MPPT Charge Controller Work? Real Curves

Observation recorded
Cinematic poster of the long solar array wings of the International Space Station above Earth's clouds, with the title "Chasing Peak Power" in large condensed type and the line "How MPPT finds the knee.".

Clip a 100 W solar panel straight onto a half-charged 12 V battery through a simple PWM controller and, on a mild sunny day, you will harvest about 81 W. Victron Energy works through exactly this example in its own technical note. Swap in an MPPT controller and you get close to the full 100 W. Do the same experiment with the panel baking at 75 °C on a summer roof, and the two controllers give the same answer to within a watt.

Both results come from the shape of one curve. Once you can read it, you can see what an MPPT controller actually does, why its advertised "up to 30 percent more" is sometimes true and sometimes zero, and how a few lines of firmware hunt for the peak.

Quick answerAn MPPT controller is a DC-DC converter with a control loop. It continuously adjusts the panel's operating voltage to the point where voltage times current is highest, then converts that power down to the battery's voltage at a higher current. A PWM controller instead drags the panel down to battery voltage and wastes the difference.
Infographic: How does an MPPT controller work? A 36-cell solar panel feeds an MPPT box that charges a 12 V battery. At 25 °C the same 100 W panel gives 100.4 W with MPPT but 81.7 W with PWM, 23% more, because PWM drags the panel down to 13.5 V. With 75 °C cells the gain falls to zero, and a 60-cell panel gives about twice PWM's power. A chart of power against voltage shows the 36-cell curve peaking at 17.9 V and a 60-cell curve peaking at 167 W. Tiles: a duty cycle of 0.73, 7.5 A into the battery from 5.62 A of panel current, and a tracker stuck at 28 W instead of 65 W in shade.
Tap the image to view it full size. View the accessible, editable SVG.

Why does a solar panel have a “maximum power point”?

A solar cell is a large silicon diode that light turns into a current source. The standard description is the single-diode model: a photocurrent IL proportional to sunlight, minus the current that leaks back through the diode, which grows exponentially with voltage.

I=IL−I0[exp⁡ ⁣(VnNsVT)−1]−VRsh\begin{aligned}I &= I_L - I_0\left[\exp\!\left(\frac{V}{n N_s V_T}\right) - 1\right] \\ &\quad - \frac{V}{R_{sh}}\end{aligned}

NsN_s = cells in series (36 here); VT=kT/q=25.7 mVV_T = kT/q = 25.7\ \mathrm{mV} at 25 °C; nn = ideality factor.

At low voltage the diode is off and the panel is a near-perfect current source: about 6 A whether you take it at 2 V or 12 V. As the voltage approaches about 18 V, the diode starts conducting and the current collapses, hitting zero at the open-circuit voltage. Power is P=V×IP = V \times I, so it is zero at both ends (zero volts at short circuit, zero amps at open circuit) and peaks in between, right at the knee.

For the figures in this post I fitted that model to Victron's example panel: 100 W, 36 cells, Vmp = 18 V, Imp = 5.56 A, Voc = 21.6 V, Isc = 6.12 A. The best fit is n = 1.54 with 300 Ω of shunt resistance. As a check, the model reproduces Victron's numbers for both controllers at 25 °C and at 75 °C to within about a watt.

Current-voltage and power-voltage curves of a 100 watt 36-cell solar panel. Current stays near 6.1 amps up to about 15 volts then drops to zero at 21.6 volts. Power rises linearly to a peak of 100 watts at 17.9 volts. A PWM operating point at 13.5 volts gives 82 watts. Rectangles show power as voltage times current at each point.
Figure 1. Single-diode model of a 100 W, 36-cell panel at 25 °C and 1,000 W/m². The power at any operating point is the area of the rectangle under it. The MPP rectangle (blue, 17.9 V × 5.6 A) is bigger than the PWM rectangle (orange, 13.5 V × 6.05 A), even though the PWM point draws more current.

What does a PWM charge controller do wrong?

A PWM controller is a switch. When it is on, the panel is connected straight to the battery, so the panel's voltage is pulled down to the battery's voltage plus wiring and controller losses. Victron allows 0.5 V for those losses. When the battery is full, the switch pulses on and off to limit the charge, which is where the name comes from.

PWM, 13 V battery, 25 °C cells

Vpanel=13.0+0.5=13.5 VIpanel(13.5 V)=6.05 AP=13.5×6.05=81.7 W\begin{aligned}V_{\mathrm{panel}} &= 13.0 + 0.5 = 13.5\ \mathrm{V} \\ I_{\mathrm{panel}}(13.5\ \mathrm{V}) &= 6.05\ \mathrm{A} \\ P &= 13.5 \times 6.05 = \mathbf{81.7\ W}\end{aligned}

The panel current comes from the curve. Victron's figure: 81 W.

MPPT at the same moment

PMPP=17.9 V×5.62 A=100.4 W100.481.7=1.23\begin{aligned}P_{\mathrm{MPP}} &= 17.9\ \mathrm{V} \times 5.62\ \mathrm{A} = \mathbf{100.4\ W} \\ \frac{100.4}{81.7} &= 1.23\end{aligned}

About 23% more, before converter losses.

The PWM controller is not losing energy as heat in any dramatic way. It simply forces the panel to work at a voltage where it produces less power. The panel is a current source on that flat part of the curve, so the extra 4.4 V of potential is never collected at all.

How does an MPPT controller turn that voltage into charge current?

The MPPT controller decouples the panel from the battery with a switch-mode buck (step-down) converter. A buck converter's output voltage is set by its duty cycle DD, the fraction of each switching cycle that its main transistor is on: Vout≈D×VinV_{\mathrm{out}} \approx D \times V_{\mathrm{in}}. Turn that around and you see the trick. With the battery holding the output at 13 V, choosing DD chooses the input voltage, which is the panel's operating voltage.

Duty cycle to hold the panel at its MPP

D=VbatVmp=13.017.9=0.73D = \frac{V_{\mathrm{bat}}}{V_{\mathrm{mp}}} = \frac{13.0}{17.9} = \mathbf{0.73}

Battery current (power in = power out, minus losses)

Ilossless=100.4 W13.0 V=7.7 AI97%=0.97×100.413.0=7.5 A\begin{aligned}I_{\mathrm{lossless}} &= \frac{100.4\ \mathrm{W}}{13.0\ \mathrm{V}} = 7.7\ \mathrm{A} \\ I_{97\%} &= \frac{0.97 \times 100.4}{13.0} = \mathbf{7.5\ A}\end{aligned}

Compare: PWM puts 6.05 A into the battery; panel current is only 5.62 A at the MPP.

So yes, an MPPT controller "increases the current", but only in the way any step-down converter does. Victron's SmartSolar datasheets quote a maximum conversion efficiency of 98 percent, and typical efficiency at partial load is a little lower, which is why I use 97 percent throughout.

The misconception: “MPPT always gives you 30% more”

Marketing pages and most top search results quote a gain of 20 to 30 percent, sometimes more, as though it were a property of the controller. It is not. The gain depends entirely on how far the panel's MPP voltage sits above the battery voltage, and that distance moves with temperature.

Silicon cells lose voltage as they heat up. Victron's panel loses 0.47 percent of Vmp per °C, while its current barely changes. On a hot roof, cells easily reach 75 °C, 50 °C above the 25 °C rating condition:

Shift of the MPP at 75 °C

ΔVmp=50 ∘C×0.47%/∘C=23.5%Vmp=18 V×0.765=13.8 VPmax⁡=100 W×(1−50×0.45%)=77.5 W\begin{aligned}\Delta V_{\mathrm{mp}} &= 50\ ^\circ\mathrm{C} \times 0.47\%/^\circ\mathrm{C} = 23.5\% \\ V_{\mathrm{mp}} &= 18\ \mathrm{V} \times 0.765 = \mathbf{13.8\ V} \\ P_{\max} &= 100\ \mathrm{W} \times (1 - 50 \times 0.45\%) \\ &= \mathbf{77.5\ W}\end{aligned}

Those are Victron's figures; the model gives 14.1 V and 78.4 W. PWM at 13.5 V gets 77.8 W in the model, 77 W by Victron's reading of the curve.

PMPPT=0.97×78.4=76.1 WP_{\mathrm{MPPT}} = 0.97 \times 78.4 = 76.1\ \mathrm{W}

After 97% conversion, MPPT gives no gain at all.

Power versus voltage for the 100 watt panel at cell temperatures of 0, 25, 50 and 75 degrees Celsius. The peaks move left and down: 111 watts at 19.8 volts, 100 watts at 17.9 volts, 89 watts at 16.0 volts and 78 watts at 14.1 volts. A dashed vertical line at 13.5 volts marks the PWM operating voltage, which sits almost under the 75 degree peak.
Figure 2. As the cells heat up, the whole power curve slides left. At 75 °C the peak sits almost on top of the PWM operating voltage (dashed line), so PWM accidentally runs near the maximum power point. On a cold, bright day the peak moves the other way and PWM leaves a third of the power behind.

Run the comparison over the full range of temperatures and battery voltages and you get Figure 3. This is the chart I wish every "MPPT vs PWM" article included.

MPPT gain over PWM in percent versus cell temperature from minus 10 to 75 degrees Celsius for three battery voltages. At 12.2 volts the gain falls from 48 percent at minus 10 degrees to about 1 percent at 75 degrees. At 13.0 volts it falls from 39 percent to slightly negative. At 14.4 volts it falls from 26 percent to zero near 47 degrees and stays slightly negative above that.
Figure 3. Computed energy gain of a 97%-efficient MPPT controller over PWM for one 36-cell panel, versus cell temperature. Battery voltage matters as much as temperature: a low battery drags a PWM panel further from its peak. In the absorption stage (14.4 V) on a warm day, PWM is as good or marginally better.

This is the reason behind Victron's conclusion that MPPT outperforms PWM in cold to temperate climates, while the two perform about the same in subtropical and tropical ones. Cell temperature is typically 20 to 30 °C above the air on a sunny day, so "75 °C cells" is a normal summer afternoon in a hot climate, not an extreme.

Where MPPT really pays: high-voltage panels

The 36-cell panel is the one case designed to suit PWM, because its Vmp of about 18 V was chosen decades ago to charge 12 V batteries directly. Modern residential panels have 60 or 72 cells (or the half-cut equivalents) and an MPP of 30 to 40 V. Put one of those on a 12 V battery through PWM and the panel is dragged all the way down its flat current region.

A 60-cell panel on a 12 V battery (same cells, scaled model)

VMPP=6036×17.9 V=29.8 VPMPP=29.8×5.62=167 WPWM: P=13.5×6.09=82 WMPPT: P=0.97×167=162 W\begin{aligned}V_{\mathrm{MPP}} &= \tfrac{60}{36} \times 17.9\ \mathrm{V} = 29.8\ \mathrm{V} \\ P_{\mathrm{MPP}} &= 29.8 \times 5.62 = 167\ \mathrm{W} \\ \text{PWM:}\ P &= 13.5 \times 6.09 = 82\ \mathrm{W} \\ \text{MPPT:}\ P &= 0.97 \times 167 = 162\ \mathrm{W}\end{aligned}

At 13.5 V the PWM current is almost exactly IscI_{sc} = 6.09 A. MPPT gives about 2 times PWM.

That near doubling is where MPPT earns its price. It also lets you wire panels in series at 40 to 100 V or more and run thinner, cheaper cable from the roof, since power lost in the wire scales with current squared. A PWM controller cannot do that at all.

How does the tracking algorithm find the peak?

The controller does not know the curve. It only knows what it can measure: panel voltage and current, each cycle. The classic method, still common in low-cost controllers, is called perturb and observe (P&O):

  1. Nudge the operating voltage a small step (by changing the duty cycle).
  2. Measure the new power, V × I.
  3. If power went up, keep stepping in the same direction. If it went down, reverse.

That is the entire algorithm. It is a hill climb on the P-V curve, and Figure 4 shows it running on our model panel with 0.3 V steps.

Two stacked plots of a perturb and observe simulation over 60 steps. Top: panel power climbs from 85 watts to the true maximum of 100 watts in about 13 steps, then drops to 47 watts when irradiance halves at step 30 and settles at the new maximum. Bottom: operating voltage climbs from 14 volts to oscillate in a three-level pattern around 17.9 volts, then moves down to oscillate around 16.9 volts after the irradiance change.
Figure 4. Simulated perturb and observe tracking, starting at 14 V with 0.3 V steps. The tracker reaches the peak in about 13 steps and then dithers around it, by design. When irradiance halves at step 30, the new peak is at a slightly lower voltage and the tracker follows it.

Two properties are visible. First, P&O never sits still: it permanently oscillates by a step or two around the MPP. Near the top of the curve that costs very little, because the power curve is flat there: in the model, running 0.3 V off the peak costs about 0.1 W out of 100. Second, step size is a trade-off between speed and dither. A bigger step tracks a passing cloud faster but wobbles further from the peak.

The cost of dithering, from the curve

P(17.9 V)=100.4 WP(17.6 V)=100.3 WP(18.2 V)=100.2 W\begin{aligned}P(17.9\ \mathrm{V}) &= 100.4\ \mathrm{W} \\ P(17.6\ \mathrm{V}) &= 100.3\ \mathrm{W} \\ P(18.2\ \mathrm{V}) &= 100.2\ \mathrm{W}\end{aligned}

Average over a 3-level dither ≈ 100.3 W, a loss of about 0.1%.

A more refined method, incremental conductance, uses calculus instead of trial and error. At the peak dP/dV=0dP/dV = 0, and since P=VIP = VI, that means I+V (dI/dV)=0I + V\,(dI/dV) = 0, or dI/dV=−I/VdI/dV = -I/V. The controller compares the measured slope of the I-V curve with −I/V-I/V and knows which side of the peak it is on without needing to overshoot. In practice both methods land within a fraction of a percent of the peak on a clean curve. Esram and Chapman's widely cited 2007 survey compares these and many other methods.

What happens to MPPT under partial shading?

Here the hill-climbing story breaks. A panel's cells are wired in series in groups, usually three substrings of 12 cells for a 36-cell panel, each with a bypass diode. If one substring is shaded, it can no longer carry the full current, and above its reduced current the bypass diode switches on and routes the current around it. The result is a P-V curve with two humps.

Power versus voltage for a 36-cell panel unshaded and with one of three substrings at 25 percent irradiance. The shaded curve has a global maximum of 65 watts at 11.6 volts, then drops to about 21 watts near 13.8 volts and rises to a local maximum of 28 watts at 19.0 volts. A dashed line marks a 13 volt battery.
Figure 5. One third of the panel at 25% light (modelled with three bypass-diode substrings). The global maximum, 65 W at 11.6 V, is reached by bypassing the shaded third. A tracker that starts near the usual operating voltage climbs the right-hand hump and stops at 28 W.

Two lessons hide in that figure. First, a simple P&O tracker starting near 17 or 18 V climbs the nearest hill and settles on the local maximum at 28 W, less than half of what is available, and Wikipedia's summary of the literature notes exactly this failure. Better controllers periodically sweep the whole voltage range to find the global peak. Second, and this one is rarely mentioned: the global peak here sits at 11.6 V, below the 13 V battery. A buck converter can only step voltage down, so it physically cannot hold the panel there. In this particular case a dumb PWM controller (at 13.5 V, 34 W in the model) actually beats a buck MPPT stuck on the right-hand hump (0.97 × 28 = 27 W). The real fix is series-wiring enough panels that even a shaded string sits well above battery voltage.

What else does an MPPT controller do?

Tracking is only half its job. Once the battery approaches full, maximising panel power would overcharge it, so the controller deliberately moves the panel off its MPP, toward open circuit, to deliver only the current the battery can accept. It runs the usual charge stages: bulk (maximum power), absorption (constant voltage, current tapering, the same physics as a phone's last 20 percent), and float. In absorption on a sunny day an MPPT controller is throwing away panel power on purpose, which is one more reason a brochure's "30 percent more energy" never shows up as 30 percent more in a daily total.

Choosing between them: one or two 36-cell panels on a 12 V battery in a warm climate: PWM is fine and cheap. Any 60-cell or 72-cell panel, any series string, any cold or temperate site, or any system above a couple of hundred watts: MPPT, without much debate.

FAQ

Is MPPT worth it over PWM?

Yes when the panel voltage is well above the battery voltage, as with 60-cell or 72-cell panels or panels wired in series, and in cool climates. With a single 36-cell panel on a 12 V battery in hot weather the gain shrinks to almost nothing, and a cheaper PWM controller performs about the same.

How much more power does MPPT give?

For a 36-cell panel charging a 12 V battery, about 20 percent at a cell temperature of 25 °C, 30 to 40 percent on a cold sunny day, and roughly zero when the cells are at 70 to 75 °C. For a 60-cell panel on a 12 V battery, MPPT can deliver about twice what PWM does.

Does an MPPT controller increase current?

It increases battery current compared with panel current, because it is a step-down DC-DC converter: power in roughly equals power out, so when voltage goes down current goes up. A 100 W panel at 18 V and 5.6 A can charge a 13 V battery at about 7.5 A after converter losses.

Can an MPPT controller handle partial shading?

Partly. Shading with bypass diodes gives the power curve several peaks, and a simple perturb and observe tracker can settle on a local peak instead of the global one. Better controllers periodically sweep the whole voltage range to find the true maximum.

Sources

  1. Victron Energy, "Which solar charge controller: PWM or MPPT?" technical information, 20 January 2020 (100 W 36-cell panel specification and temperature coefficients; PWM 81 W versus MPPT 100 W at 25 °C; 77 W versus 77.5 W at 75 °C; climate conclusion). Version consulted: victronenergy.de technical information PDF
  2. Victron Energy, SmartSolar charge controller MPPT 100/30 and 100/50 datasheet (maximum efficiency 98%): datasheet PDF (Swedish edition)
  3. Wikipedia, "Maximum power point tracking" (perturb and observe oscillation, incremental conductance condition, multiple peaks under partial shading): en.wikipedia.org/wiki/Maximum_power_point_tracking
  4. T. Esram and P. L. Chapman, "Comparison of Photovoltaic Array Maximum Power Point Tracking Techniques", IEEE Transactions on Energy Conversion 22(2), 2007: doi.org/10.1109/TEC.2006.874230
  5. PVEducation, "Solar cell I-V curve" and single-diode model background: pveducation.org/pvcdrom/solar-cell-operation/iv-curve
  6. Battle Born Batteries, "What is an MPPT charge controller?" (representative of current top results): battlebornbatteries.com/blogs/articles/mppt-charge-controller

Method note: all curves come from a single-diode model fitted to Victron's published 100 W panel specification (n = 1.54, Rsh = 300 Ω, series resistance fitted at zero), with temperature handled through the published Voc and Isc coefficients. The shading curve treats each 12-cell substring as a scaled copy of the panel with an ideal 0.4 V bypass diode. Converter efficiency is assumed to be 97%.

Header image: NASA (image iss024e007103), regraded for this article.

Related observations
Physics How Much Power Is in a Lightning Bolt? 1.21 GW Checked Projects Building Your Own Quadcopter Drone: Essential Parts and Specifications in India Physics Could an Iron Man Arc Reactor Work? The Fusion Numbers
Transmit