MPPT - Maximum Power Point Tracking - Solar Panel Equivalent Circuit and Voltage Current Characteristic Graph

mppt: a maximum power point tracking photovoltaic system.


To maximize a photovoltaic (PV) system's output power, continuously tracking the maximum power point (MPP) of the system is necessary. The MPP depends on irradiance conditions, the panel's temperature, and the load connected. Maximum power point tracking (MPPT) algorithms provide the theoretical means to achieve the MPP of solar panels; these algorithms can be realized in many different forms of hardware and software. PV systems that lack MPPT rarely operate at the most efficient, MPP. This is why the rated power of the solar panel is almost never realized when connecting a load. The goal of this project was to rapidly develop, construct, and test a working solution to the MPP problem with a limited budget.

This project was developed from the ground up with only a few references. Dr. Jaber Abu-Qahouq was the team's advisor and provided invaluable guidance throughout the project's lifetime. The team consisted of five undergraduate students: Travis Grant, Stephen Tirador, Nathan Wilbanks, Matt York, and myself.

Rapid development necessitated that the team first look through existing analysis and possible solutions to the MPP problem. It became clear that the perturb and observe (P&O) technique was widely used for its ease of implementation. It is based on the following criterion: if the operating voltage of the PV array is perturbed in a given direction and if the power drawn from the PV array increases, this means that the operating point has moved toward the MPP and, therefore, the operating voltage must be further perturbed in the same direction. Otherwise, if the power drawn from the PV array decreases, the operating point has moved away from the MPP and, therefore, the direction of the operating voltage perturbation must be reversed.

The team chose to implement the P&O algorithm in software to add flexibility to the system as well as simplify the system to the point where the system could be rapidly constructed and testing commenced. The following components were needed to design a minimal working solution: solar panel, current sensor, voltage sensor, DC-DC converter, digital controller, and the glue logic/circuitry to connect everything together.

Maximum Power Point Tracking Block Diagram

Solar Panel

SunWize OEM40 Solar Panel

The solar panel used in our system is an OEM40 model manufactured by SunWize Technologies, Inc and was provided by the Department of Electrical and Computer Engineering's Dr. Tim Haskew. It has a power rating of 40 W, an open-circuit voltage (Voc) of 21 Vdc, and a short-circuit current (Isc) of 2.68 A.

Digital Controller

TI TMS320F28335 Microcontroller

The microcontroller provides the control in our system. The choice of microcontroller for the system dictates much of the cost, performance, and flexibility of the entire system. Taking into consideration the project's constraints, the Texas Instruments TMS320F28335 model digital signal controller (DSC) was chosen. The single-chip C2000 family of microcontrollers is targeted toward real-time control applications thanks to powerful, high performance integrated peripherals. The core is "math-optimized" and gives designers the means to improve system efficiency, reliability, and flexibility when the application requires complex algorithms. It features:

The C2000's development tools are very useable and help minimize development time. Software for the controller can be developed, deployed, and tested with ease thanks to the provided, easy to use IDE featuring a C/C++ assembler/compiler/linker in addition to a powerful debugger and seamless device programmer.

DC-DC Converter

Vicor Micro V28C24C100BL DC-DC Converter and 24646R Evaluation Board

A DC-to-DC converter is an electronic circuit which converts a source of direct current from one voltage level to another. It is a class of power converter. Electronic switch-mode DC to DC converters operate by storing the input energy temporarily and then releasing that energy to the output at a different voltage and current. Just like a transformer, they essentially just change the input energy into a different impedance level. So whatever the output voltage level, the output power all comes from the input; there's no energy manufactured inside the converter. In fact some energy is used by the converter circuitry and components while doing their job. It is this principle that makes a DC-DC Converter essential for MPPT.

The converter presents an electrical load to the solar panel that varies as the output voltage of the converter varies. This load variation in turn causes a change in the operating point (current and voltage characteristics) of the panel. Thus by intelligently controlling the operation of the DC-DC converter, the power output of the panel can be intelligently controlled and made to output the maximum possible.

