Вы находитесь на странице: 1из 6

TEAM MICROGRID

SUBJECT: MPPT ALGORITHM

Abstract:

Implementation of MPPT using Perturb & Observe(P&O) algorithm in MATLAB. The program works well in real time situation like, variation of irradiance and temperature. The program fails to find MPP in partial shading condition, which consist of multiple maxima.

Program flow

1. 1.The have a implemented a basic P&O algorithm where we have taken initial parameters such as:

a) Irradiance(variable name: ‘Suns’) in W/m2

b) Temperature(‘TaC’) in celsius

c) Step size(‘s’)

d) Ideality factor(‘n’)

e) Initial voltage(‘Va’)

2. It calculates the current using the solar cell equations ( i.e. from simulated solar cell). Then the power is calculated at that voltage.

3. The voltage is changed by one step size and current is again calculated at this point. The power is calculated and is compared with the previous value of power.

4. The difference between them decides the direction of MPP; accordingly the next point is selected. The program continues until the defined accuracy is achieved (i.e. minimum difference between consecutive powers).

5. The whole process is in a loop so as to check the system continuously in case of any changes (irradiance and temperature variation).

MATLAB SCRIPT

%program for MPPT using P&O algorithm clc clear all

Va=2.2;

Suns=1;

TaC=28;

n=1;

s=0.001;

n0=1;

while(n0<=1000) %outer loop for continuous evaluation

[Ia]=solar0(Va,Suns,TaC,n);

p1=Va*Ia;

Vb=Va+s;

[Ia]=solar0(Vb,Suns,TaC,n);

p2=Vb*Ia;

plot(Va,p1,'or')

hold on; if((abs(p1-p2))>0.0001) %0.0001 is reqd. accuracy

if(p1<p2)

Va=Vb;

elseif(p1>p2)

end

Va=Va-s;

end

n0=n0+1;

end

plot(Va,p1,'+g')

Program for modelled Solar cell

function [Ia] = solar0(Va,Suns,TaC,n)

Rsh=1000000;

 k = 1.38e-23; q = 1.60e-19;

Vg = 1.12; T1 = 273 + 28; T2=273+75 ; Voc_T1 = 2.565; Isc_T1 = 0.446; Isc_T2= 0.495; K0 =(Isc_T2 - Isc_T1) * (1/(T2 - T1)); %dVdI_Voc = -1.15/2; TaK = 273 + TaC; IL_T1 = Isc_T1 * Suns; IL = IL_T1 + K0*(TaK - T1); I0_T1 = Isc_T1/(exp(q*Voc_T1/(n*k*T1))-1); I0 = I0_T1*(TaK/T1)^(3/n)*exp(((-q*Vg)/(n*k))*((1/TaK)-

(1/T1)));

%Xv = I0_T1*q /(n*k*T1) * exp(q*Voc_T1/(n*k*T1)); Rs = 0.02;%- dVdI_Voc - 1/Xv; Vt_Ta = n * k * TaK / q;

Ia =0;

m=100;

acc=0.001;

while(acc<abs(m)) Ia1 = Ia - ((IL - Ia - I0*( exp((Va+Ia*Rs)/Vt_Ta) -1))- ((Va+Ia*Rs)/Rsh))/(-1 - ((I0*( exp((Va+Ia*Rs)/Vt_Ta)))*Rs/Vt_Ta)-Rs/Rsh);

m=Ia1-Ia;

Ia=Ia1;

end

end

Ia1;

Output:

Case I:

Initial voltage (Va)=2.2V

MPP=1.0756W

Program is moving in forward direction and approaching MPP

Case II

Initial voltage (Va)=2.6V MPP= 1.0756W Program is moving in backward direction and approaching MPP

Problems encountered

There are mainly two things which the program lacks. They are:

1. The step size is constant and so the program takes longer time to reach MPP. Some optimization technique is required such that the convergence is fast.

2. The program will not be reliable in case of partial shading where multiple peaks are present. We are looking into different algorithms to find global maxima but their speed is slow.