Files
2023-05-30 12:05:56 -03:00

108 lines
2.1 KiB
Matlab

clear
clc
s = tf('s');
% 1) Especificações de projeto
fc = 20000; wc = 2*pi*fc;
BWp = 2000; Ap = 0.01;
BWs = 20000; As = 50;
At = 1/2;
% 2) Determinacao da ordem
wp = 1; ws = BWs/BWp;
n = cheb1ord(wp,ws,Ap,As,'s');
[A,B,C,D] = cheby1(n, Ap, wp,'s');
G = tf(ss(A,B,C,D));
% Conferindo....
G_wp = freqresp(G,wp);
abs_G_wp = mag2db(abs(G_wp));
G_ws = freqresp(G,ws);
abs_G_ws = mag2db(abs(G_ws));
[dcgain(G) abs_G_wp abs_G_ws]
p = pole(G);
f0 = fc; Qbp = fc/BWp;
%A0 = At^(1/n); %ordem impar
A0 = At*db2mag(-Aripple)^(1/n); %ordem par
%% 1a Seção biquadrática
ctsec = 1;
polo = p(2); % CUIDADO!!!
% POLOS COMPLEXO CONJUGADO
alpha = abs(real(polo)); beta = abs(imag(polo));
C = alpha^2+beta^2;
D = 2*alpha/Qbp;
E = C/Qbp^2+4;
G = sqrt(E^2-4*D^2);
Q = sqrt( (E+G)/(2*D^2) );
M = alpha*Q/Qbp;
W = M + sqrt(M ^2-1);
fra = f0/W;
frb = W*f0;
Ara = A0*sqrt(1+Q^2*(f0/fra-fra/f0)^2);
Arb = A0*sqrt(1+Q^2*(f0/frb-frb/f0)^2);
ff(2*ctsec-1) = fra; ff(2*ctsec) = frb;
Qf(2*ctsec-1) = Q; Qf(2*ctsec) = Q;
Af(2*ctsec-1) = Ara; Af(2*ctsec) = Arb;
% %% 2a Seção biquadrática
% ctsec = ctsec+1;
%
% polo = p(3); % CUIDADO!!!
%
% % POLOS COMPLEXO CONJUGADO
% alpha = abs(real(polo)); beta = abs(imag(polo));
%
% C = alpha^2+beta^2;
% D = 2*alpha/Qbp;
% E = C/Qbp^2+4;
% G = sqrt(E^2-4*D^2);
% Q = sqrt( (E+G)/(2*D^2) );
% M = alpha*Q/Qbp;
% W = M + sqrt(M ^2-1);
% fra = f0/W;
% frb = W*f0;
% Ara = A0*sqrt(1+Q^2*(f0/fra-fra/f0)^2);
% Arb = A0*sqrt(1+Q^2*(f0/frb-frb/f0)^2);
%
% ff(2*ctsec-1) = fra; ff(2*ctsec) = frb;
% Qf(2*ctsec-1) = Q; Qf(2*ctsec) = Q;
% Af(2*ctsec-1) = Ara; Af(2*ctsec) = Arb;
%% 2a Seção biquadrática
ctsec = ctsec+1;
polo = p(1); % CUIDADO!!!
% POLO REAL
alpha0 = abs(real(polo));
Q = Qbp/alpha0;
fr = f0;
ff(2*ctsec-1) = fr;
Qf(2*ctsec-1) = Q;
Af(2*ctsec-1) = A0;
%% COMPONENTES
C = 10e-6;
% C1=C; C2=C;
for ct=1:size(Qf,2)
gm1(ct) = sqrt(C^2*(2*pi*ff(ct))^2); %gm2=gm1
gm3(ct) = C*(2*pi*ff(ct))/Qf(ct);
gm4(ct) = gm3(ct)*Af(ct);
end
[gm1 ; gm3; gm4]