Forum: Mikrocontroller und Digitale Elektronik Schalterzustand abfragen und halten


von Marcel R. (eidgenosse)


Lesenswert?

Hallo

Ich möchte einen Umschaltsockel für 1 Eprom machen, also Pin 14 für 
jeweils eine Datei auf hi/low setzen. Das ist mir soweit klar.

Ich möchte das aber so schalten, dass es während dem Betrieb nicht 
umgestellt werden kann.

Also bei anlegen der Versorgungsspannung muss zuerst der Status des 
Tasters abgefragt werden, dieser Wert soll gespeichert werden bis die 
Versorgungsspannung wieder abfällt.

Ich habe es nun mit Softwaresimulation und Flipflops versucht, leider 
habe ich immer das Problem dass es meistens einmal geschaltet werden 
kann.

Wie reagiert ein Flipflop bei Stromausfall? bleibt es auf dem verherigen 
Wert, oder fällt es immer auf 0?


Irgendwie muss das doch mit Logikgattern oder Flipflops machbar sein?
Kann mir jemand sagen, welche Bauteile sich hierfür eignen? Ich weiss 
gar nicht mehr wonach ich da noch suchen soll...

Gruss Marcel

von Peter D. (peda)


Lesenswert?

Z.B. ein 74HC74.
Der Taster kommt an D, das Einschaltreset (0-1 Flanke) an CP.

von OhMann (Gast)


Lesenswert?

Marcel R. schrieb:
> Status des Tasters

Es gibt rastende Taster (nennt sich auch Druckschalter). Ganz ohne SW. 
Einfacher geht es nicht.

von Wolfgang (Gast)


Angehängte Dateien:

Lesenswert?

Marcel R. schrieb:
> Wie reagiert ein Flipflop bei Stromausfall? bleibt es auf dem verherigen
> Wert, oder fällt es immer auf 0?

Im Datenblatt steht die Mindestbetriebsspannung.
Es gibt aber genug andere Speicher (z.B. EEPROM, FRAM, SRAM mit 
Stützbatterie, ...), die ohne externen Strom auskommen.

Meinst du nicht, dass ein ganz gewöhnliche Kippschalter mit 
Bediensicherung gegen unbeabsichtigtes Schalten ausreichend schützt? 
Dort wird der momentane Schaltzustand mechanisch gespeichert.

https://www.amazon.de/Heschen-Metall-Kippschalter-POLION-wasserfester/dp/B07MDB56ZP

Früher (tm) hat man Schaltzustände in der magnetischen Remanenz von 
Eisenkernen gespeicher. Das war auch gegen Stromausfall sicher.
Für deinen Zweck bräuchtest du nur einen einzigen Kern.

von wendelsberg (Gast)


Lesenswert?

Ein bistabiles Relais faellt mir dazu ein.
z.B. 
https://www.tme.eu/de/details/ds2e-sl2-dc5v/elektromagnetische-mini-relais/panasonic/

wendelsberg

von Marcel R. (eidgenosse)


Lesenswert?

Danke schon mal für die vielen Inputs,

Ich benötige ja keinen nichtflüchtigen Speicher, eigentlich soll er ja 
sogar flüchtig sein.
Sobald die Versorgungsspannung im System ausgeht, soll der eingang am 
Eprom wieder auf 0 gehen.
Deshalb auch die Frage nach dem Zustand am Ausgang des Flipflops bei 
Stromausfall.

Ich möchte mit der Schaltung verhindern, dass man das Eprom im Betrieb 
aus versehen umschalten kann, da dies wohl dem Rechner nicht gefallen 
wird..

Mit dem Schalter wäre das sehr einfach auszuführen, aber falls der 
Schalter noch auf Ein steht, ist dann beim nächsten Start wieder 
Programm 2 aktiv. Deswegen die Idee mit dem Taster.

Der Nachteil an der Lösung ist, dass ich kein Feedback habe, welches 
Programm aktiv ist..
Led wäre ne Lösung, aber ich hab nur ein Kabel zur verfügung und das 
brauche ich für den Taster/Schalter..

von Marcel R. (eidgenosse)


Lesenswert?

Ich entschuldige mich erstmal für die Pause hier, ich musste mir zuerst 
mal ein paar Teile besorgen...

Ich habe lange mit D-Flipflop experimentiert, bin aber nie auf eine 
brauchbare Lösung gekommen.

