Forum: Analoge Elektronik und Schaltungstechnik Transistor Simulation mit Matlab


von Seb (Gast)


Lesenswert?

Hallo,

ich sitze seit Wochen an einem total bescheuerten Problem.
Im Zuge eines Uni-Projekts in Elektronik, möchte ich gerne einen 
Bipolar-Transistor bzw. das Verhalten mit Matlab simulieren.
Dazu möchte ich eigentlich lediglich das Eingangssignal U_B in die 
Simulation aufnehmen und dann z.B. I_B, U_CE und I_C plotten.
Der Transistor soll als Schalter benutzt werden und befindet sich in der 
Emitter-Schaltung.

Als nächsten Schritt will ich dann mit den Simulationsdaten die 
Verlustleistung über die Simulationszeit auftragen, aber das ist 
verhältnismäßig simpel und geling bereits, wenn ich die Werte aus dem 
Datenblatt annehme.

Ich habe bisher vereinfacht mit dem Ebers-Moll-Modell gearbeitet. Die 
Simulationsergebnisse kommen aber einfach nicht hin. Grund dafür ist, 
dass ich absolut auf dem Schlauch stehe und nicht weiß, wie ich U_BE 
berechnen soll, da das ja im Normalbetrieb die treibende Kraft ist 
(I_B(f(U_BE) etc.).
Bisher bin ich davon ausgegangen, dass U_B = U_BE ist.

Ein weiteres Problem ist, dass ich nur ein Datenblatt habe, aus dem 
viele benötigte Werte nicht direkt hervorgehen. Es handelt sich um einen 
NPN-Silizium-Carbid (SiC) Bipolar-Transistor.

Zur Not habe ich noch ein SPICE-Modell, aus dem ich 
Kleinsignal-Parameter für das Gummel-Poon-Model entnehmen könnte (z.B. 
CJE, VJE etc.).

Ich vermute ich brauche nur eine fehlende Funktion, wie ich z.B. U_BC 
oder U_BE berechne bzw. ermitteln kann und wie ich dann darüber U_CE 
berechne.

Das soll erstmal als Einführung reichen, ich habe sonst auch noch 
seitenweise Matlab-Code, um zu veranschaulichen, was ich bisher gemacht 
habe. Ich bin wirklich verzweifelt und habe das Internet komplett auf 
den Kopf gestellt, also wenn mir jemand helfen kann, wäre ich sehr 
dankbar.

Mit den besten Grüßen,

Seb

von Pandur S. (jetztnicht)


Lesenswert?

Ich wuerd mal mit einem Silizium NPN beginnen, und das Datenblatt genau 
lesen. Ein SiC hat andere Parameter Werte, ist sonst aber gleich.

von Helmut S. (helmuts)


Lesenswert?

Ich weiß ja nicht wie genau das werden soll, aber wenn du das dynamische 
Schaltverhalten so gut wie mit SPICE simulieren willst, dann wird das 
heftig.

http://www.inf.ethz.ch/personal/cellier/MS/luoan_ms.pdf

: Bearbeitet durch User
von Yalu X. (yalu) (Moderator)


Lesenswert?

Seb schrieb:
> Zur Not habe ich noch ein SPICE-Modell

Warum simulierst du den Transistor dann nicht in Spice?

von Seb (Gast)


Lesenswert?

Das ist richtig, ob SiC, oder normal Si ist dabei auch relativ egal, da 
die Menge der gegebenen Parameter im Datenblatt ja auch gleich sind.
Die Modellierung ist auch gleich. Aber genau darin liegt das Problem.
Ich brauche Funktionen für I_B(U_BE) I_C(U_BE bzw I_B) und U_CE(U_BE 
bzw. I_B).
Das Transportmodell, welches aus Ebers-Moll hervor geht, ist dabei aber 
nur wenig hilfreich. Das Programm in Matlab gibt mir Werte aus, die 
nichts mit den Werten der SPICE-Simulation zu tun haben.

von Seb (Gast)


Lesenswert?

Yalu X. schrieb:
> Seb schrieb:
>> Zur Not habe ich noch ein SPICE-Modell
>
> Warum simulierst du den Transistor dann nicht in Spice?

Die Herausforderung ist ja gerade, dass ich nachbilden will, was SPICE 
im Hintergrund macht...
Als Auswertung käme dann die Diskussion, ob die Simulation in Matlab 
hinreichend genau ist und was man besser machen könnte.
Es muss nicht die Weltformel sein, aber 3 Funktionen, die das Ein- und 
Ausgangsverhalten beschreibt, damit man daraus die Verlustleistung 
berechnen kann, wäre schon toll.

von Possetitjel (Gast)


Lesenswert?

Seb schrieb:

> Ich habe bisher vereinfacht mit dem Ebers-Moll-Modell
> gearbeitet.

Ja, gut.

> Die Simulationsergebnisse kommen aber einfach nicht hin.
> Grund dafür ist, dass ich absolut auf dem Schlauch stehe
> und nicht weiß, wie ich U_BE berechnen soll,

Das verstehe ich nicht.
Es gibt doch im Ebers-Moll-Modell eine Gleichung, die den
Zusammenhang zwischen I_b und U_be beschreibt?!
(Zumindest in der allwissenden Müllhalde gibt es die.)

Das ist doch der gesuchte Zusammenhang.

> da das ja im Normalbetrieb die treibende Kraft ist
> (I_B(f(U_BE) etc.).

Jein.
In der technischen Anwendung neigt man dazu, den Bipolar-
transistor als spannungsgesteuertes Bauteil anzusehen.
Für das eigene Verständnis ist es aber besser, sich ihn
als stromgesteuert vorzustellen.
Im Transistor stehen Ladungsträgerdichten in Wechselwirkung;
die Spannungen stellen sich irgendwie passend ein.

Beim Duschen bist Du ja auch primär am Wasserstrom
interessiert. Der Druck ist nur notwendiges Übel, damit
das Wasser bis zu Dir in den vierten Stock kommt. ;-)

> Bisher bin ich davon ausgegangen, dass U_B = U_BE ist.

Äähh... ja, davon gehe ich auch aus.

> Ein weiteres Problem ist, dass ich nur ein Datenblatt
> habe, aus dem viele benötigte Werte nicht direkt hervorgehen.
> Es  handelt sich um einen NPN-Silizium-Carbid (SiC)
> Bipolar-Transistor.

Das ist der Normalfall.

> Das soll erstmal als Einführung reichen, ich habe sonst auch
> noch seitenweise Matlab-Code, um zu veranschaulichen, was
> ich bisher gemacht habe. Ich bin wirklich verzweifelt und
> habe das Internet komplett auf den Kopf gestellt, also wenn
> mir jemand helfen kann, wäre ich sehr dankbar.

Hmm. Das ist, offen gestanden, schwer zu glauben.

Also, entweder hast Du (aufgrund mangelnder Erfahrung) noch
grobe Schnitzer in Deiner Modellierung, oder Deine Vorstellungen
von der erzielbaren Genauigkeit sind überhöht - oder beides.

von Possetitjel (Gast)


Lesenswert?

Seb schrieb:

> Ich brauche Funktionen für I_B(U_BE)

Ist Bestandteil des Ebers-Moll-Modelles (zumindest in der
Formulierung, die in der Wikipedie steht.)
--> Exponenzialfunktion.

> I_C(U_BE bzw I_B)

I_C (I_B) ist die Stromverstärkung (und in guter Näherung
eine Konstante.)

> und U_CE(U_BE bzw. I_B).

Geht nicht.
Der Bipolartransistor ist (in guter Näherung) eine
gesteuerte Stromquelle; der Ausgangskreis (Kollektorkreis)
hat Stromquellencharakteristik. Folge: Die Spannung hängt
primär vom Lastwiderstand ab.

Kann es sein, dass Dir ziemlich elementares Grundwissen
zum Bipolartransistor fehlt?

von Pandur S. (jetztnicht)


Lesenswert?

Das Ganze ist nicht so einfach :

I_B(U_BE) gibt's so nicht. Es ist eher : Ube(Ib,Temp) etwa exp()

hfe(Ic) = Ic/Ib ungleich const, auch nicht in guter Naeherung.

Ich seh es auch so... da fehlt viel Wissen ueber den Bipolartransistor. 
Eine Simulation ist nicht wirklich das Richtige zum Beginnen.

von Seb (Gast)


Lesenswert?

Possetitjel schrieb:
> Kann es sein, dass Dir ziemlich elementares Grundwissen
> zum Bipolartransistor fehlt?

Okay, dann mal ans Eingemachte.
Nehmen wir mal als ersten Meilenstein nur das veinfachte Transportmodell 
an.
Dafür habe ich in meinem Matlab-Modell zunächst die benötigten 
Konstanten und Simulationsparameter definiert:
- Boltzmannkonstante (k = 1.38e-23 VAs/K)#
- Elementarladung (q = 1.602e-19 As)

- Betriebstemperatur (T = 300 K, zur Ermittlung der Temperaturspannung)
- U0 = 600 V
- U_BE = 0 V... 20 V (soll später PWM-Signal werden, jetzt erstmal 
linear steigend, damit ich mir ansehe, wie sich die Ströme verhalten)
- R_L = 1000 ohm (hängt hinter dem Kollektor)

Nun die Daten aus dem SPICE-Modell (welches ich netterweise vom 
Hersteller bekommen habe):
- Stromverstärkung im Normalbetrieb (B_N = 140)
- Sättigungsstrom (I_S = 5.1e-48 A)

Soweit so gut, nun zum Transportmodell:
I_B = (I_S/B_N) * exp((U_BE/U_T));
I_C = I_B .* B_N;
I_E = -(I_C+I_B);

Das funktioniert auch soweit. Nun verstehe ich einerseits nicht, wie ich 
auf die Spannung U_CE kommen soll, da sich effektiv der Widerstand des 
Transistors über die Zeit ändert. Die beiden Arbeitspunkte AUS und EIN 
sind mir bewusst, aber die kritische Verlustleistung entsteht ja genau 
bei dem Übergang dieser beiden. Und genau DEN will ich modellieren.

Kann es sein, dass der Ansatz komplett verkehrt ist?
Für die Velrustleistung habe ich die Formel
P_tot = U_CE * I_C + U_BE * I_B

Nur komm ich nicht auf dieses blöde U_CE.
U_CE sollte im AUS-Zustand ja U_O entsprechen, da der Widerstand des 
Kondensators quasi unendlich ist. Im EIN-Zustand ist der Widerstand im 
Datenblatt mit R_ON_sat = 17e-3 ohm angegeben.
Wenn ich jetzt wüsste, wie das Übergangsverhalten des Widerstandes 
WÄHREND des Schaltens aussieht (gehe von e-Funktion aus), dann könnte 
ich doch I_C*R_Trans nehmen, um auf mein U_CE zu kommen, richtig?

Dann sollte im EIN-Zustand U_CE = ~0 V sein, bzw. U_CE_sat aus dem 
Datenblatt (= 0.85 V) und im AUS-Zustand U_CE = U_0 sein, richtig?

Ich komme mir wirklich verdammt dämlich vor, vermutlich ist es ganz 
einfach.. Schande über mein Haupt (ich komme ursprünglich aus der 
Hardware-Enticklung mit VHDL - falls das als Entschuldigung zählen 
sollte)

von Pandur S. (jetztnicht)


Lesenswert?

Da ist noch vielen an Parametern falsch :

> U_BE = 0 V... 20 V

Ein silizium NPN ist bei einem Volt Ube schon kaputt. Ein Bipolar 
Transistor ist stromgesteuert, nicht spannungsgesteuert.

Es gibt da noch die Ic - Uce kennlinien...

: Bearbeitet durch User
von Shilipp Pimon (Gast)


Lesenswert?

Nimm doch lieber CMOS Transistoren die verbrauchen weniger Strom

von Pandur S. (jetztnicht)


Lesenswert?

Mach doch einmal die Widerstandsgerade im Ic-Uce Diagramm, mit dem 
Lastwiderstand, auf der faehrst du hin und her.

von Seb (Gast)


Lesenswert?

Jetzt Nicht schrieb:
> Mach doch einmal die Widerstandsgerade im Ic-Uce Diagramm, mit dem
> Lastwiderstand, auf der faehrst du hin und her.

Super Idee! Dann habe ich den Widerstand, den ich als Spannungsteiler 
nur in Relation zum Lastwiderstand legen muss.

Ist es denn möglich die Kennlinie selber zu erstellen?
Angenommen ich gebe nicht den Spannungsverlauf U_BE an, sondern I_B.
Dann muss ich die 1. Formel für I_B umstellen nach U_BE und die 
Simulation füttern. Darauf gebe ich einen Vektor mit den Werten der 
Widerstandslinie an.
Die rise-time aus dem Datenblatt gibt an, wie "schnell" er diese Gerade 
entlang fährt (zumindest ist es eine Gerade bei ohmscher Last). Und für 
jeden Widerstandswert kann ich auch direkt auf den Zeitpunkt die 
generierte Verlustleistung berechnen...

Richtig? -_-

von Possetitjel (Gast)


Lesenswert?

Seb schrieb:

> - U_BE = 0 V... 20 V

20V zwischen Basis und Emitter sieht erstmal... merkwürdig
aus. Zumindest für Si ist das grob falsch - allerdings habe
ich noch keinen SiC-Transistor in der Hand gehabt. (Es kann
also sein, dass das stimmt. Kann ich nicht beurteilen.)

> - R_L = 1000 ohm (hängt hinter dem Kollektor)

Mal merken. Brauchen wir weiter unten.

> - Sättigungsstrom (I_S = 5.1e-48 A)

Ist das ernst gemeint?! 10^(-48)A?

> Soweit so gut, nun zum Transportmodell:
> I_B = (I_S/B_N) * exp((U_BE/U_T));
> I_C = I_B .* B_N;
> I_E = -(I_C+I_B);
>
> Das funktioniert auch soweit. Nun verstehe ich einerseits
> nicht, wie ich auf die Spannung U_CE kommen soll, da sich
> effektiv der Widerstand des Transistors über die Zeit ändert.

Bitte nicht in die Tischkante beissen. Danke ;-)

