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.”

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.