So verhindern Sie, dass der Rechteckwellen-Oszillatorkreis in LTSpice4 rückwärts gerichtete Sägezahnformen erzeugt

In einer verwandten Frage "Einfache, energieeffiziente Schaltung zum Blinken einer einzelnen IR-LED" werden die folgenden Schaltungen in der (aktuellen) dritten Antwort geteilt:

LED-Blinkerschaltung

Ich habe diese in LTSpiceIV eingegeben und die Ausgabe ist instabil und erzeugt manchmal eine schöne Rechteckwelle und manchmal eine Rückwärts-Sägezahn-Ramp-Down-Form.

Was ist hier wirklich los? Ich bin ein Softwareentwickler, der versucht, analoge Elektronik zu lernen, und habe mit dem Joule Thief und anderen Schwingkreisen herumgespielt und versucht, etwas über SMPS-Wandler zu lernen, und würde gerne wissen, wie man instabiles Verhalten wie dieses diagnostiziert und verhindert im Allgemeinen, aber ich möchte wirklich etwas über dieses hier im Besonderen wissen. Wenn ich ein Oszilloskop hätte, würde ich diese bauen und versuchen, damit zu spielen.

Unten ist ein Screenshot, der viele der Rückwärts-Sägezahnwellenformen zeigt, die 2N2222, 2N2907 verwenden.

LTSpice4-Schaltung mit 2N2222 und 2N2907, die viele dreieckige Formen und einige Rechteckwellen zeigt

Ich habe auch verschiedene Transistorpaare ausprobiert; 2N3904, 2N3906 und 2N4401, 2N4403 waren besser, hatten aber immer noch Probleme.

Was folgt, ist der Inhalt der LTSpice-IV *.asc-Datei, also können Sie diese in eine Textdatei einfügen und mit der Erweiterung „.asc“ benennen, und dann sollten Sie sie (auf einem PC) direkt öffnen können in LTSpice IV hoch und führen Sie die Simulation aus, um zu reproduzieren, was ich erlebe.

Version 4
SHEET 1 1584 680
WIRE 352 -64 -176 -64
WIRE 512 -64 352 -64
WIRE 352 -32 352 -64
WIRE -176 0 -176 -64
WIRE 16 64 -16 64
WIRE 240 64 80 64
WIRE 352 64 352 32
WIRE -16 112 -16 64
WIRE -16 112 -48 112
WIRE 240 112 240 64
WIRE 288 112 240 112
WIRE -16 144 -16 112
WIRE 16 144 -16 144
WIRE 240 144 240 112
WIRE 240 144 96 144
WIRE 512 144 512 -64
WIRE -176 160 -176 80
WIRE -112 160 -176 160
WIRE 240 176 240 144
WIRE 272 176 240 176
WIRE -176 240 -176 160
WIRE 32 240 -176 240
WIRE 352 240 352 160
WIRE 352 240 96 240
WIRE 352 256 352 240
WIRE 512 272 512 224
WIRE 512 272 464 272
WIRE 464 304 464 272
WIRE -48 368 -48 208
WIRE 352 368 352 336
WIRE 352 368 -48 368
WIRE 512 368 512 272
WIRE 512 368 352 368
FLAG 464 304 0
FLAG 272 176 C1
SYMBOL voltage 512 128 R0
SYMATTR InstName V1
SYMATTR Value 4
SYMBOL pnp 288 160 M180
SYMATTR InstName Q1
SYMATTR Value 2N2907
SYMBOL npn -112 112 R0
SYMATTR InstName Q2
SYMATTR Value 2N2222
SYMBOL res 112 128 R90
WINDOW 0 0 56 VBottom 2
WINDOW 3 32 56 VTop 2
SYMATTR InstName R1
SYMATTR Value 1K
SYMBOL cap 80 48 R90
WINDOW 0 0 32 VBottom 2
WINDOW 3 32 32 VTop 2
SYMATTR InstName C1
SYMATTR Value 10nF
SYMBOL cap 96 224 R90
WINDOW 0 0 32 VBottom 2
WINDOW 3 32 32 VTop 2
SYMATTR InstName C2
SYMATTR Value 10µF
SYMBOL res -192 -16 R0
SYMATTR InstName R2
SYMATTR Value 330K
SYMBOL res 336 240 R0
SYMATTR InstName R3
SYMATTR Value 22
SYMBOL LED 336 -32 R0
SYMATTR InstName D1
SYMATTR Value LXK2-PW14
SYMATTR Description Diode
SYMATTR Type diode
TEXT 8 -24 Left 2 !.tran 60s startup

Schließlich trat ich in den zweiten Schaltkreis ein, der nur der erste Schaltkreis ist, der invertiert und polaritätsgeschaltet ist, aber nicht einmal schwingt.

