Prévia do material em texto
///////////////////////////////////////////////////////////////////////////////
//Antes de executar o programa coloque o número do seu RU no local indicado
//A função de transferência da planta é a variável FT
//A função de transferência do compensador Tipo 1 é a variável FT_Tipo_1
//A função de transferência do compensador Tipo 2 é a variável FT_Tipo_2
//A função de transferência do compensador Tipo 3 é a variável FT_Tipo_3
//Qualquer dúvida relacionada à rotina, por gentileza, envie na tutoria.
///////////////////////////////////////////////////////////////////////////////
clc;
clear;
//////////////////
//Insira seu RU
///////////////////
RU = 1649402;
//////////////////
//Declaração da função de transferência e diagrama de Bode
//////////////////
s=%s;
L=2e-3;
C=100e-6;
R=30;
E=100;
D=0.25;
a=E/((1-D)^2);
b=-((s*L*D)/(R*(1-D)^2))+1;
c=((s^2)*L*C)/((1-D)^2);
d=((s*L)/(R*(1-D)^2))+1;
FT = syslin('c', a*(b/(c+d))); //função de transferência da planta
bode(FT,1e-3,1e6,"Resposta em frequência da função de transferência") //Diagrama de Bode da função de transferência
/////////////////////////////////
//Cálculo de alfa e do ganho G
/////////////////////////////////
MF = 60; //Margem de fase
fc = 250; //freqeuência de corte desejada
P = -59.28; //defasamento provocado pelo sistema na frequência de corte
Gdb = 58.04; //ganho em dB na frequência de corte
G = 10^(Gdb/20); //claculo de G
alfa = MF - P - 90; //calculo de alfa
///////////////////////////
//Compensador do Tipo 1
///////////////////////////
k1 = 1; //valor de k para o compensador do Tipo 1
R1 = RU/100; //valor de R1
C1 = 1/(2*%pi*fc*G*R1); //cálculo de C1
FT_Tipo_1 = syslin('c',1/(R1*C1*s)); //função de transferência do compensador Tipo 1
figure;
bode(FT_Tipo_1,1e-3,1e6,"Resposta em frequência do compensador Tipo 1"); //Diagrama de Bode do compensador Tipo 1
///////////////////////////
//Compensador do Tipo 2
///////////////////////////
alfa_rad = (2*%pi*alfa/360); //cvalor de alfa em rad porque o Scilab calcula o ângulo em radianos
k2 = tan(alfa_rad/2+%pi/4); //valor de k para o compensador do Tipo 2
R1 = RU/100; //valor de R1
C2 = 1/(2*%pi*fc*G*k2*R1); //valor de C2
C1 = C2*(k2^2-1); //valor de C1
R2 = k2/(2*%pi*fc*C1); //valor de R2
FT_Tipo_2 = syslin('c',(R2*C1*s+1)/(R1*R2*C1*C2*s^2+R1*(C1+C2)*s)); //função de transferência do compensador Tipo 2
figure;
bode(FT_Tipo_2,1e-3,1e6,"Resposta em frequência do compensador Tipo 2"); //Diagrama de Bode do compensador Tipo 2
///////////////////////////
//Compensador do Tipo 3
///////////////////////////
alfa_rad = (2*%pi*alfa/360); //cvalor de alfa em rad porque o Scilab calcula o ângulo em radianos
k3 = (tan(alfa_rad/4+%pi/4))^2; //valor de k para o compensador do Tipo 3
R1 = RU/100; //valor de R1
C2 = 1/(2*%pi*fc*G*R1); //valor de C2
C1 = C2*(k3-1); //valor de C1
R2 = sqrt(k3)/(2*%pi*fc*C1); //valor de R2
R3 = R1/(k3-1); //valor de R3
C3 = 1/(2*%pi*fc*sqrt(k3)*R3); // valor de C3
FT_Tipo_3 = syslin('c',(R2*C1*C3*(R1+R3)*s^2+(R2*C1+C3*(R1+R3))*s+1)/(R1*R2*R3*C1*C2*C3*s^3+R1*(R2*C1*C2+R3*C1*C3+R3*C2*C3)*s^2+R1*(C1+C2)*s)); //função de transferência do compensador Tipo 3