JoeHill

Leidenschaftlicher LTspicer
Member
Modellieren von komplexen Widerständen/Impedanzen

Einleitung:

In diesem Artikel geht es um fortgeschrittene Modellierung von Widerständen/Impedanzen. Im analogen Bereich hat man z.B. sehr oft mit Frequenzgängen, Spannungs-/Stromabhängigkeiten und parasitären Phänomenen zu tun.
Ein Widerstand ist in Wahrheit niemals einfach nur ein Widerstand!
Die RF/HF/UHF-Mannschaft hat damit auch mehr als oft genug zu tun - denn die von denen benutzten Bauteile (L/C/R) zeigen u.U. einen extrem freakigen Frequenzgang richtung Hochfrequenz, der beim Design unbedingt berücksichtigt werden muss.

Es geht hier darum, dass auch einfachste Komponenten wie z.B. Widerstände ,abhängig von bestimmten Konditionen, bestimmtes -komplexes- Verhalten zeigen - und dass man zuweilen gezwungen ist, dieses Verhalten nachzubilden.

Es geht auch um funktionale Modelle/Schaltungsblöcke. Hier steht man oft vor der Aufgabe, eine "BlackBox" zu designen, welche ein bestimmtes (z.B. frequenzabhängiges) Verhalten zeigt. Ein großes Stichwort ist hier Impedanz (frequenzabhängiger Widerstand). Diese -quasi aus dem Nichts- zu erschaffen und sie dem Verhalten eines realen Objekts nachzumodellieren ist überhaupt nicht so einfach.

Bisher hat man sich mit Tricks beholfen. Oft machte man sich die Eigenschaften von passiven Komponenten (z.B. Spulen) zu nutze und modellierte fleißig nach dem Trial&Error Prinzip - solang bis es einigermaßen gepasst hat. Ein Beispiel:

Ein "normaler" Widerstand wird mit einer relativ dicken Spule in Serie geschaltet. Beide zusammen zeigen dann ein Verhalten eines frequenzabhängigen Widerstandes. Leider ist die Annäherung in den meisten Fällen viel zu grob und ungenügend und deshalb abzulehnen.​


Lösungen:


1) Studentenlösung
Die "Studentenlösung" setzt sich hauptsächlich aus den neuen Quellen ("Behavioral Sources") in LTspice und jeder Menge Mathematik zusammen:
Seit geraumer Zeit bietet LTspice das Feature an, Quellen und mathematische Funktionen zu koppeln.
Es ist also möglich mit Hilfe mathematischer Funktionen das Verhalten einer Quelle zu konditionieren.​
Beispiel für Spulen: http://iiitdelectronics.blogspot.de/2013/04/how-to-simulate-frequency-dependent.html

Die Studenten erinnern sich sofort an Ohm's Gesetz - jubilieren weil sie endlich ihre Formeln anwenden können - und bauen sich einen Widerstand (oder eine Spule) zunächst einmal aus einer Voltage- und Current-Source zusammen. Denn R=U/I.

Als nächstes werden die Quellen wie gewünscht konditioniert - z.B. kann man den Widerstand abhängig von der inversen Wurzel der Frequenz machen. Wie das genau geht ist stark abhängig von der mathematischen Funktion und von der Dimension, von der Du Dein Bauteil abhängig machen möchtest. Es sei auf jeden Fall ein Blick in die Hilfe und/oder Nutzer-Referenz empfohlen. (klick hier: http://ltspiceusers.ch/showthread.php?t=142)

Oft ist eine LAPLACE-Transformation vonnöten. Sie juggelt die Daten zwischen den verschiedenen Dimensionen - denn (z.B.) eine globale Variable "Frequency" existiert in LTspice nicht. Man muss sie zunächst berechnen. Dies geht mit dem Laplace-Kommando.

Theoretisch könnte man mit den "Behavioral Sources" alles mögliche modellieren - dazu muss man aber die Elementargesetze der Elektronik und natürlich auch der Mathematik kennen - und es ist relativ aufwendig. Man muss zunächst einmal die "Sources" Bugfrei integrieren, was bei der SPICE-Syntax nicht immer unkompliziert ist - und dann muss man sich auch noch mit den Formeln auseinandersetzen. Schlussendlich muss man sich dann damit abfinden, das SPICE -schonwieder- zwei neue Quellen im Code hat. Das ist -zumindest- der Übersicht abträglich - der Arbeitsgeschwindigkeit mit Sicherheit auch.

Fazit: Es funktioniert - aber es braucht schon studierte Leute - oder Leute die vor Mathematik nicht die geringste Angst haben.

2) Hacker-Lösung

