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.
7
Antworten:
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.
quelle
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.
Alle getesteten Schalter prallten unterschiedlich ab. Einige Typen schlimmer als andere. Einige überhaupt nicht. Aber auch identische Schalter des gleichen Typs prallten unterschiedlich ab.
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:
Sowie die billigere RC-Methode:
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:
Zu einer erweiterten Version, um einen ganzen Port von Switches zu verwalten:
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.
quelle
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.
quelle