Ich versuche, eine elektronische Schaltung zu simulieren, die im folgenden Schema dargestellt ist.
Diese Schaltung enthält zwei nichtlineare Bauelemente: Diese beiden Bauelemente hängen von der Ladungsdichte ab und sind wie folgt definiert:
Wo
Ist es möglich, die Verhaltensquelle zu verwenden? Gemäß dem ngspice-Handbuch 25 hängt die nichtlineare Quelle nur von den Knotenspannungen und dem Zweigstrom ab. In meinem Fall hängt die nichtlineare Quelle oder das nichtlineare Gerät von der Integration des Zweigstroms ab. Ist es möglich, eine B-Quelle zu definieren, die von der Integration des Zweigstroms abhängt?
sind konstante Werte!
ist der fließende Strom durch das diodenähnliche Gerät und ist wie folgt definiert:
ist die abfallende Spannung über dem nichtlinearen kondensatorähnlichen Gerät und wird durch den folgenden Begriff beschrieben:
Wie Sie sagen, kann die Verhaltensquelle in ngspice nur eine Spannung oder einen Strom als Funktion anderer Knotenspannungen oder Zweigströme in Ihrer Schaltung erzeugen. Nichtsdestotrotz können Sie dies mit einigen zusätzlichen Elementen verwenden, um einen nichtlinearen Kondensator herzustellen, wie Sie ihn zu benötigen scheinen:
Hier habe ich ein lineares CCCS und einen linearen Kondensator verwendet, um die Integration des eingehenden Stroms durchzuführen und die Ladevariable zu verfolgen. Dann liefert ein nichtlinearer VCVS das kapazitive Verhalten Ihres nichtlinearen Kondensators. Der Gigaohm-Widerstand ist da, weil SPICE erfordert, dass jeder Knoten einen Gleichstrompfad zur Erde hat, um eine Lösung zu erhalten; es wird die Schaltungslösung nicht wesentlich beeinflussen.
Es gibt ein ähnliches Beispiel unter Verwendung der ngSpice-Syntax auf Seite 89 im ngSpice-Handbuch hier .
Alternative Lösung
Beachten Sie auch, dass ngSpice ein Verhaltenskondensatormodell anbietet, das auf Seite 71 in dem von mir verlinkten Handbuch beschrieben wird. Die Syntax ist
CXXXXXXX n+ n C = ’expression’ <tc1 = value > < tc2 = value >
Hier sollten Sie verstehen, dass die definierte Kapazität die Differenzkapazität ist
.
Um Ihre Gleichungen in eine geeignete Form zu bringen, müssen Sie sie ein wenig überarbeiten. Du hast
.
Wenn Sie das umdrehen, haben Sie
.
Von denen Sie bekommen können
Was Sie einfach in der ngSpice-Ausdruckssyntax implementieren können.
Vielen Dank für Ihre ausführliche Antwort. Gemäß der Skizze habe ich eine Netzliste wie folgt geschrieben, aber ich frage mich, warum der Strom als Ausgang einer nichtlinearen Schaltung durch eine sinusförmige Anregungsspannung immer noch sinusförmig ist. Ich weiß nicht, ob es irgendein logisches oder technisches Problem im Code gibt. Vielen Dank im Voraus!
Meine Netzliste:
V1 0 1 SIN(0 200 0.1k)
C0 2 1 1n
X1 3 2 nonlinDevice
L1 4 3 0.0125
R1 5 4 200
Vg 0 5 DC=30
************************************
.subckt nonlinDevice n1 n2
VDC n1 n0 DC=0
BVs n0 n2 V=v(ng)*v(ng)
BIs n1 n2 I=exp(-v(ng)*v(ng))
Bint 0 ng I=i(VDC)
Cint ng 0 1
Rint ng 0 100G
.ends
*************************************
.control
tran 0.01m 80m
plot i(l1)
.endc
.end
Leon Heller
Chris Laplante
Chetan Bhargava
Benutzer18231