Als "Underdog" mit abgebrochenem Studium bin ich einfach zu faul. Ich habe keine Lust, blos für eine popelige Impedanz ein riesen Theater mit 2 neuen "Sources" zu machen. Es muss einfacher gehen.
Es geht.

Im Netz werden einige Listen mit bisher -nicht offiziell dokumentierten- Funktionen [<-klickmich] in LTspice kolportiert. Und siehe da: Auch für Widerstände ist was dabei:

- normalerweise platzierst Du einen Widerstand, klickst anschließend mit <rechte Maustaste> drauf und tippst den Wert ein.
- Der Trick funktioniert so: Statt einfach nur den Wert einzugeben, tun wir mal was anderes:
Wir geben folgendes ein:
Code:
Bitte, Anmelden oder Registrieren to view codes content!

Hinweis: Der Term "Frequenz" muss in LTspice mittels: {abs(s)/6.283185} berechnet werden. Am Ende steht dort also ganz einfach auf deutsch: R=20k Laplace 1/sqrt(freq) - Der Widerstand ändert sich invers zur Wurzel der Frequenz.

- Wir machen eine AC-Analyse und lassen uns die Spannung (über dem Widerstand) geteilt durch den Strom (durch den Widerstand) plotten.
- Das Ergebnis lassen wir uns "linear" anzeigen - die y-achse schaltet auf "Ohm" bzw. "Widerstand" um.
- Wir sehen, dass unser Widerstand nun frequenzabhängig ist - mission accomplished
- Wer ein bisschen Mathematik beherrscht, kann nun mit dem Feintuning beginnen (z.B. zusätzliche Faktoren, Summanden, Operationen etc..)
- Das Schöne ist, dass unsere Impedanz auf dem Schaltplan wie ein "normaler" Widerstand daherkommt - großes Plus für Übersichtlichkeit
- Die Syntax/Kommandos für diese "geheime" Funktion von Widerständen sind identisch mit jenen der "Behavioral Sources" (siehe hierzu Hilfe oder Referenz)​
 
Zuletzt bearbeitet:
Symbol

Gehen wir nun ein wenig in die Praxis. Als erstes wäre es ganz hilfreich, für einen frequenzabhängigen Widerstand ein eigenes Symbol zu erstellen. Nutzt man das Symbol, welches für ohmsche Widerstände gedacht ist, besteht sehr schnell (besonders für Anfänger) Verwechslungsgefahr.

Es muss -unbedingt- klar ersichtlich sein, ob man eine Impedanz oder einen (ohmschen) Widerstand vor der Nase hat.

Das Zeichen für Impedanz ist Z.

Ich hab es mir -wie so oft- einfach gemacht: Im LTspice-Stammverzeichnis befindet sich unter "Lib/Misc/" das Symbol "EuropeanResistor.asy"

Das Symbol wird in den Symbol-Editor geladen (File->Open->Type:asy->%path%/EuropeanResistor.asy)

Schon ist das Symbol fertig. Attribute müssen nicht geändert werden, da diese schon standardmäßig auf "Widerstand" gesetzt sind. Das Symbol wird (z.B.) auf dem Desktop gespeichert und manuell mit Admin-Rechten zurück ins LT-Spice-Stammverzeichnis, oder aber ins aktuelle Arbeitsverzeichnis kopiert.

Nun kann unser Symbol -wie jede andere Komponente- auf den Schaltplänen platziert werden.
 
Zuletzt bearbeitet von einem Moderator:
Modellierung und Testschaltung Part I

Jetzt sind wir bereit, weiter in die Praxis zu gehen. Beispielhaft wollen wir folgende Impedanz modellieren:

- Der Widerstand soll bei 1kHz c.a. 650kOhm betragen
- Der Widerstand soll mit dem Faktor {1/sqrt(freq)} steigen bzw. fallen
- Der Widerstand nahe/bei DC soll c.a. 20kOhm betragen


Wir werden unserem neuen Symbol nun also eine Transferfunktion für die Impedanz vs. Frequenz an die Seite stellen, die uns genau diese Anforderungen erfüllen kann. Wir haben hier (das ist aber oft so) das Glück, dass die Transferfunktion im Prinzip schon bekannt ist: Sie geht aus der Aufgabenstellung hervor - der Widerstand steigt -ausgehend von 20k- mit 1/sqrt(freq).

Sollte man einmal das Pech haben, die Transferfunktion NICHT zu kennen, muss man abstrahieren und "passend machen" - oder einen Mathlabjunkie fragen, der aus Graphen/Plots eine sich-annähernde Transferfunktion machen kann (ja - möglich ist es, aber nur für Mathematiker).

Los gehts!

Zuerst platzieren wir das Symbol und eine Hilfs-Spannungsquelle (1VDC,1VAC,Phase=0):
deleted

Anschließend halten wir <CTRL>/<STRG> gedrückt und klicken mit der <rechten> Maustaste auf das Impedanz-Symbol - es öffnet sich der Attribut-Editor:
deleted

Es werden folgende Kommandos/Werte eingegeben:
deleted

Das ganze sieht nach dem Bestätigen so aus:
deleted
 
Zuletzt bearbeitet von einem Moderator:
Modellierung und Testschaltung Part II

Nun ist das Setup für unsere Komponenten abgeschlossen. Wir wenden uns nun dem Setup unseres Meßinstrumentariums zu.

Bei einem Frequenzabhängigen Widerstand macht es Sinn (wer hätte das gedacht), den Widerstand auf der y-Achse und die Frequenz auf x-Achse darzustellen. Das heißt wir werden eine AC-Analyse machen. Hierfür wird (gewöhnlich) die Frequenz durch die Schaltung gesweept und die Magnitude gespeichert und geplottet (typisch: Bode-Plots). Man kann aber nicht nur Gain vs. Freq. plotten, sondern theoretisch "alles mögliche" vs. Freq. . Uns interessiert hier Hauptsächlich der Widerstand - dafür müssen wir tricksen.

Zunächst setzen wir den für die AC-Analyse erforderlichen Frequenzintervall und den zugehörigen Tick:
deleted

Nach dem Bestätigen fängt LTspice u.U. schon an zu rennen. Ansonsten wählen wir -wie gewohnt- "run". Als Meßpunkt wählen wir V(Probe) [dieser Meßpunkt wurde beiläufig hinzugefügt - es kann aber auch einfach der entsp. Knoten(V(n00X)) gemessen werden]). SPICE plottet nun die magn. Voltage vs. Frequency. Die Linie ist glatt, wie mit dem Lineal gezogen - klar - denn die Hilfsquelle hat null Innenwiderstand. Das muss auch in diesem Falle so.

Da wir jedoch an der Impedanz (V/I vs. Freq) und nicht am Gain interessiert sind, klicken wir im Plot-Fenster oben mit der <rechten> Maustaste auf [V(probe)] und ändern die Expression wie folgt:
deleted

Nach dem Bestätigen sehen wir schon eine Art Plot, der schonmal nicht ganz falsch aussieht. Ändern wir noch ein bisschen die Beschriftung und schalten wir auf Linear um - hierfür klicken wir mit der <linken> Maustaste auf die Beschriftung der y-Achse. Das ganze wird wie folgt abgeändert:
deleted

Nun sieht unser Plot schon ganz gut aus - in jedem Falle aussagekräftig. Zoomen wir an einigen stellen herein um zu prüfen, ob sich unser Testobjekt an die Spezifikationen hält:
deleted

Siehe da! Wir liegen so einigermaßen im Rahmen. Mission abgeschlossen!

Die Projektdateien befinden sich hier im Anhang.
 
Zuletzt bearbeitet von einem Moderator:

Benutzer welche diesen Thread betrachten (Mitglieder: 0, Gäste: 1)

Zurück
Oben