U_CE = U0 - I_CE * R_Last

In Worten: Der Transistor bildet mit dem Lastwiderstand im
Kollektorkreis einen (variablen) Spannungsteiler. Die Summe
aus der Spannung über der Last und der Kollektorspannung des
Transistors muss die Betriebsspannung ergeben.

Wenn Du den Kollektorstrom und den Kollektorwiderstand
(=Lastwiderstand) kennst, kannst Du den Spannungsabfall
an der Last ausrechnen.
Der zur vollen Betriebsspannung fehlende Teil muss dann
über dem Transistor abfallen.

> Die beiden Arbeitspunkte AUS und EIN sind mir bewusst, aber
> die kritische Verlustleistung entsteht ja genau bei dem
> Übergang dieser beiden. Und genau DEN will ich modellieren.

Ja.

> Kann es sein, dass der Ansatz komplett verkehrt ist?
> Für die Velrustleistung habe ich die Formel
> P_tot = U_CE * I_C + U_BE * I_B

Nein, passt schon.
Schaltzeit, Schaltfrequenz usw. natürlich beachten.

> Nur komm ich nicht auf dieses blöde U_CE.

Sollte geklärt sein.

> U_CE sollte im AUS-Zustand ja U_O entsprechen,

Ja.

> da der Widerstand des Kondensators quasi unendlich ist.

