Python hat ein Paket namens Lcapy, das lineare Schaltkreise analysieren kann. Lcapy hat verschiedene Funktionen, aber dieser Artikel erklärt, wie man die Übertragungsfunktion einer Schaltung symbolisch (mathematisch) findet.
Der folgende Artikel erklärt, wie Sie Lcapy aktivieren. [Circuit x Python] Aktivieren des linearen Schaltungsanalysepakets Lcapy
Python: 3.7.4、SymPy: 1.6.2、Lcapy: 0.67.0
Da Lcapy noch ein Entwicklungspaket ist, funktioniert der Code in diesem Artikel möglicherweise nicht mit derselben Version wie oben. Selbst in meiner Umgebung funktioniert der Code in der offiziellen Dokumentation möglicherweise nicht ... Beachten Sie, dass Ihr Code ohne fehlerhafte Teile möglicherweise nicht funktioniert!
In diesem Artikel verwenden wir die Circuit-Methode, um die Übertragungsfunktion zu ermitteln. Lassen Sie uns als erstes Beispiel die Übertragungsfunktion der RC-Schaltung in der folgenden Abbildung lösen.
Code zum Auffinden der Übertragungsfunktion:
Beispiel 1-1)
from lcapy import *
cct = Circuit("""
Vi 1 0
R 1 2 RF
C 2 0 CF
""")
H = (cct.C.V(s) / cct.Vi.V(s)).simplify()
H
Ausführungsergebnis:
Kommentar: Ich gebe eine Netzliste in Circuit ein ("" "" ""). Die angelegte Spannung von C wird durch cct.C.V (s) erhalten, und die Übertragungsfunktion wird erhalten, indem diese durch die Eingangsspannung cct.Vi.V (s) dividiert wird. Die Übertragungsfunktion wird mit symplify vereinfacht. Auf diese Weise können wir sehen, dass die Übertragungsfunktion symbolisch (mathematisch) erhalten wurde.
Es ist auch möglich, die Elementwerte wegzulassen (RF und CF in Beispiel 1-1). In diesem Fall ist Elementwert = Elementname (R und C).
Beispiel 1-2)
from lcapy import *
cct = Circuit("""
Vi 1 0
R 1 2
C 2 0
""")
H = (cct.C.V(s) / cct.Vi.V(s)).simplify()
H
Ausführungsergebnis:
Natürlich ist es auch möglich, den Elementwert als numerischen Wert anstelle eines Symbols einzugeben.
Code:
Beispiel 1-3)
from lcapy import *
cct = Circuit("""
Vi 1 0
R 1 2 1e3
C 2 0 1e-6
""")
H = (cct.C.V(s) / cct.Vi.V(s)).simplify()
H
Ausführungsergebnis:
Es ist auch möglich, die Übertragungsfunktion symbolisch zu finden und dann den Wert zu ersetzen.
Beispiel 1-4)
from lcapy import *
cct = Circuit("""
Vi 1 0
R 1 2 RF
C 2 0 CF
""")
H = (cct.C.V(s) / cct.Vi.V(s)).simplify()
H.subs('CF',1e-6).subs('RF',1e3)
Ausführungsergebnis:
Wenn es sich um eine einfache Schaltung wie in Beispiel 1) handelt, dauert es nicht lange, bis Sie die Netzliste selbst eingegeben haben. Wenn es sich jedoch um eine etwas komplizierte Schaltung wie die unten gezeigte handelt, ist die Selbsteingabe problematisch.
Sie müssen die Netzliste nicht selbst schreiben, indem Sie mit dem Schaltungsentwurfstool einen Schaltplan erstellen, dort eine Netzliste erstellen und an den Lcapy-Code übergeben.
Die obige Abbildung wurde mit LTSPICE gezeichnet, aber im Fall von LTSPICE können Sie die Netzliste unter View => SPICE NETLIST abrufen.
Fügen Sie die Netzliste wie folgt in Ihren Lcapy-Code ein:
Beispiel 1-3) RC-Schaltung
from lcapy import *
cct = Circuit("""
V1 IN 0 s 1
R1 OUT N001 RP
C1 OUT 0 CM
L1 IN N001 LP
R2 OUT 0 RM
C2 OUT N001 CP
""")
H = cct["OUT"].V(s).simplify()
H
Die Übertragungsfunktion wird durch ein anderes Verfahren als in Beispiel 1) erhalten. Zunächst wird V1 in der Liste der kopierten Netze wie folgt geändert. V1 IN 0 s 1 Es bedeutet ein Signal mit einer Amplitude = 1 im s-Bereich. Die Übertragungsfunktion H wird durch Messen der Spannung des Knotens "OUT" erhalten.
Ausführungsergebnis:
Nicht invertierende Verstärker wie der unten gezeigte können auch mit Lcapy analysiert werden.
Als Betriebskondensator wird VCVS (Voltage Control Voltage Signal Source) verwendet. Wenn Sie mit LTSPICE zeichnen, sieht es wie in der folgenden Abbildung aus.
Wenn Sie wie in Beispiel 2) die Netzliste kopieren und einfügen und V1 ändern, finden Sie die Übertragungsfunktion.
Beispiel 3-1)
from lcapy import *
cct = Circuit("""
R1 N001 N002 RG
R2 OUT N001 RF
V1 N002 0 s 1
C1 N001 OUT CF
E1 OUT 0 0 N001 AOL
C2 N001 0 CG
""")
H = cct["OUT"].V(s).simplify()
H
Ausführungsergebnis:
Wenn Sie mit einem Operationsverstärker mit einem Pol analysieren möchten, können Sie einen Schaltplan wie den unten gezeigten erstellen.
Die Eigenschaften des Operationsverstärkers sind durch die folgende Gleichung auszudrücken.
Beispiel 3-2)
from lcapy import *
cct = Circuit("""
E1 0 OUT N002 0 1
C1 N002 0 {1/p}
R1 N002 0 1
R2 OUT INN RF
R3 INN N001 RG
V1 N001 0 s 1
G1 0 N002 0 INN AOL
""")
H = cct["OUT"].V(s).simplify()
H
Ausführungsergebnis:
Ein vollständig differenzieller Verstärker kann mit Lcapy unter Verwendung der unten gezeigten Schaltung berechnet werden.
Das Lcapy-Paket, mit dem Sie die Übertragungsfunktion leicht finden können, ohne die Schaltungsgleichung zu lösen, ist sehr praktisch. Sobald Sie eine Übertragungsfunktion haben, möchten Sie diese erweitern (z. B. die Pole finden) oder eine numerische Analyse durchführen, die ich in einem separaten Artikel behandeln werde.
[Circuit x Python] Erweitern und Berechnen von Übertragungsfunktionen mit Lcapy
Recommended Posts