Können mehrere Schmitt-Trigger in Reihe einen Schalter vollständig entprellen?

8

Nachdem ich mich eine Weile mit dem Entprellen von Software befasst habe, stelle ich fest, dass dies eine enorme Belastung für das System darstellt. Daher habe ich mir überlegt, zunächst einen Hardware-Entpreller mit einem Schmitt-Trigger (74HC14), einem Kondensator, einer Taste und einem Widerstand herzustellen, wie unten von talkelectronics.com gezeigt ::

sprechende Elektronikschaltung

Ich habe jedoch gelesen, dass der Schmitt-Trigger bei der Bestimmung, wann ein High oder Low ausgegeben werden soll, halb so unangenehm ist wie ein normaler Wechselrichter, da er bei der 33% - und 66% -Marke umschaltet, während ein normaler Wechselrichter näher an die 50% -Marke schaltet (aber mit der HC-Version ist es wahrscheinlich mehr bei 55%).

Ich habe mich gefragt, ob der Schmitt-Trigger aus sechs Wechselrichtern in einem Gehäuse besteht. Mit jeder Taste meiner Wahl, die auf den ersten Eingang angewendet wird, würde sich die Entprellung erheblich verbessern, wenn ich sechs Schaltkreise auf der rechten Seite mit denselben Komponentenwerten herstellen und alle anschließen würde von ihnen in Serie? (Beispiel: Ausgang der ersten Schaltung an den Eingang der zweiten Schaltung, wo sich Kondensator und Widerstand treffen.)

Mike
quelle
3
"Weil es den Status bei der 33% - und 66% -Marke wechselt" , ist das nicht der springende Punkt bei der Verwendung eines Schmitt-Triggers? ... Damit es in der Mitte ein Fenster gibt, in dem es nicht wechselt und somit entprellt?
Bort
5
Wie belastet das Entprellen das System? Das Deboundieren von Software kann so einfach sein, dass zwischen dem Lesen der Tasten ein Intervall von 50 ms eingehalten wird.
Wouter van Ooijen
2
@Mike Vielleicht hast du ein Missverständnis über Schmitt-Trigger? Ist Ihnen bewusst, dass sie eine Hysterese haben und dass sich die asymmetrischen Schaltpunkte "überlappen": Es gibt kein Mittelband, in dem das Signal undefiniert ist.
Pipe
4
Ihr Problem hat damit überhaupt nichts zu tun - Ihr Problem ist, dass Sie nicht wissen, wie man Software-Debouncing auf eine Weise schreibt, die nicht äußerst ineffizient ist. Ich empfehle dringend, eine weitere Frage im Codeüberprüfungsforum zu stellen, um zu fragen, was Sie in Ihrer Software falsch gemacht haben, da selbst der billigste 8-Bit-Prozessor eine Reihe von Eingaben entprellen kann, ohne ins Schwitzen zu geraten.
Graham
2
@Mike Wenn Sie nicht Tausende von Ereignissen pro Sekunde haben, die Sie entprellen müssen, sehe ich nicht, wie dies messbare Auswirkungen auf die Laufzeit haben könnte.
Dmitry Grigoryev

Antworten:

12

Die Verwendung von Schmitt-Triggern in Reihe würde die Sprungkraft nicht weiter reduzieren.

Betrachten Sie den Filter:

Schmitt-Trigger-Wellenformvergleich

Die Eingabe ist (U). Die rote Linie ist eine 50% -Schwelle, deren Ausgang als Signal (A) angesehen wird. Es springt jedes Mal, wenn sich die Eingabe kreuzt.

Die grünen Linien sind ungefähr 33% und 66%, wie Sie angegeben hatten. Der Ausgang (B) schaltet jedoch nur, wenn der Eingang (U) von einer grünen Schwelle zur anderen wechselt.

Am wichtigsten ist, dass der Ausgang entweder vollständig HIGH oder LOW (digital) ist. Wenn also der Ausgang eines Schmitt-Triggers in den Eingang eines anderen eingespeist wurde, gab es im Wesentlichen keinen Unterschied.

Nehmen Sie die gefilterte Ausgabe von oben (B) und überlegen Sie, wie sie von einem anderen Schmitt-Trigger gesehen werden würde:

Schmitt-Trigger in Reihe mit einem anderen

Wiederum wäre der Ausgang des ersten entweder HIGH oder LOW. Es würde also gleichzeitig die Schwellenwerte überschreiten, was zu derselben Ausgabe wie die Eingabe führen würde. Es gibt nichts zu entprellen! Wenn überhaupt, würde ich erwarten, dass es mehr Rauschen erzeugt, weil Sie mehr Komponenten und damit mehr Raum für Fehler einführen.

Es klingt so, als ob Sie nach einem Schmitt-Trigger mit einstellbaren Schwellenwerten suchen. Einige sind symmetrisch (zum Beispiel: 33% und 66% oder 10% und 90%). Andere sind nicht symmetrisch (zum Beispiel: 33% und 80%). Sie können Ihre eigenen mit einem Operationsverstärker erstellen.

Versuchen Sie, mit dieser Simulation herumzuspielen, die ich vor einiger Zeit zusammengestellt habe: Schmitt-Triggersimulation - Nicht invertierend, nicht symmetrisch

Schmitt-Triggersimulation - nicht invertierend, nicht symmetrisch

Bort
quelle
In Anbetracht der Tatsache, dass ich eine Leiterplatte herstellen werde, erleichtert das gleichzeitige Binden von zwei Wechselrichtern die Erstellung der Leiterplatte erheblich. Wie viel mehr Rauschen werde ich erwarten, wenn ich zwei dieser Wechselrichter in Reihe schalte?
Mike
Für diesen Aufbau wäre das "Rauschen" wahrscheinlich vernachlässigbar. Es kann eine Mikrosekunde Zeitausbreitung geben. Das Spannungsrauschen wäre kein allzu großes Problem, da jeder Trigger schließlich ein Filter ist. Ich würde mir darüber keine Sorgen machen, es sei denn, die Anwendung ist stark vom Timing abhängig, aber ich vermute, es liegt nicht daran, dass es nur eine Schaltfläche ist.
Bort
15
Können mehrere Schmitt-Trigger in Reihe einen Schalter vollständig entprellen?

Ein einzelner Schmitt-Trigger mit einem analogen Filter davor kann zum Entprellen verwendet werden. Nach diesem Schmitt-Trigger ist das Signal jedoch vollständig digital. Zusätzliche Schmitt-Trigger ändern daran nichts. Im Idealfall erhalten sie das Signal.

Bei einem anderen Thema sollte das Entprellen in der Firmware keine große Belastung darstellen. Die übliche Methode besteht darin, den Schaltzustand in einem periodischen Interrupt abzutasten, den Sie ohnehin schon haben. Sie deklarieren den entprellten Zustand zum aktuellen Schaltwert, wenn Sie den Schalter für N aufeinanderfolgende Abtastwerte in diesem Zustand gesehen haben. Normalerweise muss sich der Switch für 50 aufeinanderfolgende 1-ms-Interrupts im gleichen Zustand befinden, damit der neue Zustand als gültig angesehen wird. Dies nimmt normalerweise einen sehr kleinen Teil der gesamten Prozessorzyklen in Anspruch.

Olin Lathrop
quelle