Kondensator? - Kollektor. Ja, richtig.

> Im EIN-Zustand ist der Widerstand im Datenblatt mit
> R_ON_sat = 17e-3 ohm angegeben.

Sportlich. - Ja, richtig erkannt.

> Wenn ich jetzt wüsste, wie das Übergangsverhalten des
> Widerstandes

NEIN!
Vergiss den "Widerstand" beim Bipolartransistor.

Du kannst den Kollektorstrom beschreiben. I_C gibt zusammen
mit R_Last die Spannung über der Last. U_CE + U_Last = U_betrieb.

> WÄHREND des Schaltens aussieht (gehe von e-Funktion aus),
> dann könnte ich doch I_C*R_Trans nehmen, um auf mein U_CE zu
> kommen, richtig?

Ja... Nein.

R_Trans ist nicht bekannt (und existiert auch nicht wirklich).
Der Kollektorkreis hat Stromquellenverhalten!

R_last ist aber bekannt. I_C * R_last = U_last.
U_last + U_CE = U_gesamt.

> Dann sollte im EIN-Zustand U_CE = ~0 V sein, bzw. U_CE_sat
> aus dem Datenblatt (= 0.85 V)

Ja, korrekt.

> und im AUS-Zustand U_CE = U_0 sein, richtig?

