Erstellung einer SelfDef-Datei vom Typ RealCurrents am Beispiel eines NPN-Transistors erklärt,
und wie man einen inneren Knoten verwendet.

Erst machen wir wieder eine Skizze und zeichnen Knoten/Pin-Nummern, Ströme, Spannungen und Bezeichnungen ein.

Die Außen-Pins werden entsprechend der Pin-Nummern des MBitmaps bipo_npn.mbmp angeordnet. Wir zeichnen
nicht nur das eigentliche Transistor-Modell ein, sondern auch die zusätzlichen parasitären Elemente Rb, Cbco, Cbci, Cbe.
Durch den Basisbahn-Widerstand Rb entsteht ein innerer Knoten. Solche Knoten werden mit '$'-Zeichen gefolgt von
einer fortlaufenden Nummer (ab 1) geschrieben. Die Außen-Pin-Ströme I_o1/2/3 benötigen wir nicht für das Modell,
sondern nur für die Ausgabe-Blöcke.

Die Formeln für das statische NPN-Transistor-Modell können wir nun niederschreiben:

mit den Pin-Spannungen  Ube = U$1 - U3,  Ubc = U$1 - U2

Leckstrom
Hochstrom/Leakly
Basis-Strom
Kollektor-Strom
Emitter-Strom, Bilanz-Strom-Gleichung

Wir tun hier so als würde es die parasitären Elemente nicht geben und setzen einfach für Pin 1: Pin $1 ein.
Da das Transistor-Modell 3 Pins hat, müssen 2 Pin-Ströme (I$1, I2) definiert werden. Der 3. Strom I3
ergibt sich aus der Bilanz-Strom-Gleichung.

Nun übernehmen wir die Formeln praktisch 1zu1 in den Script:

#Volts
ube = u$1 - u3
ubc = u$1 - u2
#End

#RealCurrents
ibn = IS/BN*(exp(ube/UT)-1)
ibi = IS/BI*(exp(ubc/UT)-1)
ibe = ISE*(exp(ube/NE_UT)-1) ;Leckstrom
q1 = 1/(1-ubc/UAN) 
q2 = BN*ibn/IKN
qb = q1/2*(1+sqrt(1+4*q2)) ;Hochstrom/Leakly

i$1 = ibn + ibi + ibe 
i2 = (BN*ibn - BI*ibi)/qb - ibi
<i3 = -(i$1+i2)>
#End

Den Block #Volts kennen wir ja schon, hier werden die Pin-Spannungen Ube und Ubc eingetragen.
Auch der Block #RealCurrents ist uns bereits bekannt, er definiert die Pin-Ströme I$1, I2 sowie den Bilanzstrom I3.
Weiterhin sind am Anfang dieses Blocks sogenannte PreFormeln geschrieben, mit deren Hilfe man Vorberechnungen
für die Pin-Ströme durchführen kann. Das erhöht die Übersichtlichkeit enorm. In den PreFormeln und den Pin-Strömen
können Parameter, Variable+Konstanten, Pin-Spannungen, sowie durch PreFormeln definierte Symbole enthalten
sein.
Die Darstellung der eingefügten parasitären Kapazitäten erspare ich mir jetzt mal (hatten wir ja schon).
Hier ist der vollständige Script transistors.bipo_npn_full.selfdef.

Schauen wir uns aber noch die Definition des Basisbahn-Widerstandes Rb an:

#SetConductance
Token = Rbas
Param = GB 
Pin1 = 1
Pin2 = $1
#End

Im Grunde genommen das Gleiche wie bei #SetCapazitor, nur das bei Param ein Leitwert zugewiesen werden muß.
Dieser Leitwert könnte auch nichtlinear, also eine Funktion von Ux, Uy,.. sein. Hier wird einfach die bei
#VarsAndConstants definierte Variable GB = 1/Rb verwendet (Rb ist ein Parameter).

Was bei #DefineStaticInfoText und #DefineDynCharts hin muß dürfte klar sein, hatten wir ja schon bei der Diode
besprochen.

Einen PNP-Transistor modelliert man, indem das Modell des NPN-Transistors hergenommen wird,
die Pin-Spannungen umgekehrt werden und die Pin-Ströme negiert werden. Also einfach mal den Script
transistors.bipo_pnp_full.selfdef anschauen.

Dioden und Transistoren findet man unter dem Verzeichniss Data\Transistors_Diodes bzw. im Ext-Element-Dialog
unter Transistors_Diodes.

Analyse Dynamisches Verhalten:

Nun testen wir noch das dynamische Verhalten unseres Transistors.
Bitte die Schaltung DocSamples\Test_NPNTransistor_Dynamic.circ öffnen:

Wir führen Dyna durch und erhalten diese Charts:

Schön zu erkennen ist hier der Speicher-Effekt des Transistors, hervorgerufen durch die nichtlineare BE-Kapazität.
Während beim Einschalten der Transistor recht schnell durchschaltet, vergehen nach dem Ausschalten über 300ns
bis wieder die Sperrung erreicht ist.

Zurück zur Hauptseite