Electronic Design
A Photovoltaic MPPT Algorithm for DC Electronic Loads

A Photovoltaic MPPT Algorithm for DC Electronic Loads

Many photovoltaic (PV) devices, such as PV panels and concentrated photovoltaic (CPV) modules, require outdoor testing for design verification, durability, and safety. A low-cost means of testing the output power of PV devices outdoors is to use a DC electronic load (eload); it provides high power-handling capability at a low cost.

Often one of the main functions of outdoor PV testing is maximum power-point tracking (MPPT). But because eloads are general-purpose instruments, it is up to the PV test engineer to implement an algorithm in the test software to perform MPPT.

Fortunately, there are a lot of MPPT algorithms you can choose from, with more than 19 published papers on the implementation and performance of different MPPT algorithms \\[1\\]. However, these algorithms were designed for solar inverters. Inverters are different from test systems, so a MPPT algorithm that performs well in an inverter may not necessarily perform well in a PV test system. This article introduces a MPPT algorithm that is a good fit for PV testing with an eload. We discuss how the algorithm is implemented and why it’s a good fit for MPPT in outdoor PV test systems.

The main difference between implementing a given MPPT algorithm in an inverter and an eload is in the I/O latency. In inverters, the MPPT algorithm runs on an internal microprocessor that can measure and compute and make load adjustments in microseconds. To perform the same set of operations with custom software and an eload could easily take tens of milliseconds due to the unavoidable I/O latency between the computer and the eload. This I/O latency is the main bottleneck affecting tracking speed. With that in mind, we chose and modified the MPPT algorithm discussed in this article to meet the needs of a PV test system using the following three criteria:

1. Fewer I/O transactions: Because I/O transactions impede MPPT speed, the number of I/O transactions must be small to ensure sufficient tracking response under varying environmental conditions.

2. Implementation simplicity: If you face typical time and budget constraints in PV testing, you don’t want to spend too much time implementing a complex MPPT algorithm, as it is only one small part of the test plan.

3. MPP measurement accuracy: Test data must be accurate and credible to properly validate the performance of a PV design.

Before we introduce an algorithm that meets the above criteria, we need to briefly discuss eloads. An eload is an instrument that can sink and measure the output power of a power source, such as a power supply or a PV device. Like a variable resistor, an eload can be adjusted to control the amount of power it is sinking. Eloads can measure the voltage drop across them and the current they are sinking. Eloads typically have three modes of operation: constant voltage, constant current, and constant resistance. The eload will maintain its mode setting even when the power output of the source it is connected to changes. For instance, if the eload is connected to the output of a PV panel and has a constant-voltage (CV) mode setting of 25 V, it will adjust its internal resistance to remain at 25 V as the I-V curve of the panel varies. If the maximum voltage of the panel (Voc) drops below 25 V, the eload will act like an open and the voltage across it will be whatever Voc is. In photovoltaic test, eloads are typically used in CV mode, so we will use this mode for defining the algorithm.


The algorithm that will be used for performing MPPT with an eload is a modified version of the incremental-conductance (IC) algorithm, which we will refer to as the incremental conductance for eloads (ICE) MPPT algorithm. For a detailed description of the IC algorithm for inverters, see the paper, “Maximum Photovoltaic Power Tracking: an Algorithm for Rapidly Changing Atmospheric Conditions”\\[2\\]. The ICE algorithm works by comparing the incremental conductance and the instantaneous conductance of a PV device’s output. These values give us the measured change in the I-V curve to tell us if we are already at the MPP. If we are not at the MPP, it tells us which way to go on the curve to find it.

The mathematical relationships of voltage and current that ICE uses to track the MPP can be expressed as:

At MPP: dP/dV = 0
Right of MPP: dP/dV < 0
Left of MPP: dP/dV > 0

Where dP is the change in power and is equivalent to d(IV).

Of course, we cannot exactly compute dI, dV, or dP. But we can approximate them using: ΔP = Pn – Pp, ΔV = Vn – Vp, and ΔI = In – Ip, where "p" indicates previous measured value and "n" indicates new measured value. Using the above relationships, we can tell whether we are at the MPP or to the left (at a lower voltage level than the voltage value of MPP, or Vmp) or right (at a higher voltage level than Vmp) of it on the I-V curves (for an example, see Figure 1).