Ich denke, deine Schaltung könnte schuld sein. Wenn ich dies in einem anderen Simulator verwende (insbesondere dem von falstad.com/circuit), sehe ich alle ~ 1 s Impulse von über drei Ampere. weder eine Rechteckwelle noch eine Sägezahnwelle. Ich habe die Schaltung jedoch nicht manuell analysiert, um zu sehen, was das Problem damit ist.
Ähm... wo ist C1? Bearbeiten: Egal, ich habe den zusätzlichen Zweig gelöscht, der zu nichts geführt hat und sich immer noch schlecht verhält.
@SredniVashtar Stellen Sie sicher C 2 hat keinen Müll in seinem Wert und versuchen Sie, UIC und einen minimalen Zeitschritt von 100 us festzulegen.
Zum OP. Versuchen Sie es mit UIC und einem Mindestzeitschritt von 20 100 μ S auf Ihrer .TRAN-Karte. Schau mal, ob dir das hilft.
@Jonk, mit einem maximalen Zeitschritt von 50 us (.tran 0 12s 0 50u startup) bekomme ich schöne Spikes ohne Sägezahn. Die Impulse sind gleichmäßig verteilt (es gibt eine schnelle Spitze des Diodenstroms, dann einen kurzen, ähnlich rechteckigen Impuls. UIC scheint an dieser Stelle keinen Unterschied zu machen. Es scheint, dass der Zeitschritt den Trick gemacht hat. Aber ich würde das nicht als a bezeichnen "Rechteckschwingkreis". Nur ein "Blinker".
@SredniVashtar Ein astabiler Multivibrator? Versuchen Sie übrigens, den Reltol-Wert hinzuzufügen, den ich in der Antwort unten vorschlage.
@jonk eheheh, ich frage mich, was die LED heller macht: der erste Stromstoßimpuls oder der kurze Rechteckimpuls, der folgt? Vielleicht würde ein netzhautloser Roboter kaum bemerken, dass es blinkt ...
@SredniVashtar Ich sehe 8 MS Impulsbreiten, mit ca 45 mA Spitzen, getrennt durch ca 740 MS . Ich bin mir nicht sicher, wie sichtbar das sein könnte. Durch Reduzieren kann ein viel breiterer Puls erzielt werden R 2 und zunehmend C 2 .
@jonk Danke. ".options reltol=0.0000001" scheint gemäß Ihrer Antwort unten zu funktionieren. Für V1 = 6 musste ich R1 auf 2,2 K erhöhen (die gepostete Schaltung gab einen Bereich von 4-6 Volt an). Ich glaube nicht, dass ich das jemals selbst herausgefunden hätte.
@MicroservicesOnDDD Sie könnten einfach erhöhen C 1 stattdessen mit 6 v Eingang. Das Problem ist, dass Sie mit einer Erhöhung der Quellenspannung auch den LED-Strom erhöhen. Normalerweise gibt es ca 3 v Abfall von der Quellenspannung zum Kollektor von Q 1 . Mit 4 v Quelle, das ist nur 1 v über R 3 . Aber mit 6 v Quelle, das ist 3 v -- was den 3-fachen Kollektorstrom erfordert. Wenn C 1 größer ist, kann es schnell genug sinken, um den Prozess zu starten.

Antworten (1)

Wenn ich dieses Verhalten sehe, liegt es normalerweise an der Solver-Wahl, der automatischen Schrittgröße, die LTSpice als Delta-Zeit verwendet, oder an etwas, das mit der Reltol-Option zu tun hat.

Diese Schaltung ist wirklich kritisch in dem Sinne, dass es sehr kurze LED-Impulse gibt, die durch einen langen Zeitraum getrennt sind C 2 lädt auf. Daher könnte LTSpice hier fälschlicherweise einen minimalen Zeitschritt wählen, und auch dies kann sich mit den relativen Toleranzen verschlechtern.

So. Das erste, was ich normalerweise mit solchen astabilen Multivibratoren versuche, ist, das UIC-Flag in der .TRAN-Datei zu setzen, um sicherzustellen, dass es nicht versucht, stattdessen einen Ruhepunkt zu finden. Wenn das nicht ausreicht, stelle ich den minimalen Zeitschritt auf etwas schmerzhaft Kurzes ein und schaue, ob das die erforderliche Zeitauflösung erreicht. Und der letzte Trick, den ich versuche, ist, RELTOL auf einen kleinen Wert zu setzen.

(Manchmal geht es um den Solver selbst. Aber normalerweise nicht. Sie können es jedoch im Dialogfeld "Optionen" ändern.)

In diesem Fall scheint der Mindestzeitschritt die Dinge zu klären. Aber es ist sehr langsam. Es ist viel einfacher, einfach diese Spice-Linie zu Ihrem Schaltplan hinzuzufügen:

.options reltol=0.0000001

Das sollte helfen. (Aber fühlen Sie sich frei, das mit einem minimalen Zeitschritt zu kombinieren. Ich denke 100 μ S wäre auch in Ordnung, aber um sicherzugehen, würde ich gehen 20 μ S wenn ich reltol auf seinem Standardwert belasse.)

Die Toleranzoption scheint in meinem Fall keinen Unterschied zu machen, aber das liegt daran, dass die Ausgabe bereits in Ordnung war. Wie auch immer, +1 für beide Tipps.
@SredniVashtar Entfernen Sie jetzt den Mindestzeitraum. Sollte noch funktionieren, aber jetzt schneller.
In der Tat tut es das. Ich hätte aufmerksamer lesen sollen. :-)