Dank dem Tipp von Peter bin ich auf das Taktflankengesteuerte D-Flipflop 
gestossen, und dann hats plötzlich gefunkt.

Hab das nun auf ein Breadboard gepinnt:

Clear, Preset und Clk zusammen fix auf VCC, ebenso D über einen 5k 
Pullup.

Wenn ich nun die Spannung anlege, geht Q auf Hi,
Wird D auf Masse gezogen, geht Q beim einschalten auf Lo.
Beide Zustände bleiben erhalten bis die Spannung wieder ausgeschaltet 
wird, egal was an D passiert, also der Taster wird ignoriert.

Das problem ist der undefinierte Zustand beim einschalten
Wie ich vermutet habe, reagiert das IC beim starten nicht jedes mal auf 
die Masse an D, manchmal nimmt es einfach wieder den alten Zustand von 
vor dem Spannungsunterbruch an, egal was an D anliegt.

Ich habe dies jetzt so geändert: Die steigende Flanke für CLK2 an 
Gatter2 zuerst durch das erste Gatter geführt, so dass es eine 
Gatterlaufzeit später an CLK2 ankommt, in dieser Zeit ist das Gatter2 
scheinbar für die Flanke bereit.

Zumindest auf dem Breadboard funktioniert es, die Frage ist, ob das auch 
so gemacht werden darf?
Gibt es andere Lösungen um das Signal an CLK zu verzögern, bis das ganze 
IC "bereit" ist?

von Thomas H. (thoho)


Lesenswert?

Ein kleines Leiterplatterelais mit dem Taster in die Selbsthaltung 
bringen.
Beim Wegnehmen der Versorgungsspannung schaltet es dann wieder zurück in 
den Grundzustand.
Gruß Thomas

von Wolfgang (Gast)


Angehängte Dateien:

Lesenswert?

Marcel R. schrieb:
> Der Nachteil an der Lösung ist, dass ich kein Feedback habe, welches
> Programm aktiv ist..
> Led wäre ne Lösung, aber ich hab nur ein Kabel zur verfügung und das
> brauche ich für den Taster/Schalter..

Das Kabel hat doch sicher 2 Adern, die du in beiden Richtungen nutzen 
kannst, oder?

von Marcel R. (eidgenosse)


Lesenswert?

Thomas H. schrieb:
> Ein kleines Leiterplatterelais mit dem Taster in die Selbsthaltung
> bringen.
> Beim Wegnehmen der Versorgungsspannung schaltet es dann wieder zurück in
> den Grundzustand.
> Gruß Thomas

Diese Lösung ist leider während der Laufzeit wenigstens ein mal 
umschaltbar, das möchte ich verhindern. Also beim einschalten der 
Spannung soll entschieden werden, ob hi oder lo, danach darf keine 
änderung mehr möglich sein.

An Wolfgang:

Ich habe nur eine Leitung zur verfügung die an Masse geschaltet wird.
Versorgungsspannung und Masse führen bereits durch den Stecker in das 
Gehäuse, da ist noch ein Pin frei, den verwende ich für die Masse in 
Verbindung mit dem Taster extern.

Dein Schaltplan bringt es auf den Punkt, was mir aber nicht ganz klar 
ist, wozu die Dioden sind.

Die LED selbst ist ja auch eine Diode, also wäre D1 doch hinfällig?

Und D2 wäre verkehrt herum, der Strom würde bei geschlossenem Taster 
nicht zu Masse fliessen..

(Masse wäre rechts im Bild)

von Helmut Hungerland (Gast)


Angehängte Dateien:

Lesenswert?

Ein RS-Flip-Flop wäre das Richtige für deinen Anwendungsfall. Beim 
Einschalten wird das Flip-Flop durch den Kondensator S (Set 470nF) in 
einen definierten Zustand gesetzt. Danach kann man es nur noch mit der 
Resettaste zu einem beliebigen Zeitpunkt einmalig zurückstellen. Weitere 
Aktionen sind dann nicht mehr möglich!

Um das RS-Flip-Flop ein weiteres mal benutzen zu können, muss das Gerät 
erst ausgeschaltet werden!

von Wolfgang (Gast)


Lesenswert?

Marcel R. schrieb:
> Dein Schaltplan bringt es auf den Punkt, was mir aber nicht ganz klar
> ist, wozu die Dioden sind.

Die Schaltung erlaubt es, bei unterschiedlicher Polung der Spannung über 
dem Leitungspaar, die Leitung für unterschiedliche Funktionen zu nutzen.
Bei der einen Polung leuchtet die Leuchtdiode, bei der anderen fließt 
der Strom durch den ggf. geschlossenen Schalter.
Wenn man z.B. alle 20ms die Spannung kurz umpolt, kann man den 
Schalterzustand ohne nennenswerte Einbuße bei der LED-Helligkeit 
abfragen. Mit diskreter Logik wird das allerdings eher mühsam. Wie kurz 
"kurz" sein darf, hängt von der Kapazität der Verkabelung und der 
Treiberleistung ab.
Wenn eine Ader fest an Masse liegt, brauchst du eine negative 
Hilfsspannung, evtl. über Potentialverschiebung mit einem Kondensator.

> Die LED selbst ist ja auch eine Diode, also wäre D1 doch hinfällig?
D1 ist nur notwendig, wenn zum Abfragen des Schalters mehr als 5V 
verwendet werden - das ist richtig.

von Peter D. (peda)


Lesenswert?

Marcel R. schrieb:
> Clear, Preset und Clk zusammen fix auf VCC, ebenso D über einen 5k
> Pullup.

Ne, das geht so nicht. CLK muß etwas verzögert werden, z.B. über ein 
RC-Glied.

von Marcel R. (eidgenosse)


Angehängte Dateien:

Lesenswert?

Ich habe die Schaltung nun mal gezeichnet:

CLK habe ich mit einem RC-Glied erweitert, sollte knapp eine Sekunde 
Verzögerung haben.

CLK2 kann ich mit CLK1 verbinden, damit es auch einen definierten Pegel 
hat.
Bei R3 bin ich mir nicht ganz sicher, aber der ist wahrscheinlich gar 
nicht nötig, da die Leitung Q schon Hi oder Lo ist, korrekt?

Die Möglichkeit, im Taster über die gleiche Leitung eine LED zu 
betreiben, die den Zustand von Q/Qneg anzeigt, wäre natürlich toll, 
übersteigt aber grad meine doch eher bescheidenen Kenntnisse. :-)

: Bearbeitet durch User
von HildeK (Gast)


Lesenswert?

RC-Glieder an Takteingängen sind böse!
Zumindest solange sie für eine Anstiegszeit von deutlich mehr als 100ns 
sorgen.

von Marcel R. (eidgenosse)


Lesenswert?

HildeK schrieb:
> RC-Glieder an Takteingängen sind böse!
> Zumindest solange sie für eine Anstiegszeit von deutlich mehr als 100ns
> sorgen.

daran habe ich nicht gedacht, Danke für den Hinweis.

ich hab die Wahrheitstabelle nochmals angeschaut:
Wenn einer von Pre oder Clr auf Masse gezogen wird, dann ist es egal was 
an Data und Clk anliegt, der Ausgang Q geht immer auf Hi.

Könnte ich dann das erste Gatter so beschalten, und mit Q dann am 
anderen Gatter den Clk Eingang schalten? Ich hätte dann eine 
Gatterlaufzeit Verzögerung am Clk und das erste Gatter wäre unabhängig 
von einem Taktsignal.

von Peter D. (peda)


Lesenswert?

HildeK schrieb:
> RC-Glieder an Takteingängen sind böse!

Für diese Anwendung sollte das keine Rolle spielen, da ja nicht gezählt 
werden muß.

Die 74HC74 von Nexperia haben Schmitt-Trigger:
"Schmitt-trigger action in the clockinput, makes the circuit highly 
tolerant to slower clock rise and fall times."

https://assets.nexperia.com/documents/data-sheet/74HC_HCT74.pdf

von MaWin (Gast)


Lesenswert?

Marcel R. schrieb:
> Wie reagiert ein Flipflop bei Stromausfall? bleibt es auf dem verherigen
> Wert, oder fällt es immer auf 0?

Nein, natürlich nicht, es bekommt einen zufälligen Wert.

Ausnahme wären FM1105B und ähnliche obsolete FERAMs.

Marcel R. schrieb:
> Also bei anlegen der Versorgungsspannung muss zuerst der Status des
> Tasters abgefragt werden, dieser Wert soll gespeichert werden bis die
> Versorgungsspannung wieder abfällt

Also ist es egal, wie das FF startet, wenn es den Schalterzustand 
übernimmt

Data an den Schalter, Clock (LatchEnable) an PowerOnRESET der Schaltung

von Marcel R. (eidgenosse)


Angehängte Dateien:

Lesenswert?

Ich habe nochmals ein wenig experimentiert...

Ich habe das RC Glied wieder weggenommen und stattdessen das erste 
Gatter so bedrahtet dass Q immer auf Hi geht und mit diesem Signal dann 
den Clk-Eingang vom zweiten Gatter geschaltet.
Pulldown an clk damit vor dem Hi Signal ein fester Pegel anliegt.

Damit habe ich eine Gatterlaufzeit verzögerung an Gatter2 (steigende 
Flanke an CLK) und am Gatter1 sind alle Eingänge logisch klar definiert.

Der Taster unten im Bild ist ein vorhandener Taster mit integrierter 
LED.


Bei einschalten von VCC geht Q1 auf Hi und schaltet Gatter2 mit Q2 auf 
Hi weil Data2 Hi ist.

jeder Tastendruck wird jetzt ignoriert.

Bei einschalten von VCC während die Taste gedrückt wird, geht wieder Q1 
auf Hi und schaltet Gatter2 mit Q2 auf Lo, weil an Data2 Lo anliegt.
Wird nun der Taster losgelassen, fliesst von Q2neg, das jetzt Hi ist ein 
Strom über den Schalter zu Masse, die Led leuchtet. Diode1 verhindert, 
dass der Strom von Q2neg zu Data2 fliesst.
ebenso wird jeder weitere Tastendruck ignoriert da clk2 fix auf hi 
steht.

Und die Schaltung funktioniert tatsächlich:-)

Ein Nachteil habe ich festgestellt: Wenn Vcc ausgeschaltet wird, muss 
ich ca 4s warten mit einschalten, da sonst der alte Zustand noch 
gespeichert ist. Kann man das irgendwie verhindern, bzw das IC schneller 
entladen?

Sind die Bauteile, insbesondere die Pullup/downs sowie die Dioden 
richtig dimensioniert?

C an Vcc habe ich so im Datenblatt gesehen:
"Each VCC terminal should have a good bypass capacitor to prevent
power disturbance"
gilt das nur für Pin 14 also Vcc Eingang, oder für alle Pins an denen 
Vcc anliegt?

Während der Taster gedrückt wird, und das Gattter 2 umschaltet, dann 
fliesst von Q2neg das High-Signal über den Taster direkt auf Masse, soll 
ich hier an Diode2 noch einen kleinen Widerstand ca 220 einbauen um den 
Strom zu begrenzen? Taster wird ja grundsätzlich eh wieder losgelassen.
Datenblatt sagt max Output current 25mA, oder begrenzt die Diode2 schon 
den Strom?

von Peter D. (peda)


Lesenswert?

Marcel R. schrieb:
> Ich habe das RC Glied wieder weggenommen

Warum?
Das funktioniert doch super.
Man kann aber auch einen Reset-IC benutzen, z.B. MCP130.

http://www.farnell.com/datasheets/11603.pdf

Marcel R. schrieb:
> Damit habe ich eine Gatterlaufzeit verzögerung an Gatter2

Murks.
Bei 50Hz steigt die VCC mit ~5ms an. Da sind 14ns Gatterlaufzeit völlig 
wirkungslos.

Marcel R. schrieb:
> Ein Nachteil habe ich festgestellt: Wenn Vcc ausgeschaltet wird, muss
> ich ca 4s warten mit einschalten

Na siehste.

von Peter D. (peda)


Lesenswert?

Marcel R. schrieb:
> Während der Taster gedrückt wird, und das Gattter 2 umschaltet, dann
> fliesst von Q2neg das High-Signal über den Taster direkt auf Masse

Ganz böses Foul.

Marcel R. schrieb:
> Datenblatt sagt max Output current 25mA

Datenblatt sagt, wenn Du den Strom auf 25mA begrenzt, geht der IC 
nicht kaputt. Der IC macht das aber nicht selber.

von MaWin (Gast)


Lesenswert?

Marcel R. schrieb:
> Ich habe nochmals ein wenig experimentiert

Jetzt ist es plötzlich ein Taster statt einem Schalter,

und Pin 6 über die Diode wird durch den Taster kurzgeschlossen

Marcel R. schrieb:
> Und die Schaltung funktioniert tatsächlich:-

Nein, höchstens zufällig.

Warum Pin 9 Q als Ausgang über 47k an GND gehen soll ist auch unklar.

Die Schaltung ist grober Murks eines Ahnungslosen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.