Software: SimX - Einfuehrung - Elektro-Chaos - Oszillator

Aus OptiYummy
Zur Navigation springenZur Suche springen

Sinus-Oszillator (Schaltungssimulation)
Zusatzaufgabe für schnelle Modellierer

Um einem LC-Schwingkreis eine dauerhafte Sinusschwingung zu entlocken, muss man ihm mittels einer elektronischen Schaltung zu jedem Zeitpunkt exakt die Energie zuführen, welche durch die Verluste im Schwingkreis in Wärme umgewandelt wird (Siehe: Oszillator).

Eine mögliche Schaltung verwendet einen Differenzverstärker mit zwei Transistoren und zeichnet sich durch sehr gutmütiges Verhalten aus. Für die Schaltungssimulation benutzt man im Normalfall Spezialprogramme, z.B. die weit verbreitete SPICE-Software.

In Simulatoren zur System-Simulation, zu denen SimulationX gehört, kann man einfache elektronische Schaltungen ebenfalls problemlos simulieren. Man hat dann zwar den Nachteil fehlender Bauelement-Datenbanken. Jedoch kann man die Schaltungsmodelle direkt mit anderen physikalischen Domänen koppeln (z.B. mit elektro-mechanischen Aktuatoren).

Wir bauen die Schaltung eines Sinus-Oszillators als neues SimulationX-Modell auf (Oszillator.ism):

Software SimX - Einfuehrung - Elektro-Chaos - Oszillator-Schaltung.gif

Die Frequenz wird durch den Parallel-Schwingkreis aus L1 und C3 bestimmt:

  • Wir verwenden eine Luftspule mit einer Induktivität L1=0.01 H.
  • Es soll eine Frequenz von f0=1 kHz erzeugt werden. Dafür ist die Kapaziät C3=? F zu ermitteln (verlustarmer Klasse-1-Keramik-Kondensator):
[math]\displaystyle{ f_0 = \frac{1}{2 \pi \sqrt{L C}} }[/math]

Für die restlichen Bauelemente verwenden wir folgende Parameter:

  • Die Kapazitätswerte der anderen Kondensatoren sollen den gleichen Wert erhalten:
    C1=C2=C3.
  • Die Widerstände besitzen folgende Werte:
    R1=R2=330 kΩ
    R4=R5=100 kΩ
    R3=4.7 kΩ
  • Die Transistoren behalten ihre Vorgabewerte.
  • Die Betriebsspannung beträgt U1=12V.

Die generierte Sinus-Spannung greifen wir am Kollektor von T2 z.B. mittels eines zusätzlichen Spannungssensors ab (Potentialpunkt in obiger Schaltung markiert). Diese Ausgangsspannung kann im Bereich von 0..24 V schwingen und soll in einem Signalfenster dargestellt werden..

Wir konfigurieren die Simulation für einen Zeitbereich von tStop=1 s und mit einer hinreichend kleinen Protokollschrittweite dtProtMin:

  • Nach dem Start der Simulation werden wir mit großer Wahrscheinlichkeit sofort mit einer Fehlermeldung überrascht:
Software SimX - Einfuehrung - Elektro-Chaos - Oszillator-konvergiert nicht.gif
  • Solche Probleme haben wir für eine "harmlose" Sinusschwingung nicht erwartet!
  • Die Sinusschwingung ergibt sich jedoch erst aus der Wechselwirkung insbesondere der beiden Transistoren, welche sehr kleine Zeitkonstanten besitzen. Damit wird insbesondere der Einschwingvorgang unmittelbar nach dem Einschalten sehr kritisch.
  • Dieses Problem kann man mit Erfahrungswissen durch Verringern der minimalen Zeitschrittweite lösen, z.B. dtMin=1E-12 s:
Software SimX - Einfuehrung - Elektro-Chaos - Oszillator-dtMin-Reduktion.gif

Danach sollte die Simulation ordentlich starten.

Software SimX - Einfuehrung - Elektro-Chaos - Oszillator dtProtMin verringert.gif

Merke: Falls es zu unerwarteten Einbrüchen oder Schwebungen in der Hüllkurve von Signalverläufen kommt, so deutet dies meist auf eine zu große Protokoll-Schrittweite hin!

