A MATLAB & Simulink implementation of a Maximum Power Point Tracking (MPPT) system for a photovoltaic (PV) array using the Perturb and Observe (P&O) algorithm.
The project models the electrical characteristics of a solar PV panel, implements MPPT logic, designs a boost converter in Simulink, and evaluates system performance under varying environmental conditions.
| I–V Curve | P–V Curve |
|---|---|
![]() |
![]() |
- PV mathematical model
- I–V characteristic curve generation
- P–V characteristic curve generation
- Maximum Power Point (MPP) detection
- Perturb & Observe (P&O) MPPT algorithm
- Boost converter implementation in Simulink
- Performance analysis under varying irradiance
- Performance analysis under varying temperature
- MATLAB R2023a
- Simulink
- Simscape Electrical
MPPT-Algorithm-PV/
│
├── matlab/
│ ├── main.m
│ ├── pv_model.m
│ ├── iv_curve.m
│ ├── pv_curve.m
│ └── mppt_po.m
│
├── simulink/
│ ├── MPPT_System.slx
│ └── mppt_po.slx
│
├── images/
│ ├── matlab/
│ └── simulink/
│
├── docs/
│
├── report/
│
├── LICENSE
└── README.md
The MATLAB portion of the project includes:
- PV array mathematical model
- Current–Voltage (I–V) characteristics
- Power–Voltage (P–V) characteristics
- Maximum Power Point calculation
- Perturb & Observe duty cycle algorithm
Example output:
- PV I–V Curve
- PV P–V Curve
- Maximum Power Point
- Voltage at MPP
- Current at MPP
The Simulink implementation consists of:
- PV Array
- Boost Converter
- MOSFET Switching Circuit
- Inductor
- Diode
- Output Capacitor
- Resistive Load
- Voltage Measurement
- Current Measurement
- MATLAB Function Block implementing the P&O MPPT algorithm
The controller continuously adjusts the converter duty cycle to operate the PV array at its Maximum Power Point.
Temperature kept constant at 25°C.
| Irradiance (W/m²) | Observation |
|---|---|
| 1000 | Maximum output power |
| 800 | Output current decreases |
| 600 | Reduced power generation |
| 400 | Stable MPPT operation |
| 200 | Lowest power output while maintaining tracking |
Observed behaviour:
- PV voltage remains nearly constant.
- PV current decreases with irradiance.
- Output power decreases proportionally.
- MPPT maintains stable operation.
Irradiance kept constant at 1000 W/m².
| Temperature (°C) | Observation |
|---|---|
| 25 | Highest output power |
| 35 | Slight decrease in voltage |
| 45 | Further voltage reduction |
| 55 | Lowest voltage and power output |
Observed behaviour:
- PV voltage decreases as temperature increases.
- PV current changes only slightly.
- Output power decreases.
- MPPT successfully tracks the operating point.
The implemented Perturb & Observe MPPT controller successfully tracks the Maximum Power Point under different irradiance and temperature conditions.
Simulation results demonstrate:
- Stable converter operation
- Fast convergence
- Reliable MPP tracking
- Expected photovoltaic characteristics
- Incremental Conductance MPPT
- Fuzzy Logic MPPT
- Artificial Neural Network based MPPT
- Partial Shading Detection
- Battery Charging Integration
- Real-time Hardware Implementation using Arduino/STM32
Run:
mainOpen:
MPPT_System.slx
Click Run to start the simulation.
git clone https://github.com/Shv8ank/MPPT-Algorithm-PV.git


