Ich möchte den Ausgang eines Drehgebers, den ich als Schalter auf Masse verwende, mit einem Pull-up entprellen. Im Internet habe ich die Entprellschaltung in Abbildung 2 gesehen und hier darüber gelesen . Allerdings habe ich auch das erste Bild unten gesehen und hier darüber gelesen . Ist das eine besser als das andere für meine Anwendung? Laut Datenblatt hat der GPIO des von mir verwendeten imx6sl einen Schmitt-Trigger und eine Eingangshysterese, daher gehe ich davon aus, dass ein Kondensator angeschlossen ist.
Abbildung 1
Angenommen, die MCU und der Schmitt-Trigger haben einen unendlichen Eingangswiderstand und modellieren sie als offen, können wir den Schalter schließen und sehen, was passiert.
Bei geschlossenem Schalter in Abbildung 2 liegt der Widerstand R2 in Reihe mit dem Kondensator, was bedeutet, dass am Eingang 0 V DC anliegen.
Im ersten Diagramm ist der Widerstand R bei geschlossenem Schalter parallel zum Kondensator, was bedeutet, dass am Eingang eine Spannung anliegt, es sei denn, Rpull-up >> R, wodurch der Spannungsabfall über R vernachlässigbar klein wird. Unterschiedliche Widerstandswerte würden bedeuten, dass die Zeitkonstante für das Laden und Entladen unterschiedlich wäre und unsere Entprellung zwischen steigenden und fallenden Flanken inkonsistent wäre.
Daher ist das erste Bild keine brauchbare Alternative zu Abbildung 2 und entprellt den Schalter auch nicht richtig. Abbildung 2 ist vorzuziehen.
Abbildung 2 ist vorzuziehen, wenn davon ausgegangen wird, dass die E/A-Stromversorgung Ihrer MCU mit der Pullup-Spannung für R1 identisch ist und CMOS-Spannungspegel verwendet werden.
Wenn Sie Kondensatoren direkt an die MCU-Pins anschließen, können Sie damit möglicherweise durchkommen, aber es ist besser, einen gewissen Serienwiderstand wie einige hundert Ohm bis zu 1 K zu haben. Wenn Sie sich dafür entscheiden, keine Widerstände zu verwenden, sollten Sie sicherstellen, dass das dv/dt auf der Vdd-Schiene niemals kleiner sein kann als Wo ist der maximale Klemmdiodenstrom (um Latchup zu verhindern).
Ich nehme an, Sie haben festgestellt, dass Hardware-Entprellung erforderlich ist. Normalerweise ist dies nicht erforderlich, und Firmware-Entprellung (abgefragte Eingänge) erledigt die Aufgabe. Wenn Sie Interrupts verwenden, kann das Hardware-Entprellen erforderlich sein, aber das ist selten wünschenswert.
Ich habe Software-Polling-Debounce mit sehr guten Ergebnissen verwendet. Dieser Ansatz erfordert, dass Sie die Eingangspins oft genug abfragen können, um die Schalteraktivität nicht zu verpassen:
off
Wenn einer der Schalter von zu übergegangen ist on
, speichern Sie diesen WertDiese Technik kann in Verbindung mit Ihrem Abbildung 2-Hardware-Entpreller verwendet werden, insbesondere wenn Sie nicht sehr oft abfragen können.
Eine Kombination aus Soft- und Hardware-Entprellung ermöglicht es Ihnen, die "Ignorieren"-Zeit auf der Softwareseite und die RC-Zeitkonstante auf der Hardwareseite zu verringern. Dies kann besser sein als eine reine Hardware- oder reine Software-Entprellung.
Adam z
Stephan GM
Stephan GM
Dmitri Grigorjew