Ja, auch korrekt.

> Ich komme mir wirklich verdammt dämlich vor, vermutlich ist
> es ganz einfach..

Hmm, ja, ist es.
Ich habe es schon mehrfach geschrieben: Der Ausgangskreis
(=Kollektorstromkreis) ist in guter Näherung eine Stromquelle.

Es ist nicht möglich , die Spannung am Transistor ohne
Beachtung der Last zu berechnen. Das geht nicht.

Man muss indirekt über I_Last, R_Last, U_Last, U0 rechnen.

> Schande über mein Haupt (ich komme ursprünglich aus der
> Hardware-Enticklung mit VHDL - falls das als Entschuldigung
> zählen sollte)

Kein Problem. Jeder hat mal angefangen.

von Possetitjel (Gast)


Lesenswert?

Seb schrieb:

> Dann habe ich den Widerstand, den ich als Spannungsteiler
> nur in Relation zum Lastwiderstand legen muss.

Mach das nicht.

Löse Dich mal von der Vorstellung, Du brauchtest unbedingt
einen "Widerstand", um die Leistung ausrechnen zu können,
denn das ist nicht der Fall.

Den Kollektorstrom kennst Du direkt durch Deine Gleichungen.

Die Kollektorspannung kannst Du, wie ich im anderen Beitrag
beschrieben habe, aus Betriebsspannung, Kollektorstrom und
Lastwiderstand berechnen.

