Hat jemand eine Idee wie man ein nichtlinearen Kondensator in Spice(zb
LTspice) modeliert. Mit nichtlinear ist die Änderung der Kapazität mit
der Spannung gemeint wie in Kerkos, parasitäre Kapazitäten in
Halbleitern aller Art.
Habe es mit einer gesteuerten Quelle wie folgt versucht:
1
R1 1 3 1u
2
VC 3 4 0
3
BC 4 2 V=(1/V(ctrl))*V(int)
4
BINT 0 INT I=I(VC)
5
CINT INT 0 1
Das ist ein mit ctrl gesteuerter Kondensator. Das funktioniert auch.
Problematisch wird es wenn ich die Steuerspannung von der Spannung des
Kondensator selbst abhängig mache. Dann gibt's Konvergenzprobleme.
Wenn ich die Integration des Stromes, statt des 1F Kondensators wie in
dem Model, mit dem idt() Befehl mache gibt es auch Probleme.
Hat jemand eine Idee?
In LTspice musst du dazu die Ladung Q als Fzunktion der Spannung
spezifizieren. Dazu ersetzt du den Wert (z. B. 100pF) durch den text
Q=100p*x
Das wäre jetzt ein linearer 100pF Kondensator.
x in der Formel ist automatisch die Spannung an der Kapazität.
Allgemein: Kapazität=f(x)
Q=Integral(f(x))
Aus der Help von LTspice:
There is also a general nonlinear capacitor available. Instead of
specifying the capacitance, one writes an expression for the charge.
LTspice will compile this expression and symbolically differentiate it
with respect to all the variables, finding the partial derivative's that
correspond to capacitances.
Syntax: Cnnn n1 n2 Q=<expression> [ic=<value>] [m=<value>]
There is a special variable, x, that means the voltage across the
device. Therefore, a 100pF constant capacitance can be written as
Cnnn n1 n2 Q=100p*x
>In LTspice musst du dazu die Ladung Q als Fzunktion der Spannung>spezifizieren.
Ja, das is mir bekannt (wie flux= beim L), doch das hat am wenigsten
funktionert. Für einfache Abhängigkeiten a, doch nicht für stark
nichtlineare Kondensatoren, zb Coss, Ciss uws.
Ich poste mal den Versuch der implementierung mit Q=...
> doch nicht für stark nichtlineare Kondensatoren, zb Coss, Ciss uws.
Das geht auch damit. Zeig her.
Das Integral muss natürlich stimmen. Der typische Fehler ist, dass Leute
"gerade" Q-Funktionen definieren. Das heißt auch bei negativer Spannung
käme da eine positive Ladung Q heraus.
>doch das hat am wenigsten funktionert.
Das wundert mich jetzt. Die nichtlinearen Kapazitäten kann man mit
Q=x*... herrlich Simulieren. Hatte damit noch keine Konvergenzprobleme.
Den Fehler, denn Helmut beschrieben hat, habe ich auch schon gemacht.
Für ein Coss muss die Funktion jedoch nicht zwangsweise +/- symetrisch
sein, denn andersrum leitet die Bodydiode, dh ein tanh und cosh
funktioniert sehr gut.
Im Anhang ein Umschwingvorgang eines Resoanzwandlers mit verschiedenen
600V SJ-Mosfets. Zu erkennen ist einmal ein gemütlicher Fet wie
C6,MDmesh2,SupreMOS und ein "giftiger" wie ein CP,DTMOS4,MDmesh5,etc.
Messung und Model decken sich recht exakt, ohne das ganze aufwendig
mittels Table zu machen (Ich finde vl auch Messungen wo diese Fets in
einem 4kW LLC verbaut sind). Um Umschwingenergien und Zeiten in der
Simulation zu sehen reicht es.
Das 1200V/50A SiC-FET-Sixpack Modul geht allerding nicht mehr so ohne
weiters mittels geschlossener Formel, (bzw für mich zu aufwendig, da war
es schneller das per Q=tbl(x,.,.,.) zu lösen.
MFG Fralla
@Helmut:
Diese Polynomnäherung darf aber auch keine negative Spannung abbekommen,
oder? Zumindest steigt die Kapazität extrem an wenn die Spannung negativ
wird, was ja nicht Ziel des Models sein kann.
@Fralla: Kannst du mir sagen welche Näherung du verwendest? tan() und
cosh(), wie jetzt?
@Mark,
ein Kapazitätsmodell für eine Didoe ist imemr für einen bestimmten
Spannungsbereich. Schau dir mal die Gleichungen für die
Sperrschuchtkapazität von Didoen an. Da will niemand 30V Flussspannung
anlagen.
Fralla schrieb:> Das 1200V/50A SiC-FET-Sixpack Modul geht allerding nicht mehr so ohne> weiters mittels geschlossener Formel, (bzw für mich zu aufwendig, da war> es schneller das per Q=tbl(x,.,.,.) zu lösen.
Hi zusammen, ich würde auch gerne eine look up table benutzen. Mit einer
Formel habe ich es schon aber ich hätte gern noch eine 2. Lösung um
schneller mal paar werte anzupassen. Leider kommt bei mir was komisches
raus :( kann man das einfach so hinschreiben wie du gesagt hast mit
Q=tbl(x,.,.,.)?
Hier habe ich mal das Modell von Helmut nur mit dem befehl table drin
und ein paar dummy Werten. Jedoch Kommt nicht das gewünschte Ergebnis
raus wie in der look up table vorgegeben.
Das kann doch nicht sein, dass ich das nicht hinbekomme. Ich weiß halt
leider nicht genau welche Einstellungen ich machen muss für die
Spannungsquelle. Sobald man da was ändert verändert sich alles...
Was ich noch vergessen hab zu erwähnen: Es soll eine exponentiell
abfallende Funktion wie bei Helmut sein und sie soll bei ca. 130 pF bei
0V starten und gegen 10 pF bei 100 V gehen
Jop U. schrieb:> Jedoch Kommt nicht das gewünschte Ergebnis raus wie in der look up> table vorgegeben.
Deine Q(U)-Funktion hat auf Grund ihrer Definition mit table() Knicke.
Deswegen und wegen I=dQ/dt ist I unstetig (macht Sprünge).
Vermutlich beschreibt deine table-Funktion aber nicht Q, sondern C, also
C(U)=table(U, ...). Um daraus Q(U) zu gewinnen, musst du die Funktion
über U integrieren: Q(U)=∫C(U)du. Diese Funktion (mit U durch x ersetzt)
kannst du dann in den simulierten Kondensator eintragen.
Die table-Funktion nützt dir dann allerdings nichts mehr, weil die
integrierte Funktion Q(U) im Gegensatz zu C(U) nicht stückweise linear
ist.
Jop U. schrieb:> Es soll eine exponentiell abfallende Funktion wie bei Helmut sein
Exponentialfunktionen sind ja sehr leicht zu integrieren. Da würde
ich nicht den Umweg über die table-Funktion gehen.
Yalu X. schrieb:> Die table-Funktion nützt dir dann allerdings nichts mehr, weil die> integrierte Funktion Q(U) im Gegensatz zu C(U) nicht stückweise linear> ist.
Hi, sorry dass ich jetzt erst antworte. Ich habe komischerweise keine
emailbenachrichtigung erhalten...
Ich glaube du hast recht. Was mich jedoch wundert ist, wie Fralla das so
gemacht hat. Laut seiner Beschreibung hat er es nämlich genau so gemacht
aber das funktioniert nicht.
Habe jetzt mal rumprobiert leider ohne Erfolg. Aber theoretisch müsste
das ja schon gehen, da bin ich mir sehr sicher. Bei Fralla hats ja auch
geklappt.
Ich habe meine Messwerte mit Matlab integriert und dann kam schön die
Kurve von Q raus. Diese Werte hab ich dann rauskopiert und in die table
geschrieben. Leider nicht das gewünschte Ergebnis.
Nur mal zur Sicherheit: Wie schaue ich denn überhaupt genau ob die
Kapazität stimmt am Ende? Ich kann die ja in SPICE nicht direkt messen.
Bin mir da nämlich gar nicht sicher, ob ich das am Ende einfach nur
falsch plotte und die table sogar stimmt
Joe G. schrieb:> Trage doch den Strom durch den Kondensator über der Spannung am> Kondensator auf. Die sich daraus ergebende Kennlinie ist die Kapazität.
ok alles klar danke.
Leider sieht es trotzdem nicht aus, wie es aussehen soll. Keine Ahnung
was ich falsch mache oder ob das doch nicht geht.
Weiß zufällig jemand wie man in dieser Yahoo gruppe auf die Modelle
zugreift oder eine Frage stellt? Habe mich dort angemeldet aber kann nur
lesen und nichts selber machen
Q gibt doch die Ladung an. Soll die Kapazität variabel sein, mußt du die
Ladung mit der Spannung über dem Kondensator (Variable x)
multiplizieren. D.h. deine Tabellenwerte müssen mit x multipliziert
werden. Ich habe mal lineare Werte von 10 bis 100 eingetragen. Diese mit
der Spannung x multipliziert ergeben dann die Ladung Q.
Joe G. schrieb:> Q gibt doch die Ladung an. Soll die Kapazität variabel sein, mußt du die> Ladung mit der Spannung über dem Kondensator (Variable x)> multiplizieren. D.h. deine Tabellenwerte müssen mit x multipliziert> werden. Ich habe mal lineare Werte von 10 bis 100 eingetragen. Diese mit> der Spannung x multipliziert ergeben dann die Ladung Q.
Aber welche Werte sind das bei dir jetzt in der table? Ich dachte da
gehören sowohl die Spannungswerte als auch die Ladungswerte rein?
Jop U. schrieb:> Ich dachte da> gehören sowohl die Spannungswerte als auch die Ladungswerte rein?
Ja, sorry, die hatte ich vergessen.
Hier nochmals mit beiden Werten in der Tabelle. Aber wie es aussieht,
dürfen die Stützstellen nicht zu weit entfernt sein, da durch das
Differenzieren der Fehler schnell sehr groß wird. Test.asc mit Tabelle
und Test1.asc mit Funktion.
Jop U. schrieb:> Wie schaue ich denn überhaupt genau ob die> Kapazität stimmt am Ende?
Mach es wie Helmut, dessen Beispiel du ja übernommen hast: Lege an den
Kondensator eine Spannung mit konstantem dU/dt (also eine Rampe) an.
Wegen C=I/(dU/dt) muss in der Simulation nur I bestimmt werden, was für
Spice kein Problem darstellt. Da Helmut dU/dt=1MV/s gewählt hat,
dividiert er im Plot den Strom durch 1E6, um die richtigen Zahlenwerte
(in Farad gemessen) zu erhalten.
Normalerweise würde jetzt aber die Kapazität in der falschen
Einheit,nämlich in Ampere angezeigt werden, was etwas unschön ist.
Leider kennt LTspice die Einheit Farad nicht, also hat sich Helmut dafür
entschieden, statt durch 1E6 durch 1E6A zu dividieren, wodurch die
unpassenden Einheit einfach weggekürzt wird.
Zusätzlich lässt er auf der x-Achse statt der Zeit die Spannung
auftragen, so dass schließlich das gewünschte C(U)-Diagramm entsteht.
Joe G. schrieb:> Soll die Kapazität variabel sein, mußt du die Ladung mit der Spannung> über dem Kondensator (Variable x) multiplizieren.
Vorsicht: Die Formel Q=C·U gilt nur für konstantes C. Ist C von U
abhängig, lautet die Formel allgemeiner dQ=C(U)·dU bzw. Q=∫C(U)dU.
Deswegen schrieb ich oben:
Yalu X. schrieb:> Um daraus Q(U) zu gewinnen, musst du die Funktion über U integrieren
Wenn das mit der Integriererei zu lästig ist, kann man statt des
Kondensatormodells auch eine B-Quelle verwenden, die gemäß I=C(U)·dU/dt
in Abhängigkeit von der angelegten Spannung den passenden Strom erzeugt.
Ich habe das mal für dein Beispiel von oben
Jop U. schrieb:> Draft4.asc
umgesetzt (s. Anhang). Mit Helmuts Methode zum Plotten der Kapazität
kommt auch tatsächlich wieder die von dir vorgegebene Funktion heraus.
Möglicherweise hat die Methode mit der B-Quelle gegenüber der Verwendung
des Kondensatormodell auch Nachteile, bspw. bzgl. der Stabilität der
Simulation. Probier's einfach in deiner konkreten Anwendung aus, dann
wirst du sehen ...
@Yalu
Vielen vielen Dank! Du hast mir wirklich sehr geholfen. Danke auch für
die ausführlichen Erklärungen mit der Rampe. Habe jetzt meine ganzen
Werte reingemacht und es passt :)
Falls ich noch mehr zu dem Q rausfinde als Lösung kann ich es hier noch
schreiben aber ich denke das passt jetzt so
Habe jetzt leider doch nochmal ein Problem. Und zwar wenn ich jetzt den
ganzen reverse current plotte in einem dc sweep dann macht LTspice
trotzdem den Strom durch die Kapazität, obwohl das ja nur bei einer
.tran Simulation der Fall sein sollte und es eine ddt (Ableitung) gibt.
Warum checkt Spice das nicht, dass ddt nicht bei dc geht wenn ich es mit
der Lösung mit der Stromquelle mache wie Yalu?