For the ICE example in Figure 1, we are performing MPPT with an eload on the three I-V curves. The eload is set to CV mode. The colored dot on each curve represents that curve’s MPP. Our starting point is the MPP on curve 1 (blue dot). Our eload’s CV setting is Vmp, and we have measured and stored the current and voltage values at this point.

Now suppose that a change occurs and we go from curve 1 to curve 2. If we now measure the current and voltage, the voltage will be the same (because the eload is in CV mode), but the current will be different, so we know we are no longer at the MPP. Because the eload is in CV mode, we are now at the point on curve 2 to which the gray arrow #1 is pointing. We can tell which way we need to go to find the new MPP by using the following relationships: If dI (approximated using dI ≈ ΔI = In – Ip) is negative, we know we are to the right of the MPP and we need to move to the left (decrease CV setting); if dI is positive, we do the opposite.

In our example, moving from curve 1 to curve 2, dI will be negative, so we need to decrement our CV setting to find the new MPP. We decrement our CV setting by some set voltage step that we will call Vinc. Because we will now be at a different voltage and current level, we must use both for deciding our next action. Now that we have moved closer to the MPP on curve 2, dP will be positive and dV will be negative, so we know we are still to the right of the MPP. We continue decrementing our CV setting until dP equals zero, meaning it has no slope (it is not actually possible to reach dP = 0, but we will address that later). We have reached the MPP on curve 2 and it changes to curve 3.

Now we are on curve 3 where gray arrow #2 is pointing. Because our voltage did not change, we would once again detect that a change occurred by measuring a change in the current. This time dI will be positive, so we know we are to the left of the MPP and we must increment the CV setting (move right on the curve), using Vinc to find MPP.

As you may have already noticed, since ΔP and ΔV are only approximations of dP and dV, you really cannot reach dP/dV = 0 (ΔP/ΔV = 0). In fact, because we are stepping the voltage up or down to find the MPP, dV will always be the size of Vinc, which does not tell us when we are at the MPP. Thus, we are really concerned only with dP. So we need to come up with some error value E, where if E ≥ dP ≥ -E, the algorithm decides that the eload is at the MPP. If E is too small, the ICE algorithm will oscillate around the MPP.

A flow chart can show us how to implement the ICE MPPT algorithm (Figure 2). In that flow chart, the block that reads “V changed last iteration?” is where we determine whether the CV setting was changed during the last iteration of the algorithm. If not, that means we were at a MPP in the previous iteration, so we know there will be no change in voltage between this iteration and the previous iteration. We only need to make a current measurement to determine whether we are still at the MPP, and if not, to determine which way we need to adjust the CV setting to find it. This cuts down on I/O transactions, which, as we have already mentioned, are the main bottleneck for MPPT in a test system.

The initial or starting point of the ICE algorithm can be determined in two ways. The first method is to perform an I-V sweep by stepping the eload voltage from Voc to 0 V, measuring the current and voltage at each step. By saving the current and voltage values in arrays and multiplying the arrays together, one may arrive at an array of the power at each step. Search the array of power steps for the largest value. That is the MPP on the initial I-V curve. Use the measured voltage value at the MPP (which is Vmp) as the initial CV starting point for the eload and ICE algorithm.

A slightly easier but less accurate way is to measure Voc and set the initial CV starting point to the measured Voc value multiplied by 0.75. This calculated point will most likely not be the MPP of the initial curve, but it will be close. When a curve change occurs, the ICE algorithm will track to the actual MPP on the new curve.

The chosen Vinc value should be based on factors such as the power range of the PV device, weather variability, desired tracking speed, and desired MPP accuracy. A larger value of Vinc correlates to faster tracking of MPP, while a smaller value of Vinc translates to more accurate measurement of MPP. The magnitude of dI also yields information about how far away the MPP is. For faster MPPT, one could use the magnitude of change to make multiple values of Vinc for more efficient MPPT. For large dI values, a larger value of Vinc would be best because it’s a given that you are far from the MPP. And, of course, the reverse is true: For small dI values, a smaller value of Vinc is called for because only a small change occurred.


