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
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.
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.
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.
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?
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.
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)
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...
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? -_-
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.
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 !
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...
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.