sexta-feira, 14 de julho de 2017

Resposta em frequência: variação devido a tolerância dos componentes


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