Jetzt hast Du alles, was Du brauchst.

Der Bipolartransistor ist kein steuerbarer Widerstand,
sondern eine steuerbare Stromquelle !

von Seb (Gast)


Lesenswert?

Possetitjel schrieb:
> Bitte nicht in die Tischkante beissen. Danke ;-)

Schon passiert... OHH-mannomannoma...

Naja gut, daran hab ich Trottel echt nicht gedacht.
Ich hatte in Ersatzschaltbildern den Transistor immer als variablen 
Widerstand hingemalt, nicht als variable Stromquelle.
Und dass ich den Zusammenhang "U_CE = U0 - I_CE * R_Last" nicht gesehen 
habe ist echt bitter. Vielen Dank schonmal!


Possetitjel schrieb:
> 20V zwischen Basis und Emitter sieht erstmal... merkwürdig
> aus. Zumindest für Si ist das grob falsch - allerdings habe
> ich noch keinen SiC-Transistor in der Hand gehabt. (Es kann
> also sein, dass das stimmt. Kann ich nicht beurteilen.)

U_BE max bei 175°C wird im Datenblatt als 20V angegeben. Ich wollte auch 
erstmal nur schauen, wie sich die Plots verhalten, wenn ich daran 
rumschraube.
Ich habe jetzt einen linearen Anstieg auf max. U_BE_sat = 3.5 V, da ich 
den Transistor als Schalter im Sättigungszustand halten möchte.

Possetitjel schrieb:
> Ist das ernst gemeint?! 10^(-48)A?

Mit dem Sättigungsstrom bin ich unsicher. In dem SPICE-Dingen stehen IS 
und ISE:
.model FSICBH017A NPN( IS=5.1e-48 BF=140 NF=1 ISE=7.56e-26 NE=2 BR=0.16
+ RB=0.076 RC=0.0146 XTI=3 XTB=-1.1 EG=3.2 TRC1=4e-3
+ CJE=5.72e-9 VJE=2.9 MJE=0.5 CJC=2.72e-9 VJC=2.9 MJC=0.5)

