I am trying to understand the working of an MPPT charger for a Li-po battery (3.7 V nominal) and a 6 V, 2 W solar ‎panel so that I can select the right charger for my project.

After searching and reading a lot of related material on the net, my understanding is that, while charging, in all light conditions, the voltage from the solar panel will remain ‎more or less constant, but the available current will change. Thus at the input side of the charger we are ‎getting more or less the same voltage but varying current as the light changes.

‎At the output side of charger, the voltage must be higher than the battery voltage (to be able to charge ‎it). So the charger will keep on monitoring battery voltage and keep the output voltage higher than that.

But as the light condition changes, the available current from the panel changes, and so does the MPP ‎‎(maximum power point), and the charger adjust the output voltage to the MPP voltage (to get most ‎of available power for charging). But still this voltage will be higher than the battery voltage.‎

Please correct me if I am wrong.‎


4 Answers 4


A solar panel is not a voltage source (the voltage does not "remain more or less constant"); it is a current source over most of its I/V characteristic. The voltage it shows is "set" by what you connect to it.

When you connect a battery to it, the voltage will be set by that battery; connect a charger to it, and the voltage will be set by the input impedance of that charger. This voltage may be nowhere near the voltage at the MPP; for instance, a 5 V battery wouldn't be a good match for a 12 V solar panel.

The idea of an MPPT is to keep the panel producing maximum power under all circumstances. The MPP is where V·I is maximal, or the maximum rectangular area that will fit under the panel's I/V characteristic, about 10 W in this example:

MPP graph

(Image source - my website: Using a solar panel for USB charging)

Suppose you connect a 5 V output DC/DC converter to a solar panel. It would work fine, but it would set its input impedance (by varying the PWM) to a point that doesn't use the full power of the solar panel (the "you are here" point), only about 3 W of the available 10 W.

By varying the input impedance, you can arrive at the MPP. The optimal way of doing that is by varying the input impedance of the DC/DC converter and measuring if more power is delivered at its output.

A simpler (but less efficient) way is setting a fixed point on or near the MPP, say 16 V, and reduce the input current of the DC/DC converter (by varying its input impedance by varying the PWM) when the panel voltage drops below that 16 V. This method if often used these days for small applications. It works fairly well because the MPP voltage doesn't change much across lighting conditions.

In both methods, the input of the DC/DC converter is regulated, not its output, the output behaving roughly like a current source.

The charger is a separate part of the system, and has its own regulation for correctly charging your batteries, using the output of the DC/DC converter.

  • \$\begingroup\$ Very useful, further cleared things for me. ‎ Would I be right if I say that for charging 3.7V (4.2V fully charged) LiPo battery, I can choose 6V solar ‎panel and any MPPT charge controller like CN3791 (Vin: 4.5V to 28V), MCP73871 (Vin: VREG + 0.3V — ‎‎6V), LT3652 (Vin: 4.95V to 32V), BQ24075 ‎(Vin: –0.3 to 28V)?‎ \$\endgroup\$
    – Zeni
    Commented Sep 4, 2020 at 13:20
  • \$\begingroup\$ A 6V panel will do; I don't know enough about the ICs you mention to tell which to use and which not to. I only have experience with the LT3652 (in its LTM8062 guise) and a 12V panel. \$\endgroup\$
    – ocrdu
    Commented Sep 4, 2020 at 16:21
  • \$\begingroup\$ Just wanted your opinion on input voltage ranges of these controllers, if these are okay for 6v panel and lipo battery? \$\endgroup\$
    – Zeni
    Commented Sep 4, 2020 at 17:57

MPPT and battery charging are 2 separate control laws, and operate independently, although will have some interactions. Explained below.

MPPT stands for maximum power point tracking. Its aim is to get maximum power out of the solar panel. There is a relationship between the current and voltage wherby, if the controller draws more current out of the solar panel its voltage output reduces, and vice versa if the controller draws less current the solar panel voltage increases.

The power is the current multiplied by the voltage. To get maximum solar panel voltage the controller would need to draw 0 current, but then the power would be 0. To get maximum current the controller could draw the maximum available current, but then the solar panel voltage would drop to 0 and the power would be 0. There is an optimum point where the amount of current the controller draws from the solar panel is just right to maximise the power drawn from the solar panel (current times voltage).

This optimum power point is going to depend on how much light is hitting the solar panel as well as the characteristics of the panel itself. When it is brighter the optimum power point will allow the controller to draw more current at a higher voltage while maximizing the available power output. When it is less bright the controller will need to reduce the amount of current it draws to extract maximum available power, otherwise the solar panel voltage will drop and power will reduce below what is available.

Battery charging is a separate control domain from MPPT. Lithium battery charging starts with a constant current charge, naturally the voltage will be a little higher than the existing battery voltage, but LiPo's have low internal resistance so voltage control is not going to work for the initial charge stage - a constant voltage at this stage would have short circuit effect, i.e. very high uncontrolled currents.

