Solar photovoltaic (SPV) systems are employed in applications ranging from simple battery charging to complex grid-connected solar inverters. Maximum Power Point Tracking (MPPT) is an algorithm used in solar applications for extracting the maximum available power from PV module depending on environmental conditions. Maximum power varies with solar radiation, ambient temperature and solar cell temperature. The voltage at which PV module can produce maximum power is called 'maximum power point' (or peak power voltage). A solar charge controller embedded with the MPPT algorithm maximizes the amount of current going into the battery from the PV module. A low cost 8-bit microcontroller (MCU) can be used to implement a digital MPPT charge controller. ** Fig. 1** shows a block diagram of an SPV battery charging with MPPT.

**Related Articles**

- North Carolina State Improves Lithium-Ion Batteries and Stacked Solar Cells
- Solar-Powered Unmanned Aircraft Taking Off
- Proper Application and Evaluation of the Surge Test for PV Panels
- PV Technology Roadmap Efforts Receive Enthusiastic Support
- Renewable Energy Sparks Component Development

The most common topology used to implement MPPT algorithm is Perturb & Observe (P&O). In this method the system perturbs in a certain direction, measures voltage and current, calculates Power and compares it with the last measured value. If the Power increases, the system continues to perturb in the same direction or else it perturbs in the reverse direction. The amount of perturb or disturbance introduced can be controlled by implementing a closed loop control. It is also referred to as the hill climbing method, because it depends on the rise and fall of the curve of Power against voltage across the MPP. This is the simplest MPPT algorithm to implement. ** Fig. 2** shows an SPV characteristic curve. The MPP voltage at any instant can be higher or lower from that given (by the SPV manufacturer). Therefore, control output that decides the operating point should be a signed number so that it can move forward or backward from the operating point.

**Challenges Of Implementing MPPT **

The challenges with the MPPT charge controller are to operate the converter steadily, regardless of SPV conditions, load changes, and noise in system. A buck or boost converter is used to implement digital MPPT charge controller. SPV voltage and current as well as battery voltage and current are monitored using an analog-to-digital converter (ADC) to implement the MPPT and to follow the battery’s charging profile. The sense feedback signals are then processed by an MCU core to calculate next PWM switching t_{ON} time. The PWM module generates the required PWM pattern for a given converter. ADC resolution, PWM resolution and core data calculation resolution play an important role in its steadiness of operation.

Operating an 8-bit MCU at 8 MHz reduces MCU power consumption, however, limiting the PWM input clock to a maximum of 8 MHz. Therefore, for 30 kHz operation the maximum digital number of PWM would be ~266, or 9 bits. A general ADC may support 8-bit, 10-bit, or 12-bit resolution. With 9-bit PWM resolution, maximum 10-bit ADC resolution can be selected, as higher resolution may not be any advantage. Choosing a high resolution ADC will increase conversion time. The control loop output should be a signed number so the control loop calculation should be in a signed mode. To keep the number resolution intact, it should be in an 8-bit fraction mode. The 8-bit fraction mode calculation allows maximum control loop output to be a digital number swing of -128 to +127. The modulus of maximum control loop output represents the maximum duty cycle, so it should be either equal to or more than PWM period value to get maximum resolution for the number of calculations in the control loop. A Proportional-Integration (PI) control loop compensation block would also have its own math resolution, and for any given hardware and control loop performance, it is very tough to find a PI coefficient that can produce zero or one error at the input of compensation block. Because of all of the above mentioned limitations, the minimum duty step variation can go up to 2-3% duty cycle, thus the output would always be unstable across a given reference point with conventional digital PI swing controller implementation.

**Direct Drive **

Direct duty cycle control is the simplest and most effective way to implement the MPPT algorithm in an 8-bit MCU where even 1-2 bits LSB error in math calculation can impact the system. Direct duty cycle control controls the duty cycle from the error produced by reference and actual value sensed by the controller. The output battery charging current is sensed by the ADC and is compared with reference current generated by maximum power point algorithm. Photovoltaic voltage and current are sensed to implement the MPPT algorithm, so the output of the MPPT algorithm represents a current reference for control of the charging current. The error (reference - measured) determines the duty cycle of the switching MOSFET to control the charging current, as shown in ** Fig. 3**. Based on the error sign, the duty cycle either increases or decreases. As duty cycle directly controls the system, no multiplications or divisions are required, and the duty cycle can be controlled in the order of single LSB, without any error. This allows control of PWM duty cycle with maximum possible resolution, which produces stable operation even with dynamic load. Consider a scenario where the inverter is running from battery and drawing highly non-linear current. In this case, rapid changes in the charging current are observed and thus MPP keeps on oscillating.

With this MPPT mechanism, you can obtain stable operation around MPP, resulting in higher efficiency of MPPT in the system. Thus, this algorithm enables a tight control over rapidly changing system conditions.