Forum: Analoge Elektronik und Schaltungstechnik Nicht Lineare Widerstände in LT Spice


von Stephan V. (vippis)


Angehängte Dateien:

Lesenswert?

Hallo,

Ich versuche im Rahmen meiner BA aus den Daten einer FEM Simulation ein 
magnetisches Ersatznetzwerk aufzubauen.

Mein Hauptproblem sind jedoch die Nichtlinearität der Widerstände in LT 
Spice einzubauen. Ich habe eine Magnetisierungskennlnie über Matlab mit 
einem Polynom 10. Ordnung intperpoliert.

Einmal vorweg: Jeder Zweig besteht aus 2 Widerständen und einer 
Spannungsquelle, die die Durchflutung darstellen soll.

Ich hab es auf drei verschiedene Arten probiert.

1) Mit Bi veränderlichen Stromquellen. Also Vorgabe des Flusses in 
Abhängigkeit des Über dem Bauteil abfallenden magnetischen 
Spannungsabfalls. Mir war aber eigentlich gleich klar das 2 Stromquellen 
in Reihe Unfug sind.
Das kann LT-Spice zwar rechnen, aber fast alle Knoten sind "am floaten".

2) Mit Bv veränderlichen Spannungsquellen. Da ich dann nur 
Spannungsquellen im Netzwerk habe, kommt dann die Fehlermeldung, dass 
die Matrix überbestimmt ist. Ich nehme an es fehlt ein Widerstand der 
den Strom begrenzen könnte?

3)R = V(I(R))/I(R). Widerstand über "ohmsches" Gesetz, wobei der 
Spannungsabfall interpoliert wird. Hier wird jetzt jedenfalls das 
Iteration Limit erreicht.

In dem einfachen Eisenkreismodell sind ca. 130 Widerstände. Bei 
komplexen Maschinen können das bis zu 1200 Widerstände werden. Ich habe 
die Netlist nach Methode 3 mal angehangen.

Meine Frage:

Weiß Jemand wie man gut nicht lineare Widerstände in LT Spice einbauen 
kann ? Oder ob ich irgendwie das Iteration Limit erhöhen kann ?

: Bearbeitet durch User
von Helmut S. (helmuts)


Lesenswert?

Hallo

