Quando projetamos qualquer circuito eletrônico temos que ter em mente que os componentes não são ideais. Um amplificador operacional sempre tem um impedância finita na entrada e a impedância de saída não é nula, por exemplo. Os componentes mais simples, como resistores e capacitores, também não são ideais e apresentam alguns efeitos parasitas (por exemplo: indutância parasita), além do problema da tolerância do próprio componente, isto é, o valor indicado pelo fabricante pode variar para mais ou para menos em relação ao valor nominal. Para resistores, a tolerância é tipicamente de 2%, 5% ou 10%.
Assim, quando projetamos um filtro, por exemplo, a resposta em frequência é afetada pela variação dos parâmetros dos elementos que formam o circuito. Para um filtro do tipo passa-faixa KRC usando um amplificador operacional ideal com ganho $k_1 = (r_a + r_b)/r_b$, tanto a frequência central quanto o fator de qualidade variam conforme incluímos os efeitos das tolerâncias dos componentes.
No código Scilab abaixo, supomos que os resistores apresentam uma tolerância de uns 5% e os capacitores de uns 10%. No gráfico acima vemos o efeito dessas variações. O gráfico foi gerado pela superposição de 30 curvas do ganho do filtro, em vermelho a curva de ganho considerando componentes ideais e com os seus valores nominais.
Código Scilab:
clc; close;
r1 = 100;
r2 = 100;
r3 = 100;
c1 = 0.001;
c2 = 0.001;
ra = 1000;
rb = 2000;
w0 = (r1+r3)/(r1*r2*r3*c1*c2);
w = 10:2:10*w0;
s = w*%i;
s2 = s.*s;
k1 = (ra+rb)/rb;
w0 = (r1+r3)/(r1*r2*r3*c1*c2);
Q = sqrt((r1+r3)*r1*r2*r3*c1*c2)/(r1*r3*(c1+c2)+r2*c2*(r3+r1*(1-k1)));
K = k1/(1 + r1*c1/r2*c2 + r1/r2 + r1*(1-k1)/r3);
w02 = w0*w0;
hs = K*(w0/Q)*s./(s2 + (w0/Q)*s + w02);
hsa = abs(hs);
hsadr = 20*log10(hsa);
for k=1:30
r1 = 100 + 2*rand(1,1,'n');
r2 = 100 + 2*rand(1,1,'n');
r3 = 100 + 2*rand(1,1,'n');
c1 = 0.001 + 0.05*0.001*rand(1,1,'n');
c2 = 0.001 + 0.05*0.001*rand(1,1,'n');
ra = 1000 + 20*rand(1,1,'n');
rb = 2000 + 40*rand(1,1,'n');
k1 = (ra+rb)/rb;
w0 = (r1+r3)/(r1*r2*r3*c1*c2);
Q = sqrt((r1+r3)*r1*r2*r3*c1*c2)/(r1*r3*(c1+c2)+r2*c2*(r3+r1*(1-k1)));
K = k1/(1 + r1*c1/r2*c2 + r1/r2 + r1*(1-k1)/r3);
w02 = w0*w0;
hs = K*(w0/Q)*s./(s2 + (w0/Q)*s + w02);
hsa = abs(hs);
hsad = 20*log10(hsa);
plot(w,hsad);
end
plot(w,hsadr,'r');
a=get("current_axes");
a.log_flags = "lnn";
xlabel('frequência - rad/s');
ylabel('Ganho - dB');
title('Filtro PF de 2a. ordem');
xgrid;
Nenhum comentário:
Postar um comentário