Before delving into testing and analyzing the performance results of the ICE algorithm, let’s compare it with another algorithm. The comparison algorithm will be the “perturb and observe” (P&O) algorithm. P&O is probably the most intuitive MPPT algorithm; it can be considered a brute-force approach to MPPT. This algorithm works by moving slightly from its current position on the curve, which we will call the origin, to a new position next to the origin. It then takes a voltage and current measurement at its new position and computes the power. Next, it compares the computed power level to the power level of the origin. If the power at its new position is higher than the power at the origin, it just moved closer to the MPP and the current position now becomes the origin. If the power at the current position is not higher than the origin, it deduces that it has moved away from the MPP. It then repeats the same process on the opposite side of the origin. If the origin is higher than both points immediately next to it, the origin is the MPP. The P&O MPPT algorithm is often used as the standard of comparison when testing a particular MPPT algorithm. For more information on implementing the P&O algorithm and its drawbacks, see “Comparative Study of Maximum Power Point-Tracking Algorithms.” \\[1\\].


A performance test was performed using the two algorithms. The two main criteria tested were the MPPT speed and accuracy. Speed was calculated using the number of I/O transactions (measurements and CV changes) it took to find the MPP because the I/O latency time is much larger than the time it takes for any other operation performed by the algorithm, such as mathematical calculations. The performance test was done using Agilent’s N3300A DC electronic load as the MPP tracker. To simulate a PV device output, we used the Agilent E4360A modular solar array simulator (SAS). The SAS’s I-V curve output was generated based on a PV panel with the following specifications under a 1000-W/m2 irradiance source and a temperature of 25°C:

• MPP = 130.6 W
• Voc = 25 V
• Isc = 7.9 A
• Vmp = 19.2 V
• Imp = 6.8 A

Using the above I-V curve specifications, we created a set of 17 I-V curves based on various irradiance levels and temperature values and stored them in the SAS. We used Agilent’s VEE programming language to create the program implementing each algorithm. Before running the algorithms, we determined the average latency time for the program to send and receive a measurement from the eload and how long it took to adjust the CV setting on the eload.

To ensure good voltage and current measurement accuracy, measurements were integrated over a 16.67-ms interval to cancel out AC line-power noise. The average time to perform a measurement was 43 ms. The average time to make a CV adjustment was 3.4 ms. After each load change, we added a 10-ms settling time, so a complete CV change took 13.4 ms on average. To increase its speed, the ICE algorithm used two voltage-step sizes, 100 mV and 800 mV. The step size used depended on the magnitude of ΔP or ΔI. The voltage-step size used for the P&O algorithm was 100 mV. We performed the test using the two algorithms and we measured the time it took to find the MPP of each of the 17 I-V curves and the MPP accuracy (see the table for test results).

The ICE algorithm had great MPPT accuracy with an average of only 80 mW of error. Of course, you can control accuracy by decreasing the voltage-step size (with the tradeoff of slower tracking speed). ICE was 39% faster than P&O. For this example test, we used two voltage-step sizes, but we could have increased the speed of the algorithm by increasing the number of voltage-step sizes for the program to choose from based on the magnitude of change. The overhead of adding additional step sizes is small and requires only a couple more if/else statements in the program.


A wealth of information is available on the implementation and performance of various MPPT algorithms for inverters. But the I/O speed and the purpose of an inverter is different from a PV test system. With these differences in mind, this article introduced a MPPT algorithm that was a good fit for performing MPPT with an eload. The ICE algorithm provides simplicity along with good MPPT speed and accuracy, but its main advantage is its MPPT accuracy and speed can be tuned to fit your needs by adjusting the size of the voltage step and by creating multiple voltage steps that are chosen based on the magnitude of change from one curve to another. For more information on a variety of MPPT algorithms see papers \\[1\\] and \\[3\\].


1. Trishan Esram and Patrick L. Chapman, “Comparison of Photovoltaic Array Maximum Power Point Tracking Techniques” http://www.simosolar.com/uploadfile/learn/uploadfile/200904/20090417030623524.pdf

2. K. H. Hussein, I. Muta, T. Hoshino, M. Osakada, “Maximum Photovoltaic Power Tracking: an Algorithm for Rapidly Changing Atmospheric Conditions” http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=342237&tag=1

3. D. P. Hohm and M. E. Ropp, “Comparative Study of Maximum Power Point Tracking Algorithms” http://www3.interscience.wiley.com/journal/100519851/abstract. 2002

Hide comments


  • Allowed HTML tags: <em> <strong> <blockquote> <br> <p>

Plain text

  • No HTML tags allowed.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Lines and paragraphs break automatically.