R1 70 99  R = (1764.6553149933*pwr(I(R1),10) ....

So eine Konstruktion ist ganz schlecht für die Konvergenz.

Ersetze überall I(Rx) durch den Strom einer Spannungsquelle mit 0V die 
in Reihe mit Rx liegt. Achte auf die Polarität. So wie unten müsste es 
passen.

VR1 70 701 0
R1 701 99  R = (1764.6553149933*pwr(I(V1),10) ....

Gruß
Helmut

von Stephan V. (vippis)


Lesenswert?

Das hört sich doch gut an. Das werde ich morgen mal ausprobieren.

Schonmal Danke für deine Mühe.

von Simon K. (simon) Benutzerseite


Lesenswert?

Helmut S. schrieb:
> Hallo
>
> R1 70 99  R = (1764.6553149933*pwr(I(R1),10) ....
>
> So eine Konstruktion ist ganz schlecht für die Konvergenz.
>
> Ersetze überall I(Rx) durch den Strom einer Spannungsquelle mit 0V die
> in Reihe mit Rx liegt. Achte auf die Polarität. So wie unten müsste es
> passen.
>
> VR1 70 701 0
> R1 701 99  R = (1764.6553149933*pwr(I(V1),10) ....

Wieso genau ist das schlecht für die Konvergenz? Es fließt doch in 
beiden Fällen der exakt gleiche Strom?

von Helmut S. (helmuts)


Lesenswert?

>> R1 70 99  R = (1764.6553149933*pwr(I(R1),10) ....
>
> So eine Konstruktion ist ganz schlecht für die Konvergenz.
>
> Ersetze überall I(Rx) durch den Strom einer Spannungsquelle mit 0V die
> in Reihe mit Rx liegt. Achte auf die Polarität. So wie unten müsste es
> passen.
>
> VR1 70 701 0
> R1 701 99  R = (1764.6553149933*pwr(I(V1),10) ....

I(R1) und R1 sind in einer B-Quelle. Das ist aus Erfahrung schlecht für 
den Simulator. Ich hatte schon mehrfach Erfolg durch einfügen einer 
V-Quelle mit 0V. Übrigens ist das Standard in SPICE Ströme mit 
0V-Quellen oder zumindest mit V-Quellen zu messen.

Hab die Namensgebung nochmals verbessert.

Statt:
R1 70 99  R = (1764.6553149933*pwr(I(R1),10) ....

So:
VR1 70 R1 0
R1 R1 99  R = (1764.6553149933*pwr(I(VR1),10) ....

von Stephan V. (vippis)


Lesenswert?

Ich habe die Netlist jetzt mit der 0V Spannungsquelle im Zweig umgebaut.
Mit dem normalen Solver rechnet sich der Rechner tot. Nach 20min habe 
ich die Simulation abgebrochen. Mit dem alternativen Solver brechnet er 
den Arbeitspunkt jetzt in unter 1s.

Kann man dem alternativen Solver denn auch einigermaßen vertrauen ? Was 
macht er anders ?

Ich kann leider noch nicht ganz vergleichen, da mir noch ein 
Eingabeparameter fehlt. Ich werde das hinsichtlich der Abweichung dann 
genau überprüfen.

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Beim Alternate Solver ist der Dynamikbereich für Variablen größer. Er 
ist aber auch so 30% langsamer (Wenn denn der Standardsolver die Lösung 
auch fände). Vermutlich gibt es noch ein paar subtilere Unterschiede.

Das dürfte bei dir auch der Fall sein. Deine Netzliste werde ich aber 
nicht per Hand ändern ;-))

von Martin (Gast)


Lesenswert?

Stephan V. schrieb:
> Ich habe eine Magnetisierungskennlnie über Matlab mit
> einem Polynom 10. Ordnung intperpoliert.

Hast Du schon mal überprüft, ob die Terme mit x^9, x^10 numerisch Sinn 
machen? Der Dynamikbereich von 64 bit floats (default in Matlab, Spice 
weiss ich nicht) ist schon ordentlich, ob aber der Term
1248 * i^10 ... + 0.18 nicht jenseits davon ist...? Bei i=10 wäre das 
124800000000 + ... + 0.18
Schon überlegt, die offensichtlich etwas krumme Kurve anders zu 
approximieren? Spice dürfte da halt nicht viel bieten, PWL (piecewise 
linear) scheint das höchste der Gefühle zu sein. Sonst wären Splines 
(stückweise kubisch) sehr gute Kandidaten (pchip oder mkpp in Matlab).
Ob Spice mit Deinem Polynomgrab oder einem PWL-Grab besser zu Rande 
kommen würde, weiss ich nicht.
Nur so als Idee.

von Martin (Gast)


Lesenswert?

nochwas, Du hast die Interpolation und Netzlistengenerierung sowieso 
automatisiert, vermute ich - stell doch mal von Polynomen 10. Grades auf 
2. oder 3. ein - nur um zu sehen, ob das irgend einen Einfluss hat.

von Helmut S. (helmuts)


Lesenswert?

> Ich habe die Netlist jetzt mit der 0V Spannungsquelle im Zweig umgebaut.
Mit dem normalen Solver rechnet sich der Rechner tot. Nach 20min habe
ich die Simulation abgebrochen. Mit dem alternativen Solver brechnet er
den Arbeitspunkt jetzt in unter 1s.


Ist doch super dass es geklappt hat. Außerdem mal wieder ein Beweis 
mehr, dass es sich lohnt V-Quellen als "Strommesser" einzubauen.

von Stephan V. (vippis)


Lesenswert?

Martin schrieb:
> Stephan V. schrieb:
>> Ich habe eine Magnetisierungskennlnie über Matlab mit
>> einem Polynom 10. Ordnung intperpoliert.
>
> Hast Du schon mal überprüft, ob die Terme mit x^9, x^10 numerisch Sinn
> machen? Der Dynamikbereich von 64 bit floats (default in Matlab, Spice
> weiss ich nicht) ist schon ordentlich, ob aber der Term
> 1248 * i^10 ... + 0.18 nicht jenseits davon ist...? Bei i=10 wäre das
> 124800000000 + ... + 0.18
> Schon überlegt, die offensichtlich etwas krumme Kurve anders zu
> approximieren? Spice dürfte da halt nicht viel bieten, PWL (piecewise
> linear) scheint das höchste der Gefühle zu sein. Sonst wären Splines
> (stückweise kubisch) sehr gute Kandidaten (pchip oder mkpp in Matlab).
> Ob Spice mit Deinem Polynomgrab oder einem PWL-Grab besser zu Rande
> kommen würde, weiss ich nicht.
> Nur so als Idee.


Numerisch geprüft habe ich das nicht. Ich wüsste auch nicht genau wie 
ich das machen könnte. ^^

polyfit von Matlab gibt ja auch meistens eine Warnung aus, wenn das eher 
schlecht funktioniert. Aber ich habe keine Warnung erhalten.

Ich habe mir auch das Polynom und die Messwerte in eine Graphen ploten 
lassen, um mich zu vergewissern das es einigermaßen passt. Unter 10. 
Ordnung war die Abweichung zu stark.

Zu dem Punkt nach einer anderen Methode zu suchen.

Ich habe heute etwas von einer Interpolation (Name vergessen, ich habe 
gerade meine Aufzeichnungen nicht da) gehört, die die 
Magnetisierungskennlinien wohl ganz gut mit e-Termen abproximieren 
können soll.
Ich werde mir das mal genauer anschauen, wenn das Tool soweit ist, dass 
ich mit den FEM-Daten vergleichen kann.

Danke für euren Input!

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Was heißt genau bei magnetischen Werkstoffen??? 10% vielleicht und das 
auch nur ohne Vorgeschichte und ohne Temperatur.
Ich benutze tanh und pwr - das reicht völlig für Sättigungsverhalten.

Vielleicht sind deine Maßstäbe einfach zu anspruchsvoll? Mit Polynomen 
gibts immer nur Krach in LTspice. Vielleicht ist PSPICE da einfach 
stabiler.

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.