Renewable EnergyPublished Paper1 citation

Archimedes Optimization for Solar MPPT

Hardware-implemented physics-inspired global optimization for maximum power point tracking under partial shading. Published in IJECE 2025 with experimental validation on STM32F4.

doi.org/10.11591/ijece.v15i3.pp2769-2785
Full Citation
The implementation of Archimedes optimization algorithm for solar charge controller-MPPT in partial shading condition
International Journal of Electrical and Computer Engineering (IJECE) · Vol. 15, No. 3, pp. 2769-2785 · 2025

The Problem

Photovoltaic arrays in real installations rarely receive uniform sunlight. Buildings, trees, clouds, and dust create partial shading patterns that split the power-voltage (P-V) curve into multiple peaks — a global maximum surrounded by local maxima that act as traps for conventional algorithms.

Perturb and Observe (P&O) and Incremental Conductance (INC), the two most widely deployed MPPT methods, were designed for single-peak P-V curves. When partial shading creates multiple maxima, these hill-climbing algorithms converge on whichever peak they encounter first, which is frequently a local one. The power left on the table can be 10-30% of the array's potential output.

Metaheuristic algorithms like Particle Swarm Optimization can find the global maximum, but their computational cost typically confines them to MATLAB simulations. There was no practical, hardware-validated implementation of the Archimedes Optimization Algorithm for real-time MPPT on a resource-constrained microcontroller — until this work.

The System

The STM32F4 microcontroller runs a bare-metal control loop: a voltage divider network (Z1 = 100 ohm, Z2 = 1445 ohm) scales the PV array output, the ADC samples voltage and current with DMA-driven 150-sample averaging for noise rejection, and the AOA algorithm computes the optimal duty cycle for the buck converter PWM output.

The Archimedes Optimization Algorithm models candidate solutions as objects immersed in a fluid. Each object has density, volume, and acceleration. Higher-density objects sink toward better solution regions while buoyant objects explore the search space. This physics-inspired balance of exploration and exploitation helps the algorithm escape local maxima on multi-peak P-V curves — the key advantage over gradient-based methods.

The system communicates real-time measurements over UART at 9600 baud, streaming voltage, current, computed power, and duty cycle to a serial monitor. No RTOS, no external libraries — the entire algorithm, ADC driver, and PWM controller run on STM32CubeMX-generated HAL in bare-metal C.

The experimental setup used a programmable DC power supply emulating different shading patterns on a 250W PV array. Testing covered five conditions: uniform irradiance, single-module shading, two-module shading, checkerboard pattern, and dynamic shading transitions.

System Architecture
1
PV Array
250W panel under programmable shading emulator
2
Voltage Divider
Z1 = 100 ohm, Z2 = 1445 ohm
3
ADC + DMA
STM32F4, 150-sample averaging per cycle
4
AOA Algorithm
Density/volume/acceleration global search
5
PWM Output
Buck converter duty cycle at 20 kHz
6
UART Monitor
9600 baud real-time data stream

Results

Under uniform irradiance, the AOA-based MPPT achieved 99.2% tracking efficiency — competitive with P&O's 99.5% but without the steady-state oscillation inherent to P&O's perturb step. Where AOA truly separates itself is under partial shading: 96.8% tracking efficiency compared to 94.5% for P&O, which frequently converged to local maxima in the checkerboard and two-module shading scenarios.

Convergence time to the global maximum under dynamic shading was 30-40% faster than Particle Swarm Optimization on the same STM32F4 hardware, thanks to AOA's lower per-iteration computational cost. The 150-sample ADC averaging proved effective at current-sensor noise rejection without introducing meaningful control latency.

The algorithm's population size (30 candidate solutions) and iteration budget (50 generations) were tuned to balance convergence reliability against the 100ms control cycle budget required for shading transient response.

Tracking Efficiency Comparison (%)
MethodUniformShadingConvergence
AOA (this work)99.2%96.8%100
P&O99.5%94.5%60
INC99%93.8%55
PSO98.5%95.5%70

Implementation

The firmware runs on STM32CubeMX-generated HAL with ADC, DMA, UART, and GPIO peripherals. The main control loop reads the ADC DMA buffer (150 samples), computes average voltage and current, normalizes to the search space boundaries, and executes one generation of the AOA algorithm to produce a new duty cycle for the PWM output.

The AOA objective function computes power from voltage and current measurements. Each candidate solution (an object in AOA terms) represents a duty cycle value. Objects update their positions based on collision behavior — when objects collide they attempt to reach equilibrium, which corresponds to algorithm convergence.

The companion repository at github.com/sigitdanip/aoamppt contains the full firmware source. Key files include main.c (hardware initialization, control loop, UART output), aoa_mpptfobj.c (AOA objective function and search logic), and the STM32CubeMX .ioc project file for peripheral configuration.

View source on GitHubsigitdanip/aoamppt\u2192