Wie berechne ich die Impedanz eines (Bypass-)Kondensators (zur Simulation)?

Ich wollte eine Simulation von Bypass-Kondensatoren in Matlab erstellen, insbesondere um mit Paaren unterschiedlich bewerteter Kappen herumzuspielen. Also dachte ich, ich nehme einfach ein Modell eines echten Kondensators als Reihenschaltung eines Kondensators mit einem Widerstand (ESR) und einer Induktivität (ESL) und leite die Formel ab

Z = E S R + J 2 π F E S L + 1 J 2 π F C
Trennung in Real- und Imaginärteil:
Z = E S R + J ( 2 π F E S L 1 2 π F C )
Nehmen Sie jetzt die Größe
| Z | = E S R 2 + ( 2 π F E S L 1 2 π F C ) 2

Jetzt habe ich das Matlab programmiert. zuerst die Funktion, die die Impedanz der Kappe bei gegebener Frequenz/en berechnet

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

Der Code zum Berechnen und Plotten der Impedanz einer Kombination aus zwei Kondensatoren in Ohm und dB:

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;

Während die Ergebnisse plausibel erscheinen,

Geben Sie hier die Bildbeschreibung ein

Ich kann keine Grafik reproduzieren, die ich anderswo gesehen habe.

Insbesondere versucht der obige Code, Abbildung 2 von hier aus neu zu erstellen (gleicher Bereich):

Geben Sie hier die Bildbeschreibung ein

Ich bekomme bei ~10 MHz bei weitem nicht so dramatische Spitzen wie bei der oben genannten externen Figur (ca. 10-mal / 20 dB kleiner)

Habe ich die Berechnungen richtig gemacht? Gibt es einen Fehler in meiner Simulation?

BEARBEITEN: hier der korrigierte Code und die Grafik gemäß der Antwort von The Photon unten

function [ Z ] = calcCapImp( f,R, L,C )

Z=R+1i*(2*pi*f*L-1./(2*pi*C*f));

end

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)=abs((Z1*Z2)/(Z1+Z2));%Total impedance is parallel combination, take the magnitude
end

loglog(f,Z);
ylabel('Impedance, Ohm');
xlabel('Frequency, Hz');
title('Impedance in Ohms');
grid on;
figure;
Zdb=20*log10(Z);%convert to decibels
semilogx(f,Zdb);
xlabel('Frequency, Hz');
ylabel('Impedance, dB');
title('Impedance in decibels');
grid on;

korrigierte GrafikJetzt ist das Ergebnis praktisch identisch mit dem als Referenz verwendeten

Die beiden Diagramme sehen mir ziemlich nahe. Oder ist das zweite nicht dein Ergebnis? Wenn nicht, sollten Sie eine Grafik Ihrer Ergebnisse beifügen, um deutlich zu machen, was der Unterschied zwischen Ihrem erwarteten und Ihrem tatsächlichen Ergebnis ist.
Ich vergleiche es mit diesem i.cmpnet.com/planetanalog/2007/10/C0238-Figure2.gif von planetanalog.com/document.asp?doc_id=527551 konnte es wegen der Einschränkung nicht einschließen. Dies ist eine, die ich versuche, neu zu erstellen
Der Schlüssel zum Unterschied besteht darin, dass die Spitze größer ist als jede der Impedanzkurven allein, daher erhalten Sie eine konstruktive Interferenz zwischen den Komponenten, dh die Impedanzen sind in Phase entgegengesetzt, sodass sich ihre imaginären Komponenten aufheben. Lesen Sie in diesem Sinne die Antwort des Photons.

Antworten (1)

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

Dies berechnet die Größe von Z, nicht Z selbst.

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

Dies kombiniert die beiden Größen, als ob sie zwei Widerstände wären.

Sie müssen die komplexe Impedanz berechnen und die komplexen Impedanzen mit der Formel für parallele Impedanzen kombinieren

Z e Q = Z 1 Z 2 Z 1 + Z 2

Was Sie berechnet haben, war

Z e Q = | Z 1 | | Z 2 | | Z 1 | + | Z 2 |

(* hochgestellt zeigt eine falsche Formel an)

Dies berücksichtigt nicht die Wechselwirkung von Phasenänderungen in den beiden kombinierten Impedanzen und liefert daher nicht das richtige Ergebnis.

Ach, ich verstehe. Ich habe auch irgendwie aus den Augen verloren, dass ich komplexe Zahlen in Matlab direkt manipulieren kann und die Dinge komplizierter als nötig gemacht habe. Ich habe den Code korrigiert und das Ergebnis ist jetzt zumindest viel besser.