Está en la página 1de 2

clear all

clc
disp('Compensador de Atraso-Adelanto')
disp('Ingresaremos los valores necesarios para la solucion del ejercicio')
kv=input('Ingrese el valor k de velocidad en 1/seg = ')
MFD=input('Ingrese el valor de margen de fase en = ')
MGD=input('Ingrese el valor de margen de ganancia en dB = ')
disp('Comenzaremos a calcular la funcion de transferencia')
den1=[1 0];
den2=[1 1];
den3=[1 2];
den4=conv(den1,den2);
den=conv(den4,den3);
kva=1/polyval(deconv(den,[1 0]),0);
k=kv/kva;
num=[k];
disp('**Planta del Sistema**')
planta=tf(num,den)
disp('Hallamos el margen de fase')
w0=logspace(-1,2,500);
[Gan0,Fase0]=bode(planta,w0);
GandB0=20*log10(Gan0)
disp('Hallamos el margen de fase y ganancia')
w1=logspace(-1,2,500);
[Gan1,Fase1]=bode(planta,w1);
Gandb1=20*log10(Gan1)
disp('Margende fase')
indice1=find(Gandb1<=0);
wcg1=w1(indice1(1));
MF=Fase1(indice1(1))+180
disp('Margende ganancia')
indice2=find(Fase1<=-180);
wcf1=w1(indice2(1));
MG=-Gandb1(indice2(1))
disp('Margen deseado del compensador')
disp('Fadic1=-180+MFD+12')
Fadic1=-180+MFD+12
disp('Frecuencia del compensador')
indice3=find(Fase1<=Fadic1);
wgcomp=w1(indice3(1))
disp('Hallamos la ganancia de fase a esa frecuencia')
Ganf=Gandb1(indice3(1))
disp('el compensador agrega')
beta=10^(Ganf/20)
disp('Para asegurar una frecuencia alta del compensador se hace')
T=5/wgcomp
z1comp=1/T;
p1comp=1/(beta*T);
k1comp=k/beta;
numcomp=k1comp*[1 z1comp];
dencomp=[1 p1comp];
Comp1=tf(numcomp,dencomp)
Scomp1=series(planta,Comp1)
disp('Calculamos el compensador de adelanto en fase')
disp('Planta + Compensador de Atraso')
w=logspace(-4,1,500)
[Gan2,Fase2]=bode(Scomp1,w);
Gandb2=20*log10(Gan2)
disp('Margen de fase')
VecIndice1=find(Gandb2<=0);
Indice1=VecIndice1(1);
Wogan=w(Indice1);
MF2=Fase2(Indice1)+180
disp('Fase adicional calculada')
Fadic2=MFD-MF2;
disp('Se calcula el factor de atenuacion Alfa')
alfa=(1-sin(Fadic2*pi/180))/(1+sin(Fadic2*pi/180))
disp('Nuevo cruce de ganancia')
disp('Ganancia adicionada por el compensador')
r=20*log10(1/sqrt(alfa))
VecIndice2=find(Gandb2<=-r);
Indice2=VecIndice2(1)
Wm=w(Indice2)
T2=1/[sqrt(alfa)*Wm ];
disp('parametros del compensador')
Z2comp=1/T2;
P2comp=1/(alfa*T2);
k2comp=1/alfa;
numcomp2=k2comp*[1 Z2comp];
dencomp2=[1 P2comp];
Comp2=tf(numcomp2,dencomp2)
fprintf('\n**Planta Compensada**\n')
plantacompensada=series(Scomp1,Comp2)
figure(1);step(feedback(planta,1)),hold on, grid on
step(feedback(plantacompensada,1))
title('Respuesta en el Tiempo')
legend('Planta Sin Compensador','Planta Compensada')
figure(2);bode(planta),hold on, grid on
bode(plantacompensada)
title('Respuesta en Frecuencia')
legend('Planta Sin Compensador','Planta Compensada')

También podría gustarte