Once the battery reaches charge voltage the charger will then change to fixed voltage mode where it will hold the battery voltage at the charge level of (typically) 4.2V. It will remain in this mode until the current reduces to near zero.

Obviously there is going to be some interaction between the MPPT control and the battery charging control. In the initial stages of charging the MPPT control will dictate the power level which in turn will determine how much current the charger delivers to the battery. But the charger will need to adjust for the charge voltage, a higher charge voltage means less current when drawing the same power. In the later stages of charge, the battery charge control will dictate the power level and the amount of power drawn from the solar panel will reduce.

The current delivered into the battery is not going to be the same as the current coming out of the solar panel, because the solar panel voltage will not match the battery voltage. Therefore, the MPPT charger will likely have an internal "DC-link" which is basically a DC supply rail powered by the solar panel and buffered with a large capacitor, which is then drawn on by the battery charger side.

To achieve current control and manage the differing voltage levels, a switch-mode DC-DC type converter circuit would be used, one either side of the DC-link. Whether these are buck, boost or buck-boost circuits will depend on the designed voltage ranges for solar input and battery output. I would guess it would probably need a buck-boost converter for the solar input to create a stable DC-link voltage, and then a buck converter for the battery charger.

EDIT comment on solar panel I/V curve The relationship between the current and voltage for a given light level is not linear, see diagram in other answer. However, before the MPP (maximum power point) on the I/V curve, the current reaches a maximum and stays almost constant (constant current source behaviour). But, beyond the MPP the voltage stays almost constant until it reaches a maximum at 0 current (constant voltage behaviour). So it behaves as constant current source, but also constant voltage source and everything in between depending on the I/V point.

  • 1
    \$\begingroup\$ Pretty good answer. I just want to comment on the relationship between incident light and maximum power point voltage. The voltage at which the maximum power point occurs is not very sensitive to incident light. The maximum power point voltage changes very little over the range of lighting conditions. The maximum power point current varies a great deal over the range of lighting conditions. This is a property of the solar panel itself. \$\endgroup\$
    – user57037
    Commented Sep 4, 2020 at 20:42
  • \$\begingroup\$ Good point, the maximum available current changes more than the maximum available voltage with respect to changes in luminance. And the voltage of the mpp will change slightly but not as much as the current. However, if you draw too much current for a given luminance the voltage quickly drops to zero. The voltage is still important though for maximising power. \$\endgroup\$ Commented Sep 8, 2020 at 13:20
  • \$\begingroup\$ Does it mean that the MPPT algorithm can just be implemented independently and will move from true MPPT on its own when connected to a battery charger when the charging power required is less than available solar panel generated power? as in will the charging limits set by the battery charger "tell" the MPPT circuit to move further away from true MPPT or is there a combined algorithm for this ? Is there a source code for this that you guys can refer me to? \$\endgroup\$
    – Kevin
    Commented Oct 4, 2020 at 13:26
  • \$\begingroup\$ The MPPT algorithm can operate independently, however, it will need to watch out for the DC-link voltage, and reduce power if the voltage gets too high. - the DC-link voltage will continue rising if supply exceeds demand. It would probably be more effective if the charging circuit knew how much power was available. Operating independently the charging circuit could attempt to regulate the DC-link voltage, since with power equilibrium the DC-link voltage will be constant. It would be easier to make the control loops more responsive and stable if the charger knew the MPPT power input though. \$\endgroup\$ Commented Oct 9, 2020 at 10:09

Your line of thinking is correct. Think of current changes in terms of a cloudy day. Using a 12V solar panel, you will get the output voltage between 12.6 (very cloudy) to about 13.5 (very sunny). The current between these voltage variations also varies. MPPT solar chargers are supposed to be more efficient than PWM as you might have read already. MPPT are about 8-12% more efficient.

The solar charger regulates the voltage in accordance with the amount of charge the batteries have obtained while charging. A fully charged battery will be at 13.4V for a 12V lead acid battery whereas for 6V battery, it might be around 7.2V.

I hope this answers your question.


I think that is 100 percent correct. Technically, the charge controller will adjust itself to extract maximum available power from the panel.

If the input voltage needs to change, the controller will change it.

But the nature of the solar panel is that MPPT voltage only changes a little bit with changing light conditions. So that is why the solar panel voltage will stay the same.

In fact, the way the charge controller probably works is by changing its duty cycle (it will be a buck converter) up and down and watching to see what effect it has on the battery charge current. It will always keep the duty cycle at the value that produces maximum charge current. And this will also result in the solar panel output voltage being relatively constant.

Note that depending on the battery state of charge, the battery may not be able to accept the maximum power available. If that happens, then the controller will no longer perform maximum power point tracking. Instead, it will extract just enough power to charge the battery according to the charge algorithm.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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