Segue, abaixo, o script Scilab completo para o cálculo das constantes da solução das equações diferenciais e o traçado dos gráfico da corrente e da tensão dos transitórios RLC série e paralelo de segunda ordem.
Bom uso!
Keywords: transient response, second-order, parallel RLC circuit, series RLC circuit, Scilab.
clc;
clear ;
xdel(winsid());
disp('Avaliação da Corrente no transitório RLC de 2a ordem');
Tipo = input('Informe <1> para circ. serie <2> para paralelo: ')
disp('Entrada de Dados');
R = input('Valor de R =');
L = input('Valor de L =');
C = input('Valor de C =');
I0 = input('Valor de I0 =');
V0 = input('Valor de V0 =');
w0 = 1/(sqrt(L*C));
if Tipo==1
Vs = input('Valor de Vs =');
dI0 = -(-Vs+R*I0+V0)/L;
dV0 = I0/C
alpha = R/(2*L);
else
Is = input('Valor de Is =');
dV0 = -(-Is+I0+V0/R)/C;
dI0 = V0/L;
alpha = 1/(2*R*C);
end
printf('di(0)/dt = %.2f, alpha = %.2f, w0 = %.2f\n',dI0,alpha,w0);
printf('dv(0)/dt = %.2f\n',dV0);
if Tipo==1
if alpha<w0
disp('Caso subamortecido');
wd = sqrt(w0^2-alpha^2);
A1 = I0;
A2 = (dI0 + alpha*A1)/wd;
A3 = V0 - Vs;
A4 = (dV0 + alpha*A3)/wd;
printf('s1 = %.2f + j%.2f, s2 = %.2f - j%.2f\n',-alpha,wd,-alpha,wd);
printf('wd = %.2f\n',wd);
t = 0:0.001:5/alpha;
i = exp(-alpha*t).*(A1*cos(wd*t) + A2*sin(wd*t));
il = 'exp(-alpha*t)*(A1*cos(wd*t) + A2*sin(wd*t))';
v = exp(-alpha*t).*(A3*cos(wd*t) + A4*sin(wd*t)) + Vs;
vc = 'exp(-alpha*t)*(A3*cos(wd*t) + A4*sin(wd*t)) + Vs';
elseif alpha>w0
disp('Caso superamortecido');
delta = sqrt(alpha^2-w0^2);
s1 = -alpha + delta;
s2 = -alpha - delta;
A2 = (s1*I0 -dI0)/(2*delta);
A1 = I0 - A2;
A4 = (s1*(V0-Vs)-dV0)/(2*delta);
A3 = V0 - Vs - A4;
printf('s1 = %.2f, s2 = %.2f\n',s1,s2);
tau = (1/s1)*(A1/A2); // pondera em relação as constantes
t = 0:0.001:6*abs(tau);
i = A1*exp(s1*t) + A2*exp(s2*t);
il = 'A1*exp(s1*t) + A2*exp(s2*t)';
v = A3*exp(s1*t) + A4*exp(s2*t) + Vs;
vc = 'A3*exp(s1*t) + A4*exp(s2*t) + Vs';
else
disp('Caso de amortecimento crítico');
s = -alpha;
A2 = I0;
A1 = dI0 + alpha*A2;
A4 = V0 - Vs;
A3 = dV0 + alpha*A4;
printf('s = %.2f\n',s);
t = 0:0.001:5/alpha;
i = (A2 + A1*t).*exp(s*t);
v = (A4 + A3*t).*exp(s*t) + Vs;
il = '(A2 + A1*t)*exp(s*t)';
vc = '(A4 + A3*t)*exp(s*t) + Vs';
end
else
if alpha<w0
disp('Caso subamortecido');
wd = sqrt(w0^2-alpha^2);
A3 = V0;
A4 = (dV0 + alpha*A3)/wd;
A1 = I0 - Is;
A2 = (dI0 + alpha*A1)/wd;
printf('s1 = %.2f + j%.2f, s2 = %.2f - j%.2f\n',-alpha,wd,-alpha,wd);
printf('wd = %.2f\n',wd);
t = 0:0.001:5/alpha;
v = exp(-alpha*t).*(A3*cos(wd*t) + A4*sin(wd*t));
i = exp(-alpha*t).*(A1*cos(wd*t) + A2*sin(wd*t)) + Is;
vc = 'exp(-alpha*t)*(A3*cos(wd*t) + A4*sin(wd*t))';
il = 'exp(-alpha*t)*(A1*cos(wd*t) + A2*sin(wd*t)) + Is';
elseif alpha>w0
disp('Caso superamortecido');
delta = sqrt(alpha^2-w0^2);
s1 = -alpha + delta;
s2 = -alpha - delta;
A4 = (s1*V0 -dV0)/(2*delta);
A3 = V0 - A4;
A2 = (s1*(I0-Is)-dI0)/(2*delta);
A1 = I0 - Is - A2;
printf('s1 = %.2f, s2 = %.2f\n',s1,s2);
tau = (1/s1)*(A1/A2);// pondera em relação as constantes
t = 0:0.001:6*abs(tau);
v = A3*exp(s1*t) + A4*exp(s2*t);
i = A1*exp(s1*t) + A2*exp(s2*t) + Is;
vc = 'A3*exp(s1*t) + A4*exp(s2*t)';
il = 'A1*exp(s1*t) + A2*exp(s2*t) + Is';
else
disp('Caso de amortecimento crítico');
s = -alpha;
A4 = V0;
A3 = dV0 + alpha*A4;
A2 = I0 - Is;
A1 = dI0 + alpha*A2;
printf('s = %.2f\n',s);
t = 0:0.001:5/alpha;
v = (A4 + A3*t).*exp(s*t);
i = (A2 + A1*t).*exp(s*t) + Is;
vc = '(A4 + A3*t)*exp(s*t)';
il = '(A2 + A1*t)*exp(s*t) + Is';
end
end
printf('Constantes ED corrente, A1 = %.2f, A2 = %.2f\n',A1,A2);
printf('Constantes ED tensao, A3 = %.2f, A4 = %.2f\n',A3,A4);
printf("il(t) = %s\n",il);
printf("vc(t) = %s",vc);
subplot(211);
plot(t,i)
xlabel('Tempo (s)');
ylabel('Corrente (A)');
xgrid;
subplot(212);
plot(t,v)
xlabel('Tempo (s)');
ylabel('Tensão (A)');
xgrid;