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
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,
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):
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;
Jetzt ist das Ergebnis praktisch identisch mit dem als Referenz verwendeten
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
Was Sie berechnet haben, war
(* 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.
Das Photon
Andrej Pro
user_1818839