¿Cómo calculo la impedancia de un capacitor (bypass) (para simulación)?

2

Quería construir una simulación de condensadores de bypass en Matlab, especialmente para jugar con pares de diferentes tapas de valor. Así que pensé que solo tomo un modelo de un condensador real como conexión en serie de un condensador con una resistencia (ESR) y un inductor (ESL) y obtengo la fórmula $$ Z = \ mathrm {ESR} + j2 \ pi f \ cdot \ mathrm {ESL} + \ frac {1} {j2 \ pi fC} $$ separando en parte real e imaginaria: $$ Z = \ mathrm {ESR} + j \ left (2 \ pi f \ cdot \ mathrm {ESL} - \ frac {1} {2 \ pi fC} \ right) $$ ahora toma la magnitud $$ | Z | = \ sqrt {\ mathrm {ESR} ^ 2 + \ left (2 \ pi f \ cdot \ mathrm {ESL} - \ frac {1} {2 \ pi fC} \ right) ^ 2} $ $

Ahora programé el Matlab. Primero, la función que calcula la impedancia del límite a una / s frecuencia / es determinada

function [ Z ] = calcCapImp( f,R, L,C )  
Z=sqrt(R^2+(2*pi*f*L-1./(2*pi*C*f)).^2);
end

El código para calcular y trazar la impedancia de una combinación de dos condensadores en ohmios y dBs:

clear all;
f=10000:1000:1e9;
Z=(zeros(size(f)));
for i=1:size(f,2)
Z1=calcCapImp(f(i),10e-3,700e-12,100e-9);%calculate first cap
Z2=calcCapImp(f(i),10e-3,1250e-12,4.7e-6);%calculate second  cap
Z(i)=(Z1*Z2)/(Z1+Z2);%Total impedance is parallel combination
end
loglog(f,Z);
ylabel('Resistance, Ohm');
xlabel('Frequency, Hz');
grid on;
figure;
Z=20*log10(Z);%convert to decibels
semilogx(f,Z);
xlabel('Frequency, Hz');
ylabel('Resistance, dB');
grid on;

Mientras que los resultados parecen plausibles,

Nopuedoreproducirelgráficoquehevistoenotroslugares.

Enparticular,elcódigoanteriorintentarecrear Figura 2 desde aquí (mismo rango):

Noestoytanlejoscomounpicodramáticoa~10MHzcomoenlafiguraexternamencionadaanteriormente(aproximadamente10veces/20dBmáspequeña)

¿Hehecholoscálculoscorrectamente?¿Hayalgúnerrorenmisimulación?

EDITAR:aquíestáelcódigoyelgráficocorregidossegúnlarespuestadeThePhotonacontinuación

function[Z]=calcCapImp(f,R,L,C)Z=R+1i*(2*pi*f*L-1./(2*pi*C*f));endclearall;f=10000:1000:1e9;Z=(zeros(size(f)));fori=1:size(f,2)Z1=calcCapImp(f(i),10e-3,700e-12,100e-9);%calculatefirstcapZ2=calcCapImp(f(i),10e-3,1250e-12,4.7e-6);%calculatesecondcapZ(i)=abs((Z1*Z2)/(Z1+Z2));%Totalimpedanceisparallelcombination,takethemagnitudeendloglog(f,Z);ylabel('Impedance,Ohm');xlabel('Frequency,Hz');title('ImpedanceinOhms');gridon;figure;Zdb=20*log10(Z);%converttodecibelssemilogx(f,Zdb);xlabel('Frequency,Hz');ylabel('Impedance,dB');title('Impedanceindecibels');gridon;

Ahora el resultado es prácticamente idéntico a los utilizados como referencia

    
pregunta Andrey Pro

1 respuesta

3
function [ Z ] = calcCapImp( f,R, L,C )  
Z=sqrt(R^2+(2*pi*f*L-1./(2*pi*C*f)).^2);
end

Esto es calcular la magnitud de Z, no Z en sí misma.

Z(i)=(Z1*Z2)/(Z1+Z2);%Total impedance is parallel combination

Esto es combinar las dos magnitudes como si fueran dos resistencias.

Debe calcular la impedancia compleja y combinar las impedancias complejas con la fórmula de impedancias paralelas

$$ Z_ {eq} = \ frac {Z_1 Z_2} {Z_1 + Z_2} $$

Lo que calculaste fue

$$ Z ^ * _ {eq} = \ frac {| Z_1 | | Z_2 |} {| Z_1 | + | Z_2 |} $$

(* el superíndice indica una fórmula incorrecta)

que no tiene en cuenta la interacción de los cambios de fase en las dos impedancias combinadas, por lo que no da el resultado correcto.

    
respondido por el The Photon

Lea otras preguntas en las etiquetas