Betrachtet man die aktuelle Hüllkurve, so verwundert, dass die konstante Schwingungsamplitude erst nach einem leichten Überschwingen erreicht wird. Dieser "Einbruch" in der Hüllkurve verschwindet nicht durch eine weitere Verringerung von dtProtMin:

  • Die konstante Schwingungsamplitude wird erst durch einen Regelvorgang über die Differenzverstärker-Stufe erreicht. Hier kommt es bei der Simulation auf eine möglichst geringe Berechnungsfehler an.
  • Die unterschiedlichen Solver besitzen in Hinblick auf die Rechengenauigkeit unterschiedliche Eigenschaften. Hier hilft häufig das Ausprobieren eines anderen Solvers.
  • Wie die unterschiedlichen Verfahren zur numerischen Intergration qualitativ funktionieren, kann man im folgenden PDF-Script lesen.
  • Im SimulationX kann man z.B. den standardmäßigen BDF-Solver durch den MEBDF-Solver ersetzen. Dabei handelt es sich um einen "modifizierten und erweiterten" BDF-Solver, welcher einige Spezialfälle besser behandelt:
  • Für den Experten besteht die Möglichkeit, über sehr viele Parameter ein Feintuning des gewählten Solvers vorzunehmen. Das ist in unserem Beispiel nicht erforderlich, sondern aufgrund unseres Laienstatus eher schädlich.
  • An den Simulationsergebnissen des MEBDF-Verfahrens gibt es (vorläufig) nichts zu bemängeln:


Signalverarbeitung

Spätestens jetzt sollte man überprüfen, ob die mit dem analytisch dimensionierten Schwingkreis erzeugte Frequenz den richtigen Wert besitzt:

  • Hier könnte man im Signalfenster die Dauer einer Schwingungsperiode ausmessen. Das ist etwas umständlich und fehleranfällig.
  • Mit unseren Erfahrungen zur Signalverarbeitung werden wir uns eine Auswerte-Elektronik modellieren, welche die aktuelle Frequenz automatisch ermittelt:
Software SimX - Einfuehrung - Elektro-Chaos - Oszillator-Auswerteschaltung.gif
  • Die Uhr zum Messen der aktuellen Simulationszeit t wird durch ein Signalglied Function nachgebildet. Als Parameter F des Function-Blockes verwenden wir die globale Variable t, welche den aktuellen Wert der Simulationszeit enthält.
  • Das Ausgangssignal der Uhr speisen wir in 2 ereignisgesteuerte Abtastglieder. Diese sollen die Zeitpunkte der Nulldurchgänge der Sinusspannung erfassen:
    Software SimX - Einfuehrung - Elektro-Chaos - Oszillator-Auswertung Nulldurchgang.gif
    • Die "Null-Linie" der Sinusspannung entspricht dem Wert der Betriebsspannung. Deshalb wird U1.V als Grenzwert für die Auslösung des Sample-Vorgangs definiert.
    • t1 und t2 erfassen jeweils die Zeitpunkte entgegengesetzter "Nulldurchgänge" der Sinusspannung. Somit sind die Ausgangs-Zeitwerte beider Abtastglieder immer um die Dauer der letzten Halbwelle versetzt.
  • Ein Signalblock Function2 erfasst mit seinen beiden Eingängen x1 und x2 die beiden gesampelten Zeitwerte und berechnet daraus die aktuelle Frequenz F: 0.5/abs(x1-x2)
    • Leider stürzt die Simulation damit sofort nach dem Start mit "Division durch Null" ab, weil für t1 und t2 jeweils nur der Anfangswert y0=0 vorliegt.
    • Deshalb ist bei der Frequenzberechnung dieser Fall separat zu behandeln. Es genügt dafür die Bedingung t1.y*t2.y>0.
    • Für die Zeit der ersten Periode wollen wir aus den Schwingkreis-Parametern analytisch den Wert der Resonanzfrequenz berechnen:
Software SimX - Einfuehrung - Elektro-Chaos - Oszillator-Frequenberechnung.gif
  • Der eingeschwungene Zustand wird im Beispiel nach ca. 0.2 s erreicht. Für diesen Zeitbereich betrachten wir nun den Frequenzverlauf des Oszillators:
Software SimX - Einfuehrung - Elektro-Chaos - Oszillator-Frequenverlauf.gif
  • Bereits nach wenigen Perioden ist die endgültige Frequenz erreicht. Die erzeugte Frequenz liegt im Beispiel wenige Hertz oberhalb von 1 kHz. Ursache ist die Rundung des Kapazitätswertes für C3 auf 2 Ziffernstellen.

Frage 6: Welcher "exakte" Kapazitätswert (gerundet auf 4 Ziffernstellen) müsste bei dem vorgegebenem "exakten" Induktivitätswert L1=0.01 H für eine Frequenz von 1 kHz verwendet werden? Wie kann man diesen Wert durch Parallelschaltung zweier handelüblicher Kondensatoren der E24-Reihe realisieren?

Verlustbehafteter Parallel-Schwingkreis

Bisher funktioniert unsere Oszillator-Schaltung recht gut. Dabei kann man schnell vergessen, dass hier nicht die Schaltung selbst funktioniert, sondern ein Modell der Schaltung! Das Verhalten kann in der Realität ganz anders aussehen, weil wir einen wichtigen Effekt im Modell vergessen haben:

  • Eine Spule besitzt immer einen ohmschen Widerstand infolge des Spulendrahtes, wenn man nicht den Spezialfall der Supraleitung betrachtet. Das führt zu den bereits untersuchten gedämpften Schwingungen des passiven LC-Schwingkreises.
  • Auch der Kondensator arbeitet nicht verlustfrei. In unserem Beispiel können wir aber seine Verlust im Vergleich zu den Spulenverlusten vernachlässigen.
  • Wir ergänzen in unserem Modell in Reihe zur Induktivät einen Widerstand RSpule, für den wir wieder einen Wert von 1.3 Ω annehmen.
  • Hinweis: In der Student Edition von SimulationX kann man nur 5 Widerstandselemente verwenden. Wir benutzen deshalb ein Leitwert-Element mit G=1/R als Serienwiderstand zur Induktivität.

