Taster entprellen

  • Da das "Prellen" von Tastern immer mal wieder ein Problem ist, fragte mich dreamshader, ob ich nicht Lust hätte, eine passende Lösung auf eine Platine zu bringen. Das sogenannte "Prellen" äußert sich zum Beispiel dadurch, dass die Betätigung des Tasters mehrfach erkannt wird oder (sofern nicht durch Interrupt gelöst) falls die Hardware in diesem Moment etwas anderes abarbeitet, gar nicht erkannt wird.


    Hier sind Grafiken zu sehen, die das Problem gut erkennen lassen:

    https://github.com/thomasfredericks/Bounce2


    Man kann dieses Problem sowohl per Software als auch per Hardware lösen. Beides hat seine Vor- und Nachteile. Da ich eher ein Freund von Hardwarelösungen bin, habe ich eine Platine erstellt. Per Jumper kann eingestellt werden, ob das Signal per "Pull Up" oder "Pull Down" anliegt.


    Wer Interesse an der Platine hat, kann sich gerne bei mir melde.

  • Moin Neueinsteiger,


    mal wieder ein schönes Objekt!!

    Mag du schreiben wie du entprellst? Mit einem Ic oder eine RC-Glied?


    Gruss Bernd

    Ich habe KEINE Ahnung und davon GANZ VIEL!!
    Bei einer Lösung freue ich mich über ein ":thumbup:"

    Vielleicht trifft man sich in der RPi-Plauderecke.

  • Es geht auch mit einem Flip-Flop und Umschalter statt nur Schliesser als Taster. Ansonsten retriggerbares Mono-Flop auf 100ms eingestellt und ein einfacher Taster. Diese Lösungen lohnen sich aber nur, wenn man mehrere Taster zu versorgen hat (etwa 4 Stück), dann kann man einen IC für alle einsetzen, denn meist sind mehrere Flops auf einem Chip.

  • Das ist ganz banal mit einem R/C Glied gemacht. Alle vorhandenen Bauteile sind auf der Vorderseite zu sehen ;)

    DS schickte mir diesen Link, mit der Frage, ob sich daraus nicht eine Platine machen lässt:

    https://www.mikrocontroller.ne…nt/357444/Taster-GPIO.png


    Ich habe beides kombiniert.


    Um einen banalen Taster zu entprellen reicht das meiner Meinung nach aus. Klar könnte man das auch mit einem 4538 machen, aber ob der Aufwand lohnt? Bei meinem DIG Entpreller habe ich das Signal noch durch einen Schmitt Trigger geschickt, damit die Flanken steiler werden. Aber das ist bei einem normalen Taster nicht notwendig, denke ich.


    Drehimpulsgeber / Inkrementalgeber entprellen

  • Hallo!

    Die Jumper wären aber eigentlich nicht nötig, oder? Die beiden Schaltungen sind identisch, bis darauf, dass bei der ersten GND am Taster hängt und 3,3V am Widerstand (R1), während es bei der anderen genau umgekehrt ist. Du könntest also eine der beiden Schaltungen nehmen und an einen Pin "Taster" schreiben, an den anderen (R1) "Pullup/down". Man muss dann nur die Kabel entsprechend anschließen. An den Taster die Schaltspannung (3,3 V oder GND) und an den Pullup/down das Gegenstück (Pulldown an GND oder Pullup an 3,3 V).


    Ich hab mir mal eine Platine mit 6 Entprellern gebastelt - hab da aber noch je zwei Schmitt-Trigger-Inverter nachgeschaltet, um eine hohe Flankensteilheit zu gewährleisten und ggf. das Signal auch noch rumzudrehen. Um die Zeitkonstanten für fallende und steigende Flanken möglichst gleich lang zu haben, hab ich R2 >> R1 gewählt (90K und 2K) - entsprechend klein ist C (100 nF). Entspricht einer Zeitkonstante von 9,2 ms.


    Deine Widerstände sind 10K? Wie groß ist C bzw. deine Zeitkonstante?

    Oh, man kann hier unliebsame Nutzer blockieren. Wie praktisch!

    Edited once, last by Gnom ().

  • Ich finde es mit den Jumpern eigentlich ganz praktisch. So hat man einen Ausgang, an den der µC oder was auch immer kommt und kann dann während der Entwicklungsphase bequem per Jumper umswitchen. Aber das ist sicherlich Geschmackssache.

    Ich habe einen 10k gegen einen 30k getauscht, damit sollte HIGH sicher erkannt werden. C ist 100 nF.

  • Zum Umschalten ist es natürlich praktisch.


    Welcher ist 10 K und welcher 30? Ich vermute, der im RC-Glied ist 30 K, der Pullup/down 10 K, oder?

    Zeitkonstante ist dann 3-4 ms. Für normale Taster genügt das grad so. Schlechte Taster liegen auch mal über 10 ms. Ich würd C noch etwas erhöhen.

    Oh, man kann hier unliebsame Nutzer blockieren. Wie praktisch!