I want to understand exactly how an MPPT charge controller works and all I could find is this:

An MPPT charger is a DC-DC transformer, that when it lowers the input voltage, it raises the output current as well, therefore, except for a small loss, the input and output power is the same.

But I also know that a battery bank needs to be charged in different steps having different voltages and currents (bulk, floating, ..etc)

So my question is that, if the MPPT charger always tries to get the most current out of the panel, how does it achieve those different charging steps?

Also, most references say that the output voltage is constant, so the control is done on the current, i.e. the output current is constantly compared to the maximum value and it alternates around a maximum reference value. How is the voltage constant - doesn't the battery voltage also change when the bank is charged and discharged?

  • \$\begingroup\$ You are 100% right to wonder about this. There is a contradiction there. The way it works is that an MPPT battery charge controller will stop doing MPPT when it goes into CV mode. Grid tie inverters track maximum power point all the time. \$\endgroup\$ – mkeith Mar 12 '18 at 6:40
  • 1
    \$\begingroup\$ Re, "if the MPPT charger always tries to get the most current out of the panel,...?" That's not what it does. It always tries to get the most power from the panel. The operating point that yields the most power is neither the max current, nor the max voltage. \$\endgroup\$ – Solomon Slow Mar 12 '18 at 12:26

Good question. You are right that there is a contradiction there. How can you do maximum power point tracking if the load is not able to accept the maximum power? For a grid tie inverter, it is no problem because the grid can accept all the power that the solar array can produce.

But what about a battery? What if the battery is charged already, or if the maximum power would result in too high of a charge current? The way this contradiction is resolved is that the MPPT charge controller for an off-grid system will do MPPT only when the battery can accept the maximum power. At other times, it will abandon the MPPT protocol and function as a normal charge controller.

In a typical off-grid system, the battery will be large enough to accept the solar array's maximum power output during bulk-charging, but once the charge controller transitions to constant voltage, the maximum power will not be used.

  • \$\begingroup\$ Great answer, there is so much confusion about this subject and no book,paper, online article that I have read talks about this contradiction. Many thanks ! \$\endgroup\$ – Mumin Nabil Mar 12 '18 at 7:21
  • \$\begingroup\$ But this raises another question, if an MPPT charger operates according to the MPPT protocol only when the battery can receive a large current, doesn't that make it similar to a PWM controller which deliver high currents only when the battery demands and lower currents as the battery charges ? \$\endgroup\$ – Mumin Nabil Mar 12 '18 at 10:13
  • 2
    \$\begingroup\$ @MuminNabil When the power input to the battery is within the limits set by the data sheet, it's absorbing power correctly. So when voltage is below the endpoint voltage, there will be a current limit, above which the battery may be damaged. When it reaches endpoint voltage, the charging current will typically drop. Depending on the battery chemistry, when the current has dropped below a certain level, it may have to be shut off completely. Going above any of these charging limits means the battery is being charged incorrectly. \$\endgroup\$ – Neil_UK Mar 12 '18 at 14:02
  • 1
    \$\begingroup\$ @MuminNabil Programming. The charger needs to know the battery capabilities. Usually this means you read the battery data sheet, and enter the maximum charge currents and voltages into the battery charger. Where the battery and the charger are designed to operate together, the charger may be able to read the data directly from a 'smart' battery. Either way, the charger will know what the maximum values are, and limit its output accordingly. If the charger can't be programmed, you get what you get; maybe it shortens your battery life, maybe it doesn't. \$\endgroup\$ – Neil_UK Mar 12 '18 at 17:15
  • 1
    \$\begingroup\$ If the charger is not programmable, then the person who designs the system has to make sure that the voltage and current limits are appropriate to the battery pack. \$\endgroup\$ – mkeith Mar 13 '18 at 4:51

MPPT stands for Maximum Power Point Tracker.

It tries to draw the Maximum Power from the panel at all times, and Tracks the panel's operating point as the amount of sun arriving changes.

In order to stay operating at Maximum Power, the MPPT needs to have a load connected to it that can absorb safely all the power it produces. This means a sufficiently big, uncharged battery, or a good grid connection. If the load cannot absorb the power, perhaps the battery is not big enough or is nearing full charge, then the MPPT has to drop back from maximum, and must only draw what is permitted to charge the battery safely.

An MPPT works by drawing a certain amount of current from the panel, converting to a the voltage/current the load needs at that moment, and measuring the power that represents. For a load like a battery, it can simply measure the charging current as a proxy for the power. It then varies the amount of current it's drawing from the panel by a small amount, and does the sums again. It keeps this, or the last, current setting, whichever produced more power, and varies again. Rinse and repeat.


MPPT controllers vary the current draw in order to maintain the optimum voltage. This is done by varying the effective resistance of the load typically by varying the output current of a switching power converter (by varying the switch duty cycle) charging a battery. Loads where the current cannot be controlled usually cannot be used with MPPT schemes, it would be possible to use a mosfet/bjt or other programmable series resistance to reduce the current, but the losses associated with these schemes offset any optimization associated with MPPT.

  • \$\begingroup\$ By varying the duty cycle in order to charge the battery optimally, how does the MPPT controller manage to keep pulling the maximum power from the panel ? I mean, this duty cycle on the one hand determines the effective resistance seen by the panel and hence makes the panel work at MPP, and on the other hand, the same duty cycle is responsible for varying the I/V ratio sent to the bank for charging it optimally, How does the controller does the two tasks concurrently, it doesn't make sense to me ?? \$\endgroup\$ – Mumin Nabil Mar 12 '18 at 6:00
  • \$\begingroup\$ @MuminNabil, no, when a controller is in MPPT mode, it doesn't mean that it would charge the battery "optimally", it charges it at maximum possible solar power. \$\endgroup\$ – Ale..chenski Mar 12 '18 at 6:05
  • \$\begingroup\$ Ali Chen, great, does that mean the battery is not charged according to the well known charging profiles (bulk, absorption,tickle or equalization ) in such a controller ? wouldn't constantly charging the battery with large currents destroy the it? \$\endgroup\$ – Mumin Nabil Mar 12 '18 at 6:17
  • \$\begingroup\$ The standard battery charging curve establishes the maximum voltage/current that can be used to charge the battery in its current state. Most chargers charge batteries at currents less than the absolute maximum allowed. The MPPT controller typically reduces the current to keep the power at the maximum level. This seems counter-intuitive, but the solar panel delivers maximum power at the MTTP voltage, not at the maximum current output. \$\endgroup\$ – Dean Franks Mar 12 '18 at 8:56
  • \$\begingroup\$ Once the maximum power needed to charge the battery at the current charge state is higher than the output of the solar array, you are no longer concerned with extracting the maximum power from the solar array. Some other types of loads (like air conditioning) can be throttled up and down to track maximum MTTP output from the solar array as well. \$\endgroup\$ – Dean Franks Mar 12 '18 at 9:00

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.