Nach dem Ergänzen des Spulenwiderstands ändert sich das simulierte Verhalten beträchtlich:

Software SimX - Einfuehrung - Elektro-Chaos - Oszillator-Signal mit R Spule.gif
  • Die Schwingungsamplitude beträgt ca. nur noch 1/10 im Vergleich zum idealen, verlustfreien Schwingkreis.
  • Die Frequenz bleibt jedoch praktisch gleich.

Diese starke Abhängigkeit vom konkreten Spulenwiderstand zeigt, dass die Schaltung noch nicht optimal dimensioniert wurde. Mit Hilfe von Simulationsexperimenten werden wir die Schaltung so dimensionieren, dass wir bis zu einem Spulenwiderstand von 2 Ω eine Signal-Amplitude von mindestens 10 V (bezogen auf den Mittenwert von 12 V) erzeugen können:

  • Sicher kann man eine exakte analytische Dimensionierung dieser Schaltung in der Literatur finden. Bei genügend Expertenwissen, kann man die erforderlichen Gleichungen auch selbst herleiten.
  • Wir wählen hier jedoch den pragmatischen Weg der "wohlüberlegten" Modifikation.
  • Die Widerstände der Schaltung sind ziemlich hochohmig. Dadurch ist die Schaltung nicht in der Lage, die Verluste in der Spule im erforderlichen Maße zu kompensieren.
  • Das kann man sehr schnell überprüfen, indem man z.B. alle Widerstände (außer RSpule) auf ein Zehntel ihres bisherigen Wertes reduziert. Der Erfolg für den bisherigen Wert RSpule=1.3 Ω ist offensichtlich:
Software SimX - Einfuehrung - Elektro-Chaos - Oszillator-Signal mit Zehntel R.gif

Es ist umständlich, durch iterative Variation aller Widerstände eine optimale Widerstandskonfiguration zu finden. Deshalb werden wir diese Experimente etwas rationalisieren, indem wir mittels eines Funktionsblockes f(x) im Modell einen globalen Faktor kR definieren. Mit diesem Faktor verändern wir dann alle Widerstände der Schaltung gleichzeitig:

Software SimX - Einfuehrung - Elektro-Chaos - Oszillator-Reduktionsfaktor kR.gif
  • Die Funktion F wurde so gewählt, dass im Zeitbereich bis tStop=1 s sich der Reduktionsfaktor von 1 auf 100 erhöht.
  • Wir setzen alle Widerstandswerte auf ihren ursprünglichen Wert zurück. Als Maßeinheit wählen wir Ohm, weil nach dem späteren Ergänzen einer Gleichung mit dem Faktor kR der Wert physikalischer Größen in der SI-Einheit berechnet wird:
Software SimX - Einfuehrung - Elektro-Chaos - Oszillator-R in Ohm.gif
  • Danach ergänzen wir für die in Ohm angegebenen Widerstandswerte den Reduktionsfaktor:
Software SimX - Einfuehrung - Elektro-Chaos - Oszillator-Rn mit kR.gif
  • Während der Simulation werden die Widerstandswerte kontinuierlich verringert und damit erhöht sich stetig die Amplitude der Signalspannung bis zu ihrem Maximalwert.
  • Bei sinnvoller Beschriftung der Y-Achse des Signalfensters braucht man sich jetzt nur noch für den kleinst möglichen Reduktionsfaktor kR entscheiden:
Software SimX - Einfuehrung - Elektro-Chaos - Oszillator-Signal mit kR.gif
  • Im Beispiel konnte mit RSpule=2 Ω (blasse, eingefrorene Kurve mit etwas geringerer Amplitude) ein fast identisches Schwingungsverhalten erzielt werden, wie mit einer idealen verlustfreien Spule. Der eingeschwungene Zustand wird nun wesentlich schneller erreicht:
Software SimX - Einfuehrung - Elektro-Chaos - Oszillator-Signal optimiert.gif

Frage 7: Welche effektive thermische Verlustleistung wird in der optimierten Schaltung am Widerstand R3 erzeugt?
Hinweise: P=u*i kann man mittels eines zusätzlichen Funktionsblockes aus den Ergebnissignalen des Widerstands R3 berechnen (R3.i*R3.v). Zeigt man diese berechnete Leistung in einem Signalfenster an, kann man als Hilfslinie den "Effektivwert" einblenden.