LTspice Schmitt-Trigger LM741, Fragen zu Diagrammen

#7630141
Lesenswert?

Hallo zusammen,

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.

VG seyd

#7630198
Lesenswert?

Josef E. schrieb:

Michael B. schrieb:

Merkwürdig, hast du irgendwie am timestep rumgespielt ?

Das sagt mir nichts. Bewusst habe ich da nichts verändert.

Achso, wir sehen nicht den timestep sondern den Parameterstep

Aber deine Schaltung ist bistabil, hat keinen eindeutigen Arbeitspunkt.

Lass eine .TRAN laufen, in der eine weitere Spannungsquelle den Widerstandswert des LDR über die Zeit ändert

https://electronics.stackexchange.com/questions/3623/ltspice-vary-a-resistors-value-over-time

und protokollieere des Ergebnis der Ausgangsspannung über die Zeit.

#7630207
Lesenswert?

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.

#7630228
Lesenswert?

Bernhard schrieb:

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.

#7630258
Lesenswert?

Anbei 2 Umsetzungsalternativen in LTspiceXVII

R_ldr variiere ich hier jeweils von 5k ... 105k.

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.

Viele Grüße

Igel1

#7630288
Lesenswert?

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.

Bernhard

#7630303
Lesenswert?

Andreas S. schrieb:

Anbei 2 Umsetzungsalternativen in LTspiceXVII

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:

  1. Ich weiß immer noch nicht, warum meine Lösung so merkwürdige Ergebnisse liefert.
  2. 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.

VG seyd

#7630306
Lesenswert?

Bernhard schrieb:

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.

Angehängte Dateien:
#7630346
Lesenswert?

Rainer W. schrieb:

Ä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?

#7630362
Lesenswert?

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.

Bernhard

#7630371
Lesenswert?

Josef E. schrieb:

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.

Das ist hier sogar korrekt modelliert.

Bernhard

#7630575
Lesenswert?

@bernhard_123:

Ich habe eine Frage zu Deiner LTspice Lösung in Beitrag "Re: LTspice Schmitt-Trigger LM741, Fragen zu Diagrammen" :

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?

Du hast also in Wirklichkeit eine funktionsgesteuerte Spannungsquelle dort eingebaut, oder? (vgl. z.B. hier: https://ltwiki.org/?title=B_sources_%28complete_reference%29)

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?

Viele Grüße

Igel1

#7630729
Lesenswert?

Andreas S. schrieb:

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?

Ja.

Du hast also in Wirklichkeit eine funktionsgesteuerte Spannungsquelle dort eingebaut, oder? (vgl. z.B. hier: https://ltwiki.org/?title=B_sources_%28complete_reference%29)

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.

#7630787
Lesenswert?

Bernhard schrieb:

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!

Viele Grüße

Igel1

#7630793
Lesenswert?

Josef E. schrieb:

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.

#7630800
Lesenswert?

Bernhard schrieb:

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.

#7630879
Lesenswert?

John B. schrieb:

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.

Bernhard

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren