Schalter entprellen - würde den Schalter immer noch abprallen lassen

7

Ich habe die klassischen Kopfschmerzen beim Arduino. Der Schalter soll eine LED ein- und ausschalten. Wenn ich also eine Umschalttaste (SPDT) verwende, wird sie trotzdem abprallen? Vielleicht wird es nicht, da es kein Druckknopf ist. Wie viel mehr würde es kosten, Toggle zu verwenden? Es ist nur ein Projekt, das ich für mein lokales Fertigungslabor durchführen soll.

Alter ist
quelle
1
Die meisten Schalter springen ab: taktil, umschaltbar, drehbar usw. Gewöhnen Sie sich daran. Ich frage mich, ob Gummitastaturen in dieser Hinsicht besser sind. Vielleicht kann jemand das kommentieren.
Armandas
1
Ich bin mir hier nicht sicher - gibt es einen Grund, warum Sie den Switch nicht einfach in der Firmware entprellen können?
Oli Glaser
1
Was genau sind die Symptome, wenn Sie sagen, dass Sie Kopfschmerzen haben? Wenn es nur eine LED steuert, können Sie tatsächlich erkennen, dass der Schalter springt?
Raketenmagnet

Antworten:

10

Die meisten SPST-Schalter oder Drucktasten werden abprallen, da es nur zwei Zustände gibt: Kontakt geschlossen (z. B. niedriger Pegel) und Kontakt offen (hoher Pegel über einen Pull-up-Widerstand). Dies mag offensichtlich erscheinen, aber es ist das Zögern beim Öffnen / Schließen, das den Sprung verursacht; Nur einmal reicht aus, um einen Umschalter nicht zum Laufen zu bringen.

Sie können den Schalter mit einem Kondensator entprellen, aber da Sie ihn mit einem Mikrocontroller verwenden, ist es billiger, dies in Software zu tun. Normalerweise habe ich einen 32-ms-Timer (Software-Timer) für Tastatur-Scans und akzeptiere eine Statusänderung nur, wenn sie während zweier aufeinanderfolgender Scans bestehen bleibt. Das bedeutet, dass Sie eine Verzögerung von maximal 64 ms haben. Da die Taste jedoch manuell betätigt wird, werden Sie eine so kurze Verzögerung nicht bemerken.

Sie erwähnen eine SPDT-Schaltfläche, und das ist die beste Lösung, wenn Sie dies in Hardware tun möchten.

Aber ehrlich gesagt sehe ich keinen Grund, dies nicht in Software zu tun, und Sie haben bei SPST-Tasten viel mehr Auswahl als bei SPDT-Tasten.

Wenn Sie einen Knopf wollen, der kaum springt, kann ich den Alps SKQG Taktschalter empfehlen

was mit den Geräten, die ich getestet habe, einen anfänglichen Sprung von weniger als 10 ns hatte.

stevenvh
quelle
Als Faustregel gilt: Wenn Sie keinen Interrupt auslösen, ist das Entprellen der Software in Ordnung. Wenn Sie einen Interrupt auslösen, ist das Entprellen der Software manchmal in Ordnung, manchmal nicht.
Scott Seidman
Das Entprellen mit einer Kappe erfordert auch einige Überlegungen, wenn es sich zufällig um einen Pin handelt, der vom Programmierport verwendet wird, wie ich auf die harte Tour herausgefunden habe.
Scott Seidman
Mit den Tasten stelle ich einen Timer ein, der je nach Bedarf alle x ms unterbricht und automatisch wiederholt. Wenn es unterbricht, setzt es irgendwo ein bisschen. Dieses Bit wird in der Hauptschleife getestet. Wenn das Bit gesetzt ist, bedeutet dies, dass genügend Zeit vergangen ist und ich weiß, dass es Zeit ist, den Status der Schaltflächen zu erhalten, sie zu verarbeiten und das Bit zu löschen. Der Vorteil dieser Methode ist, dass der ISR nur ein bisschen setzt. Dies ist der schnellste Interrupt, den Sie machen können.
CopperMaze
10

Die Ganssle Group hat einen sehr umfassenden Bericht mit dem Titel A Guide to Debouncing verfasst . Darin nahm der Autor Jack Ganssle 18 verschiedene Schalter und drückte jeweils 300 Mal. Er zeichnete die Ergebnisse mit einem MSO-Oszilloskop auf, um das tatsächliche analoge Signal sowie die digitale Darstellung zu betrachten und zu simulieren, was ein Mikrocontroller sehen würde.

analog versus digital

Alle getesteten Schalter prallten unterschiedlich ab. Einige Typen schlimmer als andere. Einige überhaupt nicht. Aber auch identische Schalter des gleichen Typs prallten unterschiedlich ab.

Identische Schalter waren nicht besonders identisch. Zwei übereinstimmende Paare wurden getestet; Jeder Zwilling unterschied sich von seinem Bruder um den Faktor zwei.

Wenn Sie also einen Schalter verwenden möchten, ist es nur eine Tatsache des Lebens, ihn entprellen zu müssen.

Teil 2 des Handbuchs enthält zahlreiche Methoden zur Behandlung des Entprellungsproblems.

Der von stevenvh erwähnte Set-Reset (SR) -Latch wird diskutiert:

SR Debouncer

Sowie die billigere RC-Methode:

RC Debouncer

Wie in den Kommentaren und anderen Antworten erwähnt, ist es wahrscheinlich besser, wenn Sie einen Mikrocontroller haben, dies in Software zu tun. In diesem Handbuch werden auch verschiedene Algorithmen erläutert, die implementiert werden können.

Aus einem sehr einfachen ISR:

einfache ISR

Zu einer erweiterten Version, um einen ganzen Port von Switches zu verwalten:

Mehrfachschalter ISR

Lesen Sie den gesamten Bericht gut durch. Das Entprellen eines Schalters ist eine Fähigkeit, die sich lohnt und die Sie im Laufe Ihrer Karriere einsetzen werden.

embedded.kyle
quelle
haha es ist alles gut, weil ich kein Elektronikingenieur bin. Ich bin ein angehender Elektriker, der sich sehr für Elektronik interessiert, weil er in der Schule keine Chance dazu hatte. Aber Sie haben einen Punkt, obwohl ich zugeben muss.
Ageis
+1 für den Ganssle-Shout-Out! Sein Artikel über das Entprellen von Schaltern ist WIRKLICH gut.
John R. Strohm
4

Alle trockenen * mechanischen Kontaktschalter prallen ab. Die Menge variiert. Ein SPDT-Schalter wird fast immer vor dem Einschalten unterbrochen, sodass die Werte niedrig / offen / hoch sind.

Sie können SPDT-Schalter machen, bevor sie brechen, aber selbst diese können abprallen.

* In einigen Relais wird Quecksilber benetzt, um die Stromhandhabungsfähigkeit zu verbessern. Ich denke, dass diese dazu neigen, prallfrei zu sein, aber ich habe keine realen Erfahrungen mit ihnen gemacht, und sie sind selten und Quecksilberbenetzung wird in betätigten Schaltern nicht gefunden.

Software wird alles entprellen - Zeit, die benötigt wird, abhängig davon, wie gewalttätig und andauernd der Abprall ist.

Ein von Schmitt ausgelöster Eingang mit geeigneter RC-Verzögerung kann normalerweise gut entprellen. Bounce ist möglich, wenn die Verzögerung im Vergleich zu den Boune-Zeiten im ungünstigsten Fall zu kurz ist.

Russell McMahon
quelle
Ich denke, Quecksilberbenetzung wird wegen RoHS nicht mehr verwendet.
Amadeus