Generell finde ich es seltsam, dass man diesen Wert eigentlich IMMER 
braucht, er aber nicht im Datenblatt angegeben ist (zumindest nicht in 
dem mir vorliegenden).
Mit dem B_N bzw. BF = 140 aus dem SPICE-Modell bin ich auch unsicher, da 
dieser Wert ebenfalls nicht explizit im Datenblatt steht...

von Possetitjel (Gast)


Lesenswert?

Seb schrieb:

> Possetitjel schrieb:
>> Bitte nicht in die Tischkante beissen. Danke ;-)
>
> Schon passiert... OHH-mannomannoma...

Und ich hatte Dich extra gewarnt...

>> 20V zwischen Basis und Emitter sieht erstmal... merkwürdig
>> aus. Zumindest für Si ist das grob falsch - allerdings habe
>> ich noch keinen SiC-Transistor in der Hand gehabt. (Es kann
>> also sein, dass das stimmt. Kann ich nicht beurteilen.)
>
> U_BE max bei 175°C wird im Datenblatt als 20V angegeben.

Ahh... Vorsicht: Polarität beachten.

Eine Basis-Emitter-Flussspannung von 20V ist schwer vorstellbar.
Eine (maximal zulässige) Emitter-Basis-Sperrspannung von 20V
liegt eher im Bereich des Möglichen.

>> Ist das ernst gemeint?! 10^(-48)A?
>
> Mit dem Sättigungsstrom bin ich unsicher. In dem SPICE-Dingen
> stehen IS und ISE:
> .model FSICBH017A NPN( IS=5.1e-48 BF=140 NF=1 ISE=7.56e-26 NE=2 BR=0.16
> + RB=0.076 RC=0.0146 XTI=3 XTB=-1.1 EG=3.2 TRC1=4e-3
> + CJE=5.72e-9 VJE=2.9 MJE=0.5 CJC=2.72e-9 VJC=2.9 MJC=0.5)

Hmmm. Gut. Dann wird das wohl seine Richtigkeit haben.

Man sieht daran allerdings, dass das Modell ein reines Rechenmodell
ist, das wenig mit der Physik zu tun hat: Ein Ampere (1A) sind
grob gerechnet 10^20 Elektronen je Sekunde. 10^(-48)A ist ein
einzelnes Elektron in 10^19 Jahren...

> Generell finde ich es seltsam, dass man diesen Wert eigentlich
> IMMER braucht, er aber nicht im Datenblatt angegeben ist
> (zumindest nicht in dem mir vorliegenden).

Nee. Der Schaltungsentwickler, für den das Datenblatt gemacht
ist, braucht den Wert nie. Der geht vom Kollektorstrom aus,
dividiert den durch die (geschätzte) Stromverstärkung und hat
so den Basisstrom.
Die Basisspannung kennt er - das ist bei Silizium ungefähr 0.7V :)

Die ganze Rechnerei mit den Transportgleichungen und den absurd
kleinen Strömen ist nur für Computersimulation wichtig. Für den
Computer gilt der klassische Spruch von Gauß: "Mangelnde ...
Bildung zeigt sich am deutlichsten in äußerster Schärfe im
Zahlenrechnen."
Der Computer versteht ja nicht, was er da rechnet...

> Mit dem B_N bzw. BF = 140 aus dem SPICE-Modell bin ich auch
> unsicher, da dieser Wert ebenfalls nicht explizit im Datenblatt
> steht...

Der Transportfaktor steht i.d.R. nicht im Datenblatt - aber die
Stromverstärkung :)

Aber nicht wundern, wenn dort "hfe = 50...200" steht. Solche
Streuung ist normal.

von Helmut S. (helmuts)


Lesenswert?

Vielleicht solltest du mal Google befragen oder hast du die Treffer 
schon alle durch.

Google: transistor simulation matlab

Beispiel mit obiger Suche:

http://de.mathworks.com/help/physmod/elec/ref/npnbipolartransistor.html

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.