ich befasse mich erst seit Kurzem mit LTspice. Die Schaltung soll als Vorbereitung für einen Dämmerungsschalter dienen. Den LDR habe ich mittels einer step-Direktive dargestellt. Das LTspice-Modell für den LM741 habe ich im Internet gefunden.
Bei der Simulation habe ich Diagramme erzeugen lassen: U = f(R(LDR)). Dabei frage ich mich, warum beim LM741 sehr "unsaubere" Schaltschwellen auftreten. Ich habe den LM741 durch einen UniversalOpAmp2 ersetzt. Dann sind die Schaltschwellen "sauberer", aber immer noch nicht so, wie ich es vermuten würde.
Vielleicht kann jemand meine Versuchsergebnisse einordnen und kommentieren.
Timestep gibt es nur in der .tran-Analyse, hier nicht.
Abgesehen vom parameter-Stepping und der .op-Analyse, die ich hier nicht für sinnvoll halte:
Im Rückkoppel-Zweig gehen 11 kOhm an Ua. Das ist niederohmiger als R4 oder der LDR. Die Schaltung wird irgendwo hängen bleiben.
R1 und R2 müssen viel größer als {LDR} sein, sonst hat {LDR} kaum Einfluss auf die Spannung an Ue.
Z. B. R1 = 100k und R2=1Meg
Ich würde R5 als steuerbare Quelle (Bi oder Bv) modellieren, dann kann man den Widerstandswert stufenlos ändern, und dazu eine eine .DC-Analyse machen.
Noch schöner, aber etwas aufwändiger ist eine .tran-Analyse (Analyse über der Zeit).
Dabei kann man für die steuerbare Quelle (LDR) beliebige Kurven generieren, z. B. in einem Simulationslauf beide Richtungen (5k -> 120k -> 5k) durchfahren und gleich die Hysterese sehen.
Im Rückkoppel-Zweig gehen 11 kOhm an Ua. Das ist niederohmiger als R4
oder der LDR. Die Schaltung wird irgendwo hängen bleiben.
R1 und R2 müssen viel größer als {LDR} sein, sonst hat {LDR} kaum
Einfluss auf die Spannung an Ue.
Z. B. R1 = 100k und R2=1Meg
Ich habe geändert: R1 = 10Meg und R2=100Meg
Trotzdem bleibt Im Bereich der Umschaltung ein Bereich, den ich nicht verstehe und nicht erklären kann.
Die 2. Alternative hat den Vorteil, dass Du quasi beliebige Widerstandsverläufe simulieren kannst (hier: 5k -> 105k -> 5k)
und somit schön die Hysterese beobachten kannst.
Stimmt, LTspice rechnet Widerstände intern als B-Elemente, deshalb kann man dort als Wert direkt die Gleichung R=... eingeben. (Sieht schöner aus als meine Version)
Ich hab das gestern mit einer Bi-Quelle gemacht, konnte das aber nicht mehr posten, siehe Anlage.
Im Diagramm habe ich dann Ua über dem Widerstand des LDR (bei meiner Schaltung die Steuerspannung) anzeigen lassen, damit man die Hysteresekurve mit den Kipp-Punkten sieht.
Vielen Dank für die zwei wirklich schönen Lösungen. Mir gefällt auch der "saubere" Schaltungsaufbau. Da kann ich als LTspice-Anfänger viel lernen.
Zwei Sachen stören mich:
Ich weiß immer noch nicht, warum meine Lösung so merkwürdige Ergebnisse liefert.
Vom perfektionistischen Standpunkt aus müsste auf der Abszisse die Lichtstärke abgetragen werden, da der variable Teil in der Schaltung der LDR ist. Dieser "richtigen" Lösung am nächsten kommt meine Lösung, da dort auf der x-Achse der sich ändernder Widerstand des LDR abgetragen ist.
Im Diagramm habe ich dann Ua über dem Widerstand des LDR (bei meiner
Schaltung die Steuerspannung) anzeigen lassen, damit man die
Hysteresekurve mit den Kipp-Punkten sieht.
Wenn man sich Ue anzeigen lässt, sieht man, dass die Belastung des Spannungsteilers am Umschaltpunkt immer noch als Spannungssprung von über 0.5V rückwirkt.
Die Schaltung hat ja immer noch ZWEI Arbeitspunkte.
Ich muss gestehen, dass ich beide Einwände nicht verstehe. Daher wäre ich für eine genauere Erklärung dankbar. Es würde mich auch interessieren, wie Abhilfe zu schaffen ist.
Ich weiß immer noch nicht, warum meine Lösung so merkwürdige
Ergebnisse liefert.
Neben der Rückwirkung des Schmitt-Triggers auf den Spannungsteiler, spuckt dir der Eingangsstrom des 741 ganz kräftig in die Suppe. Ändere mal R6 und guck dir den Eingangsstrom am '+'-Input an.
Ändere
mal R6 und guck dir den Eingangsstrom am '+'-Input an.
Das habe ich gemacht und erhalte beiliegendes Ergebnis. Nach dem Umschalten bleibt der Strom am +-Eingang konstant bei Null. Kann das an dem LTspice-Modell liegen, das ich für den LM741 verwendet habe?
Die Schaltung hat eine Hysterese. Die Spannung am nichtinvertierenden Eingang hängt ab von der Spannung am Ausgang.
Im Bereich zwischen den beiden Schaltpunkten (R5 = 40...63 kΩ) gibt es zwei stabile Zustände (Arbeitspunkte). Je nach Vorzustand ist der Ausgang an der oberen oder an der unteren Stellgrenze.
Wenn R5 über eine .step-Anweisung geändert wird, wird die Simulation für jeden Schritt neu gestartet. Dabei ist der Vorzustand nicht bekannt.
Die Anweisung .op führt dann zu einem der beiden stabilen Arbeitspunkte. Welcher das ist, kann ich nicht vorhersagen.
Dass die Ausgangsspannung auf die Spannung am LDR zurück wirkt, kann man rausrechnen. Entweder durch Simulation oder Stern-Dreieck-Umwandlung. Das stört also nicht.
Der Eingangsstrom des LM741 würde mich auch nicht stören. Wichtig ist, dass der Strom im Schaltpunkt, d. h. wenn beide Eingangsspannungen gleich sind, klein ist und den Schaltpunkt deshalb nicht wesentlich beeinflusst. Nach dem Kippen darf der Eingangsstrom groß werden, dann hat er auf das Ausgangssignal keinen Einfluss mehr.
Nach dem
Umschalten bleibt der Strom am +-Eingang konstant bei Null. Kann das an
dem LTspice-Modell liegen, das ich für den LM741 verwendet habe?
Deine Bilddateien kann ich nicht ausreichend lesen.
Wenn die Spannung an einem der beiden Eingänge größer wird als am anderen, übernimmt der mit er höheren Spannung den gesamten Eingangsstrom. Dessen Strom steigt also und der Eingangsstrom des anderen Eingangs sinkt auf Null.
Dort verwendest Du mit dem Bauteil B_LDR eine "Arbitrary behavioral current source" - also eine Stromquelle, die Du beliebig über Funktionen steuern kannst.
So weit, so gut. Was ich nun absolut nicht verstehe ist die Funktion, die Du darin verwendest, nämlich:
[source]
V=I(B_LDR)*V(R_LDR)
[/source]
"V=" bedeutet doch eigentlich, dass Du eine "Arbitrary behavioral voltage source" aus der "Arbitrary behavioral current source" machst, oder?
Warum hast Du dann nicht das entsprechende Symbol für die Arbitrary behavioral voltage source ausgewählt?
Und weiterhin (das ist meine eigentliche Frage): wie kannst Du im Funktionsteil dieser Spannungsquelle den Strom I(B_LDR) nutzen, wenn der doch eigentlich gar nicht bekannt ist.
Und der Innenwiderstand dieser Quelle, der ja den Strom bestimmen würde, der wird ja auch nirgendwo festgelegt - oder habe ich da irgendwo etwas übersehen?
Es funktioniert ja alles offensichtlich - ich kapier nur nicht so ganz warum ...
Oder schreibst Du einfach diese Gleichung mit 2 Unbekannten hin und überlässt LTspice den Job, I(B_LDR) und V so zu berechnen, dass alles im Verbund mit dem Rest der Schaltung passt? Das wäre ja super raffiniert! Wo hast Du diesen Trick her?
Dort verwendest Du mit dem Bauteil B_LDR eine "Arbitrary behavioral
current source" - also eine Stromquelle, die Du beliebig über Funktionen
steuern kannst.
So weit, so gut. Was ich nun absolut nicht verstehe ist die Funktion,
die Du darin verwendest, nämlich:
[source]
V=I(B_LDR)*V(R_LDR)
[/source]
"V=" bedeutet doch eigentlich, dass Du eine "Arbitrary behavioral
voltage source" aus der "Arbitrary behavioral current source" machst,
oder?
Warum hast Du dann nicht das entsprechende Symbol für die Arbitrary
behavioral voltage source ausgewählt?
Hoppla, das sehe ich eben erst: Ich hatte zuerst eine Bi-Quelle und als Formel I=U/R eingegeben. Aber dazu muss man für U die Spannungen an den zwei Knoten (Anschlüssen) an der Quelle angeben, das ist mehr Aufwand als den einen Strom durch die B-Quelle. Außerdem führt I=U/R zu Problemen, wenn R=0 vorkommt.
Dann habe ich die Formel geändert auf U=I*R, aber vergessen, das Symbol zu ändern von Bi auf Bv. Für die Funktion ist das Symbol egal.
Und weiterhin (das ist meine eigentliche Frage): wie kannst Du im
Funktionsteil dieser Spannungsquelle den Strom I(B_LDR) nutzen, wenn der
doch eigentlich gar nicht bekannt ist.
Doch, die B-Quelle kennt den Strom, der durch sie fließt.
Du nutzt eigentlich die gleiche Eigenschaft, nämlich eine Br-Quelle und ein Widerstandssymbol.
Und der Innenwiderstand dieser Quelle, der ja den Strom bestimmen würde,
der wird ja auch nirgendwo festgelegt - oder habe ich da irgendwo etwas
übersehen?
Das habe ich versucht im Schaltbild zu beschreiben:
Spannung am Widerstand: U = I * R
I <- I(B_LDR)
R <- V(R_LDR)
-> Der Widerstand von B_LDR entspricht genau der Spannung am Knoten R_LDR.
Statt dem Widerstand "R" gebe ich an dessen Stelle eine Spannung "V(R_LDR)" ein. LTspice ist die physikalische Einheit egal, es rechnet nur mit den Zahlenwerten. 1 kV entspricht 1 kOhm.
...
Oder schreibst Du einfach diese Gleichung mit 2 Unbekannten hin und
überlässt LTspice den Job, I(B_LDR) und V so zu berechnen, dass alles im
Verbund mit dem Rest der Schaltung passt? Das wäre ja super raffiniert!
Wo hast Du diesen Trick her?
Das ist eigentlich der Kern der konvergierenden Matrixlösung bei SPICE. In mehreren Schritten wird I(B_LDR) variiert, bis die Gleichung erfüllt ist, d. h. bis die Abweichung kleiner ist, als in den Parametern Reltol usw. vorgegeben ist.
Statt dem Widerstand "R" gebe ich an dessen Stelle eine Spannung
"V(R_LDR)" ein. LTspice ist die physikalische Einheit egal, es rechnet
nur mit den Zahlenwerten. 1 kV entspricht 1 kOhm.
Das habe ich verstanden und hatte diesen "Trick" ja auch bereits in meiner 2. Schaltungsalternative verwendet.
...
Oder schreibst Du einfach diese Gleichung mit 2 Unbekannten hin und
überlässt LTspice den Job, I(B_LDR) und V so zu berechnen, dass alles im
Verbund mit dem Rest der Schaltung passt? Das wäre ja super raffiniert!
Wo hast Du diesen Trick her?
Das ist eigentlich der Kern der konvergierenden Matrixlösung bei SPICE.
In mehreren Schritten wird I(B_LDR) variiert, bis die Gleichung erfüllt
ist, d. h. bis die Abweichung kleiner ist, als in den Parametern Reltol
usw. vorgegeben ist.
Ah - interessant.
Ich war bislang immer nur "dummer" User von LTspice, ohne mir wirklich viel Gedanken über die hinterliegende Funktionsweise des Programms gemacht zu haben. Deine Erläuterung hat mir jetzt gerade sehr geholfen, Dein (äußerst raffinierte) Konstrukt zu verstehen - danke dafür!
Vom perfektionistischen Standpunkt aus müsste auf der Abszisse die
Lichtstärke abgetragen werden, da der variable Teil in der Schaltung der
LDR ist. Dieser "richtigen" Lösung am nächsten kommt meine Lösung, da
dort auf der x-Achse der sich ändernder Widerstand des LDR abgetragen
ist.
Wenn ich nichts übersehen habe, wurde dieser Punkt noch nicht beantwortet. In der Transienten Analyse kannst du den default Inhalt der Abszisse: time, durch einen anderen Ausdruck ersetzen, der die Lichtstärke repräsentiert. Rechtsklick auf die Abszisse.
Statt dem Widerstand "R" gebe ich an dessen Stelle eine Spannung
"V(R_LDR)" ein. LTspice ist die physikalische Einheit egal, es rechnet
nur mit den Zahlenwerten. 1 kV entspricht 1 kOhm.
Es ist zwar verständlich, was mit KV dort gemeint war, aber es geht auch etwas hübscher:
V(R_LDR)/1A an dieser Stelle führt zur Anzeige von Widerstandswerten in Ohm.
OK mein voriger Post war überflüssig, denn gerade dieses Teilthema behandelt die Alternativen zu time auf der Abszisse, das hatte ich übersehen.
In der Transienten Analyse kannst du den default Inhalt der
Abszisse: time, durch einen anderen Ausdruck ersetzen, der die
Lichtstärke repräsentiert. Rechtsklick auf die Abszisse.
Man kann auch ein Modell für den LDR erstellen. Eingang: Beleuchtungsstärke, Ausgang: Widerstandswert.
Dann kann man auch nicht-proportionale Zusammenhänge darstellen oder das verzögerte Ansteigen des Widerstandswerts.
V(R_LDR)/1A an dieser Stelle führt zur Anzeige von Widerstandswerten in Ohm.
Stimmt. Das geht so schnell, hätte ich gleich machen können.