The DC-DC power converter used in our system is a Micro 24 Vout, 100 W V28C24C100BL model manufactured by Vicor. The input voltage range of the converter is 9-36 Vdc. Because the voltage provided by the solar panel (which serves as the input voltage to the converter) can drop below the converter's 9 Vdc minimum and thus cause the converter to shut down, our MPPT system is only operational when the voltage provided by the solar panel is greater than or equal to 9 Vdc. The output voltage of the converter can be varied between 10% and 110% of its nominal 24 Vdc output (i.e. 2.4-26.4 Vdc) via a reference input voltage at the SC pin with respect to the -OUT pin between 0.123-1.353 Vdc. The converter has the capability of functioning in isolated or non-isolated mode depending on whether the grounds of the converter (-IN and -OUT) are separate or connected together, respectively.

Sensing Circuits

Voltage Sensor

Voltage Sensor Circuit

In order for the MPPT controller to measure the voltage provided by the solar panel, two resistors, R1 and R2, are employed in parallel with the solar panel to act as a voltage divider. The voltage across R2 in the voltage divider is fed into an analog-to-digital converter (ADC) driver circuit (op-amp in a voltage follower configuration that feeds into a low-pass filter) before being delivered to the ADCINA0 channel of the MPPT controller. By choosing the values of R1 and R2 as 1.07 MΩ and 165 kΩ, respectively, the maximum amount of current diverted from the load, I2, is small enough, even in a worst-case scenario, to be considered negligible.

