Hi I am studying IC and P&O in a boost converter for solar panels.
I am startled because I get nearly identical results. Does anyone know why can't I see pratically any deviation between both?
In the appendix I posted both my irradiance and temperature profile and the results I got from the mppt panel voltage (in every parameter, be it current, power or efficiency the result is basically really close).
I used the following functions:
function D = INC(Vpv,Ipv)
% Define internal values for the voltage and power as persistent
% variables
persistent Dprev Iprev Vprev
% Initialize the internal values for the voltage and power on the
% first pass
if isempty(Dprev)
Dprev = 0.7;
Vprev = 30;
Iprev = 8;
end
% Initialize algorithm parameters
deltaD = 0.0025;
% Calculate measured array power
deltaI = Ipv - Iprev;
deltaV = Vpv - Vprev;
delta = deltaI/deltaV;
% Increase or decrease duty cycle based on conditions
if (Vpv-Vprev) == 0
if (Ipv-Iprev) ~= 0
if (Ipv-Iprev) > 0
D = Dprev - deltaD;
else
D = Dprev + deltaD;
end
else
D = Dprev;
end
else
if (Ipv + delta*Vpv) ~= 0
if (Ipv + delta*Vpv) > 0
D = Dprev - deltaD;
else
D = Dprev + deltaD;
end
else
D = Dprev;
end
end
% Update internal values
Dprev = D;
Vprev = Vpv;
Iprev = Ipv;
function D = PandO(Vpv,Ipv)
% Define internal values for the voltage and power as persistent
% variables
persistent Dprev Pprev Vprev
% Initialize the internal values for the voltage and power on the
% first pass
if isempty(Dprev)
Dprev = 0.7;
Vprev = 30;
Pprev = 2000;
end
% Initialize algorithm parameters
deltaD = 0.0025;
% Calculate measured array power
Ppv = Vpv*Ipv;
% Increase or decrease duty cycle based on conditions
if (Ppv-Pprev) ~= 0
if (Ppv-Pprev) < 0
if (Vpv-Vprev) < 0
D = Dprev - deltaD;
else
D = Dprev + deltaD;
end
else
if (Vpv-Vprev) < 0
D = Dprev + deltaD;
else
D = Dprev - deltaD;
end
end
else
D = Dprev;
end
% Update internal values
Dprev = D;
Vprev = Vpv;
Pprev = Ppv;
Best regards