Modellierung nichtlinearer dynamischer Elemente mit LaplaceCurrents
am Beispiel NPN-Transistor, Verwendung innerer Pins

Einfaches Transport-Modell mit Diffusions-Kapazitäten:

Wie schon zu erahnen, zeichnen wir eine Skizze und definieren gleich noch den Transistor
beschreibende Formeln für die Ströme und parasitären Kapazitäten:



 Ib = IBN + IBI
 Ic = BN*IBN - (BI+1)*IBI



Mit den Pin-Spannungen:  Ube = U1 - U3,  Ubc = U1 - U2

kann jetzt einfach für die Pin-Ströme geschrieben werden:

I1 = Ib + ICde + ICdc = Ib + CDE*s*Ube + CDC*s*Ubc
I2 = Ic -  ICdc = Ic - CDC*s*Ubc
I3 = -(I1 + I2)

Bei #Volts und #LaplaceCurrents können wir nun im Script folgendes eintragen:

#Volts
ube = u1 - u3
ubc = u1 - u2
#End

#LaplaceCurrents
ibn = IS/BN*(exp(ube/UT)-1)
ibi = IS/BI*(exp(ubc/UT)-1)
ib = ibn + ibi
ic = BN*ibn - (BI+1)*ibi

CDE = T0N*ISDUT*exp(ube/UT)
CDC = T0I*ISDUT*exp(ubc/UT)

i1 = ib + CDE*s*ube + CDC*s*ubc
i2 = ic - CDC*s*ubc
<i3 = -(i1+i2)>  ; die Ströme i1 und i2 fließen bei Pin3 wieder heraus
#End

Hier der vollständige Script. Der Script steht unter Data/Tests/SelfDefs/transistors.bipo_npn_LaplaceCurrent.selfdef.

Wie man sieht, wird bei den Pin-Strömen von den Term-Typen 0 und 2 reger Gebrauch gemacht.
Bei Typ 0 setzen wir X = ib bzw. ic, bei Typ 2 setzen wir beta = CDE bzw. CDC ein.
X und beta können für diese Typen nichtlinear sein, das heißt eine Funktion von Pin-Spannungen
sein. Man sieht hier auch das der Einsatz von PreFormeln zwingend notwendig ist, um ib, ic, CDE und CDC
zu berechnen. PreFormeln müssen immer am Anfang in #LaplaceCurrents stehen, sie können
Parameter, Variable, Konstante, Pin-Spannungen sowie PreFormel-Symbole (vor dem '=' definiert) enthalten.
Das Selbe gilt auch für die Pin-Ströme.

Einfaches Transport-Modell mit Diffusions-Kapazitäten und Basis-Bahn-Widerstand:

Wie vor, zeichnen wir die Skizze etwas um und definieren gleich noch den Transistor
beschreibende Formeln für die Ströme und parasitären Kapazitäten:



 Ib    = IBN + IBI
 Ic    = BN*IBN - (BI+1)*IBI
 IRb = (Ube - Ubei)/Rb


Wie man sieht, kommt man hier ohne inneren Knoten nicht aus. Deswegen bezeichnen wir die Pin-Spannungen für
Innen in Ubei und Ubci um, und korrigieren die Gleichungen entsprechend. Ube ist nun die äußere BE-Spannung.
Das Entscheidente hier ist, dass ein innerer Pin definiert werden muß (wie bei RealCurrents). Diesen Pin bezeichnen
wir mit $1 und ziehen Ihn heraus. Wir tun einfach so, als ob dieser Pin ein normaler Anschluss-Pin wäre und
definieren Ihn als Pin-Strom. Auch in der Bilanzstrom-Gleichung muß er vorkommen. I$1 ist natürlich immer 0,
da dort nichts angeschlossen wird. Tut aber nichts zur Sache. Interessant ist auch, das die interne Masse auch nichts
Anderes ist als ein innerer Pin mit der Nummer 0 (I0, U0 ist dann zu verwenden).

Mit den Pin-Spannungen:  Ubei = U$1 - U3,  Ubci = U$1 - U2,  Ube = U1 - U3

kann jetzt einfach für die Pin-Ströme geschrieben werden:

I$1 = Ib + ICde + ICdc - IRb = Ib + CDE*s*Ubei + CDC*s*Ubci - IRb
I1  = IRb
I2  = Ic -  ICdc = Ic - CDC*s*Ubci
I3  = -(I$1 + I1 + I2)

Bei #Volts und #LaplaceCurrents können wir nun im Script folgendes eintragen:

#Volts
ube = u1 - u3
ubc = u1 - u2  ; für DynChart
ubei= u$1 - u3
ubci= u$1 - u2
#End

#LaplaceCurrents
ibn = IS/BN*(exp(ubei/UT)-1)
ibi = IS/BI*(exp(ubci/UT)-1)
ib = ibn + ibi
ic = BN*ibn - (BI+1)*ibi
irb = (ube - ubei)/Rb

CDE = T0N*ISDUT*exp(ubei/UT)
CDC = T0I*ISDUT*exp(ubci/UT)

i$1 = ib + CDE*s*ubei + CDC*s*ubci - irb   ; I$1 ist zwar immer 0, muß aber dennoch definiert werden
i1 = irb
i2 = ic - CDC*s*ubci
<i3 = -(i1+i$1+i2)> 
; die Ströme i1, i$1 und i2 fließen bei Pin3 wieder heraus
#End

Hier der vollständige Script. Der Script steht unter Data/Tests/SelfDefs/transistors.bipo_npn_RB_LaplaceCurrent.selfdef.
Ausprobieren könnt Ihr dieses Modell mit der Schaltung DocSamples/Test_NPNTransistor_Dynamic.circ, indem
Ihr den dort vorhanden RealCurrent-Transistor mittel Ext-Add-Dialog einfach ersetzt.

Es können beliebig viele InnerPins benutzt werden, sie müssen nur ab 1 fortlaufend nummeriert werden.
Man könnte z.Bsp. einen Höchstfrequenz-Transistor modellieren, der eine Basis-, Kollektor- und EmitterInduktivität
sowie die Bahnwiderstände enthält. Habe ich aber noch nicht ausprobiert.
Ich muß nochmals erwähnen, dass alle f(U) stetig und differenzierbar sein müssen. (Problem segmentierte Funktion)
Auch dürfen Pin-Ströme niemals auf der rechten Seite der Gleichungen vorkommen (ist auch nicht notwendig).
LaplaceCurrent-Modelle sind wie RealCurrent-Modelle für die SA, Dyna als auch LSA verfügbar. Bei der SA setzt
ToneCirc eindach s = 0, bei der LSA einfach s = iw (Term-Parameter werden im AP linearisiert) ein. Bei Dyna
werden die korrespondierenden Diff.-Gleichungen gelöst.

Dieses Beispiel zeigt doch die Leistungsfähigkeit des LaplaceCurrent-Modells. Das RealCurrent-Modell ist
dadurch eigentlich überflüssig, aber die Formulierung ist dort glaube ich einfacher und der Rechen-Aufwand geringer.

Im nächsten Kapitel wird noch gezeigt, wie man mittels LaplaceCurrent Signal-Quellen und einen VCO modellieren kann.
Auch wird später noch erläutert, wie man beliebige Spannungs-Übertragungs-Funktionen in ein Element bringen kann.
Außer Scopes gibt es eigentlich nur wenig, was man nicht mit dem LaplaceCurrent-Modell beschreiben könnte. Fals nicht,
gibt es ja noch die Modell-Typen LaplaceVolt, DigiSelfDef und ScopeSelfDef.

Zurück zur Hauptseite