In general, the maximum power from the source to the load is transferred when impedances of source and load is equal. This means that we have only one maximum point in the function of power of the source. Because we can use a simple algorithm for finding the maximum of the function by finding point of change the sign of the derivative of this function. Of course, the direct way to find max power point is find point of max load current, but in this design it is somewhat difficult. For avoid this problem here used signal of peak current source during PWM circle.
Why we can use for search max power point of solar panel peak current signal against current of load?
U=L* dI/dt; where U= Usolar panel - Uload; (1)
When we charge accumulator Uload=const during long time (minutes and hours).
In our case voltage is const during PWM circle:
U=L* I/t; (2)
I= U * t /L; (3)
As we can see peak current proportional solar panel output voltage.
Therefore, peak power at the fall of PWM pulse:
Ppeak=U* I(t) = U2 * t /L; t - time of pulse; (4)
Average power during duty circle is integral of peak power from start to end of PWM pulse divide on time of PWM circle T, U=const:
Paver= U2* t2 /(2*L*T); t- width of pulse (5)
As we seen above, in moment end of PWM pulse voltage and current have direct proportion, formula (2), therefore:
Paver= U2 * t2 /(2*L*T)=(L * I /t) 2 * t2 /(2*L*T)=I2 * L/ (2*T); (6)
Therefore, we can find max value point of peak current and it means that we have max power from solar panel.
To find the point of maximum peak current, using a primitive algorithm to determine the point at which the derivative changes sign. In a function "maximum_powerpoint_tracker" in the file main.c is contained this algorithm.