108 lines
2.1 KiB
Matlab
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]
|
|
|