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

Nachdem ich mich eine Weile mit Software-Entprellung beschäftigt habe, finde ich, dass es eine enorme Belastung für das System darstellt, also dachte ich daran, zunächst einen Hardware-Entpreller mit einem Schmitt-Trigger (74HC14), einem Kondensator, einem Knopf und einem Widerstand zu bauen, wie unten von talkelectronics.com gezeigt :

sprechender elektronischer Schaltkreis

Aber ich habe gelesen, dass der Schmitt-Trigger halb so unangenehm ist wie ein normaler Wechselrichter, wenn er bestimmt, wann ein High oder Low ausgegeben werden soll, weil er den Zustand bei der 33%- und 66%-Marke wechselt, während ein normaler Wechselrichter näher an der 50%-Marke schalten würde (aber bei der HC-Version sind es wohl eher 55%).

Ich habe mich gefragt, da der Schmitt-Trigger aus sechs Invertern in einem Gehäuse besteht und sich das Entprellen mit einer beliebigen Taste meiner Wahl, die auf den ersten Eingang angewendet wird, erheblich verbessern würde, wenn ich sechs der Schaltung auf der rechten Seite mit denselben Komponentenwerten herstellen und alle anschließen würde davon in Serie? (Beispiel: Ausgang der ersten Schaltung zum Eingang der zweiten Schaltung, wo sich Kondensator und Widerstand treffen.)

"Weil es den Zustand bei 33% und 66% 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?
stimmt, aber würde ein wirklich billiger Knopf diesen Punkt nicht durchbrechen?
Wie belastet das Entprellen das System? Das Software-Debounding kann so einfach sein wie das Einhalten eines Intervalls von 50 ms zwischen dem Lesen der Schaltflächen.
@Mike Vielleicht haben Sie ein Missverständnis über Schmitt-Trigger? Ist Ihnen bewusst, dass sie eine Hysterese haben und dass sich die asymmetrischen Schaltpunkte „überlappen“: Es gibt kein Mittenband, in dem das Signal undefiniert ist.
Ihr Problem hat überhaupt nichts damit zu tun - Ihr Problem ist, dass Sie nicht wissen, wie man Software-Entprellung auf eine Weise schreibt, die nicht sehr ineffizient ist. Ich empfehle dringend, eine weitere Frage im Code-Review-Forum zu stellen, um zu fragen, was Sie in Ihrer Software falsch gemacht haben, denn selbst der billigste 8-Bit-Prozessor kann eine Reihe von Eingaben entprellen, ohne ins Schwitzen zu geraten.
Das liegt daran, dass meine Software anderen Code enthält, der auf Timing und Speicher angewiesen ist, und ich weiß, weil ich einen Entpreller für 3 Tasten gemacht habe, aber heute habe ich es mit viel mehr zu tun. Ein Chip kann nur so viel Verarbeitung auf einmal verarbeiten.
@Mike Wenn Sie nicht Tausende von Ereignissen pro Sekunde entprellen müssen, sehe ich nicht, wie dies messbare Auswirkungen auf die Laufzeit haben könnte.
Ich denke, @Graham hat den letzten relevanten Kommentar zu den Ineffizienzen gepostet. Es ist kein gutes Thema, um es im Kommentarbereich zu diskutieren, es könnte als tatsächliche Frage gepostet werden, wenn es wichtig ist.
@Mike Wie Pipe sagt, können wir hier nicht viel in Kommentaren behandeln, ohne vom Thema abzuweichen, so viel besser als eine separate Frage. Nur als kurze Hinweise, Sie möchten höchstwahrscheinlich über mehrere Tasks / Interrupts mit unterschiedlichen Prioritäten nachdenken, damit Dinge mit hoher Priorität Ihrer Eingangsentprellung mit niedriger Priorität zuvorkommen können. Vielleicht auch unterschiedliche Scheduling-Raten (Ihre Schaltflächen müssen nicht schneller als 10 ms gelesen werden), oder wenn Sie eine einzelne Timer-Aufgabe behalten möchten, lesen Sie jeweils nur eine Eingabe und durchlaufen Sie sie. Viele Optionen, aber Sie benötigen weitere Informationen (daher eine neue Frage!), um sie an Ihr Design anzupassen.

Antworten (2)

Die Verwendung von Schmitt-Triggern in Reihe würde den Rückprall nicht weiter reduzieren.

Betrachten Sie den Filter:

Schmitt-Trigger-Wellenformvergleich

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

Die grünen Linien sind ungefähr 33 % und 66 %, wie Sie gesagt haben. Aber der Ausgang (B) schaltet nur, wenn der Eingang (U) von einer grünen Schwelle zur anderen geht.

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 würde, gäbe es im Wesentlichen keinen Unterschied.

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

Schmitt-Trigger in Reihe mit einem anderen

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

Es hört sich so an, 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-Trigger-Simulation - Non-Inverting Non-Symmetric

Schmitt-Trigger-Simulation – nicht invertierend, nicht symmetrisch

In Anbetracht der Tatsache, dass ich eine Leiterplatte herstellen werde, ist es manchmal viel einfacher, die Leiterplatte zu erstellen, wenn zwei Wechselrichter in Reihe geschaltet werden. Wie viel mehr Rauschen erwarte ich, wenn ich zwei dieser Wechselrichter in Reihe schalte?
Für dieses Setup wäre das "Rauschen" wahrscheinlich vernachlässigbar. Es kann eine Mikrosekunde der 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, das liegt nicht daran, dass es nur eine Schaltfläche ist.
Können mehrere Schmitt-Trigger in Reihe einen Schalter vollständig entprellen?

Zur Entprellung kann ein einzelner Schmitt-Trigger mit vorgeschaltetem Analogfilter verwendet werden. Nach diesem Schmitt-Trigger ist das Signal jedoch vollständig digital. Daran ändern auch zusätzliche Schmitt-Trigger nichts. Idealerweise bewahren sie das Signal.

In einem separaten Thema sollte das Entprellen in der Firmware keine große Last darstellen. Der übliche Weg besteht darin, den Schalterzustand in einem periodischen Interrupt abzutasten, den Sie sowieso bereits haben. Sie erklären den entprellten Zustand zum aktuellen Schalterwert, wenn Sie den Schalter in diesem Zustand für N aufeinanderfolgende Samples gesehen haben. Normalerweise muss der Schalter 50 aufeinanderfolgende 1-ms-Interrupts im selben Zustand sein, damit der neue Zustand als gültig angesehen wird. Dies nimmt normalerweise einen sehr kleinen Bruchteil der gesamten Prozessorzyklen in Anspruch.