The allowable voltage range for each ADC channel of the MPPT controller is 0-3 Vdc. Therefore, the voltage across R2 (which serves as a scaled-down representation of the solar panel's voltage) should not exceed 3 Vdc. Based on the chosen value of R2 as 165 kΩ, the maximum voltage, V(R2,max), sent to the ADC driver circuit (and thus ADC channel ADCINA0) is ~2.81 Vdc.

Current Sensor

AD8215 Current Sensor Circuit

In order for the MPPT controller to measure the current provided by the solar panel, a single resistor (Rsense) is placed in series between the solar panel and the DC-DC converter. The voltage across Rsense is fed into an AD8215 current sensor manufactured by Analog Devices whose output voltage is then fed into an ADC driver circuit (op-amp in a voltage follower configuration that feeds into a low-pass filter) before being delivered to the ADCINA1 channel of the MPPT controller. By choosing the value of Rsense as 51 mΩ, the maximum voltage drop across Rsense, VRsense, is small enough, even in a worst-case scenario, to be considered negligible.

As stated previously, the allowable voltage range for each ADC channel of the MPPT controller is 0-3 Vdc. Therefore, the output voltage of the AD8215 current sensor (which serves as an equivalent voltage representation of the solar panel's current) should not exceed 3 Vdc. Based on the chosen value of Rsense as 51 mΩ, the maximum voltage, Vout, sent to the ADC driver circuit (and thus ADC channel ADCINA1) is ~2.73 Vdc.

Complete Sensing Circuit with ADC Driver Circuits

Complete Sensing Circuit Complete Sensing Circuit Diagram

In order to condition each of the voltage signals sent to the ADC channels of the MPPT controller, Texas Instruments OPA340 model op-amps are used in voltage follower configurations with each of their outputs fed into a low-pass filter. The OPA340s provide low output impedance to each of the ADC channels without modifying each of the output voltages being sent from the voltage and current sensor circuits. Of added benefit is the op-amps' ability to protect each of the ADC channels from being permanently damaged by an input voltage that exceeds its maximum operating threshold. This is accomplished by powering each of the op-amps with the maximum allowed voltage of the ADC channels: 3 Vdc. This effectively clips any potentially damaging voltage that would otherwise be fed into the ADC channel at a safe value of 3 Vdc. The voltage and sensor circuits along with their corresponding ADC driver circuits are all combined to form the "sensing circuit" for the MPPT system.

Digital-to-Analog Converter

Second-order low-pass analog filter diagram

The DC-DC converter is controlled via a reference input voltage at the SC pin with respect to the -OUT pin between 0.123-1.353 Vdc. The digital signal controller utilizes on-chip pulse width modulated (PWM) signal generators to create an output signal meant to control the DC-DC converter. An analog low-pass filter can remove the high frequency components of the PWM signal, leaving only the low-frequency content. In this MPPT application, a second-order passive filter was used to provide adequate filtering and resolution. The PWM duty cycle is controlled via software; the duty cycle values for which the reference input voltage of the converter is 0.123-1.353 Vdc were obtained experimentally and the software ensures that the signal is never out-of-range. This (PWM as DAC) solution is a legitimate lower cost alternative to dedicated off-chip DACs.

MPPT Algorithms

Various algorithms may perform MPPT. Important factors to consider when choosing a technique to perform MPPT are the ability of an algorithm to detect multiple maxima, costs, and convergence speed.

The irradiance levels at different points on a solar panel's surface tend to vary. This variation leads to multiple local maxima power points in one system. The efficiency and complexity of an algorithm determine if the true maximum power point or a local maximum power point is calculated. In the latter case, the maximum electrical power is not extracted from the solar panel.

The type of hardware used to monitor and control the MPPT system affect the cost of implementing it. The type of algorithm used largely determines the resources required to build an MPPT system.

For a high-performance MPPT system, the time taken to converge to the required operating voltage or current should be low. Depending on how fast this convergence needs to occur and your tracking system requirements, the system requires an algorithm (and hardware) of suitable capability.

Perturb and Observe

The concept behind the "perturb and observe" (P&O) method is to modify the operating voltage or current of the photovoltaic panel until you obtain maximum power from it. For example, if increasing the voltage to a panel increases the power output of the panel, the system continues increasing the operating voltage until the power output begins to decrease. Once this happens, the voltage is decreased to get back towards the maximum power point. This pertubulance continues indefinitely. Thus, the power output value oscillates around a maximum power point and never stabilizes.

Perturb and Observe Behavioral Model

P&O is simple to implement and thus can be implemented quickly. The major drawbacks of the P&O method are that the power obtained oscillates around the maximum power point in steady state operation, it can track in the wrong direction under rapidly varying irradiance levels and load levels, and the step size (the magnitude of the change in the operating voltage) determines both the speed of convergence to the MPP and the range of oscillation around the MPP at steady state operation.

Incremental Conductance

Incremental conductance considers the fact that the slope of the power-voltage curve is zero at the maximum power point, positive at the left of the MPP, and negative at the right of the MPP. The MPP is found by comparing the instantaneous conductance (I/V) to the incremental conductance (ΔI/ΔV). Once you have the MPP, the system maintains this power point unless a change in V or I occurs (caused by an external event). If this happens, the algorithm will find the new MPP.

Incremental Conductance Behavioral Model

This technique has an advantage in that it can reach and maintain the MPP without losing some efficiency by having to oscillate around this point. Under rapidly changing conditions this algorithm tracks more accurately than the P&O method. The disadvantage of this method is that it can take longer to reach the MPP because the increased computation required decreases the number of perturbations to the operating voltage and current possible in a set amount of time.

Embedded Software

To implement this intelligence, the group employed the aforementioned TF320F28335 digital controller. With this development target in mind, the software development began immediately. The team focused on getting minimal "working" code onto the controller as soon as possible. The team became familiar with the TI IDE, debugger, programmer, and most importantly the header files. Through the course of a couple of weeks different projects were deployed to the board, ranging from flashing an LED to running programs from the flash memory. Each peripheral to be used in the MPPT project was investigated and played with in these first few weeks. Most significantly, unit tests for the PWM and the ADC (using DMA) were developed. Each unit test was built with pre-defined pass/fail criteria.

For the PWM unit test, the duty cycle of the PWM would be automatically, continuously varied through the entire operating range of the final MPPT project as defined by the DC-DC converter control pin specs. The test would pass if the PWM duty never exceeded or fell under the defined upper and lower limits and if the PWM duty was continuously increasing or decreasing. This test could run without interfacing with the DC-DC converter; an oscilloscope was hooked into the PWM pins of the controller and the test behavior was observed.

For the ADC unit test, the result of an ADC conversion would be stored in a monitored variable. The reference analog signal was varied through a range of values and the variables value was recorded for each analog value. These recorded values were compared to calculated, expected values to verify operation.

Once the team was very comfortable working with the C2000, work began on a custom MPPT algorithm based on the P&O algorithm from before. This algorithm was attempted first since it was the simplest solution requiring the least amount of effort while still fulfilling requirements. The simplicity of the algorithm could also afford the team more time to integrate the hardware and software near the end of development if necessary. This system and algorithm does not require a scheduler; if the controller needed to be more reactive to more inputs (tracking the MPP of more solar panels) then a scheduling method would likely be necessary to ensure a quick response to all inputs and efficient utilization of the processor.

This system is designed to run for a long time; the software is single purpose and loops forever. Each loop is an iteration of the P&O algorithm described earlier. Each iteration starts by setting a variable to the calculated amount of power being supplied by the panel (current and voltage values known from ADC). The program then switches on whether the power point is increasing or decreasing in voltage. Inside each case the iteration's power value is compared to the previous iteration's and the duty of the PWM is either increased or decreased to move closer to the MPP; if the PWM duty is increased, the voltage will be increasing, if the PWM duty is decreased, the voltage will be decreasing. Before repeating the loop, the previous iteration's power variable is set to the current iteration's. Pseudo code for this behavior is below.

next_pwr = calcPwr(adc_voltage, adc_current);
    case PV_RIGHT :
      if (next_pwr > prev_pwr){incDuty();}
      else if (next_pwr <= prev_pwr){
        voltage_direction = PV_LEFT;}
    case PV_LEFT :
      if(next_pwr >= prev_pwr){decDuty();}
      else if (next_pwr < prev_pwr){
        voltage_direction = PV_RIGHT;}
prev_pwr = next_pwr;

Project Cost

Item Notes Price
Solar Panel SunWize OEM40 (on hand) 0.00
Digital Controller TMS320F28335 Experimenter Kit 110.00
DC-DC Converter Vicor Micro 24 Vout, 100 W (V28C24C100BL) 175.00
Circuit Materials OPA340s, AD8215, prototyping board, passive components, etc… 35.00

When proposing this project, the projected cost and budget was $500. We came in considerably under budget primarily thanks to having a solar panel on hand. A solar panel could have been constructed from solar cells available at $.5/Watt, or about $20, though construction materials would add more cost. Our simple system (40W panel and P&O algorithm) could have been constructed with a very simple microcontroller and a less capable DC-DC converter, bringing the cost down to close to $150.

However, with a cheaper microcontroller, the math operations take longer to evaluate. The incremental conductance algorithm is more math intensive and has more control flow for one iteration; a cheap microcontroller will not offer the same performance as the C2000. Also, the C2000 has enough performance capabilities and ADC and PWM channels to calculate the MPPT of many different solar panels simultaneously.

Future Work

The scope of this project was simply to create a working prototype of a MPPT system. This system successfully uses the simple P&O algorithm to reach the MPP. The additional resources (labor) needed to implement the more complex incremental conductance algorithm is quite modest. Reaching a stable, true MPP at steady state instead of oscillating around this point would improve the system's efficiency and increase reliability. Thus implementing the incremental conductance algorithm is a good choice in continuing this project.

Another extension of this project would be to directly power the microcontroller and other circuits from the solar panel instead of from a power supply. Or to incorporate a power supply into the system that draws energy from the solar panel or an energy storage element that is in turn charged by the solar panel. This extension would allow the system to be deployed to remote locations.

Yet another more useful system would be one that could directly power a DC or AC load. An additional DC-DC converter would be needed to supply a regulated DC signal. An inverter is needed to supply an AC signal. If the AC signal is meant to connect to the grid, it is necessary to synchronize the frequency of the signal with that of the grid in addition to limiting the voltage to no higher than the grid voltage.

This digital controller would allow us to add these features to our system with relative ease thanks to its high performance and many peripherals.

UPDATE: Thanks to the success of this project and the large amount of documentation left behind, two new teams will be working on extending different parts of this project for next year.


A renewable energy system, like the one implemented here, is suitable for residential and/or industrial applications. Such a system would typically provide a regulated AC output voltage that may also track the input mains utility voltage in phase and amplitude at hundreds to thousands of watts. Thus a system such as this can be deployed easily with little concern about adapting a home or business's electrical wiring to take advantage of solar energy. Many areas allow surplus energy generated by systems such as this to be sold to the utility grid in a policy known as "net metering." But for this project, these features were out of scope.