You are on page 1of 2

sampling_interval = 100;

step_size = 0.001;
V_mag = 3;
f1 = 50; %
f2 = zeros(1,sampling_interval*(1/step_size)+1);
index = 1;
If2 = zeros(1,sampling_interval*(1/step_size)+1);
phase_err = zeros(1,sampling_interval*(1/step_size)+1);
y = zeros(1,sampling_interval*(1/step_size)+1);
phase_out = 0;
phase_ref = 0;
P = 0.005;
I = 0.045;
w_out = 0;
w_ref = 0;
E_f = zeros(1,sampling_interval*(1/step_size)+1);
%E_f = beklenen frekans
t = 0:step_size:sampling_interval;

Vref = V_mag*sin(2*pi*f1*t);
% Vout = V_mag*sin(2*pi*f2*t);
Vout = zeros(1,sampling_interval*(1/step_size)+1);
for i = 0:step_size:(sampling_interval-step_size)

phase_ref = phase_ref + w_ref*step_size;


phase_out = phase_out + w_out*step_size;
phase_err(index) = phase_ref - phase_out;

if((phase_ref > 100)&&(phase_out > 100)) %overflow olmasin diye burasi


phase_ref = phase_ref - 100;
phase_out = phase_out - 100;
end
if index>5
y(index) = num(1)*phase_err(index) + num(2)*phase_err(index-1) +
num(3)*phase_err(index-2) + num(4)*phase_err(index-3) + num(5)*phase_err(index-4) +
num(6)*phase_err(index-5) - denum(2)*y(index-1) - denum(3)*y(index-2) -
denum(4)*y(index-3) - denum(5)*y(index-4) - denum(6)*y(index-5);
Iphase_err = sum(y(1:index))/index;
f2(index) = I*Iphase_err; %PI kontrolcu
%f2(index) = sum(If2(1:index))/index; %frekansin integralini alma fikri
sacma
%frekans duzelseydi bile faz duzelmezdi
end
if f2(index) < 10
f2(index) = 10;
end
Vout(index) = V_mag*sin(2*pi*f2(index)*t(index));

%kalan hepsini yapmasina gerek yok sanirsam da


% simdilik kalsın o kadar yavas degil

if(index ~= 1)
w_ref = abs(asin(Vref(index)/V_mag) - asin(Vref(index-
1)/V_mag))*(1/step_size);
w_out = abs(asin(Vout(index)/V_mag) - asin(Vout(index-
1)/V_mag))*(1/step_size);
Tout = 2*pi/(w_out);
E_f(index) = 1/Tout;
end
index = index + 1;
end
bbss = 1/step_size; %bbss bir_bolu_step_size
aralik = 10;

%hold
% plot(t(bbss*aralik:bbss*(aralik+0.1)),Vref(bbss*aralik:bbss*(aralik+0.1)))
% plot(t(bbss*aralik:bbss*(aralik+0.1)),Vout(bbss*aralik:bbss*(aralik+0.1)))

plot(t,E_f) %bunu commente alip digerlerine bak yoksa olmuyor nedense xd

You might also like