Schalterprellen

L I V E Stammtisch ab 20:30 Uhr im Chat
  • Hallo zusammen!

    Ich spiele seit einigen Tagen mit meinem Pi herum, bin aber ein ziemlicher Elektronik-Noob. Nun bin ich auf ein Problem gestoßen (Taster-Prellen) für das mir so recht nichts einfällt. Die Schaltung an der ich bastle, soll eigentlich nur zwei GPIO-Pins des Pi ansteuern, der dann auf einem Display vor- oder zurückblättert. Vorher, und einige Zeit nach dem letzten Tasterdruck, sollen die Seiten zeitlich gesteuert durchlaufen. So ist der Plan :)

    Das Ansteuern des Displays habe ich hinbekommen, jetzt bin ich an der Blätter-Funktion und da bin ich momentan ein wenig ratlos.


    Ich habe erstmal die Schaltung wie folgt aufgebaut (RasPi 2, 2 Taster, 2 Widerstände 1kOhm):
    Pin29 und 39 an die Taster-"Ausgänge"
    Die Taster-"Eingänge" mit je 1kOhm auf 3.3V (Pin1)

    An dieser Stelle Verständnisfragen:
    1.1) Da die Widerstände zwischen 3.3 und Bauteilen liegen, ist das dann schon eine als 'Pull-up' bezeichnete Schaltung?
    2.2) Sind die Pins 29 und 31 Überhaupt auf Masse (hängt das dann von der Initialisierung im Code ab, denn ich könnte die Pins ja auch durch Schalten auf Masse nutzen?)? oder müsste ich neben der Verbindung zu den beiden Pins jeweils noch einen separate Verbindung zur Masse haben (habe solche Schaltungen ergoogelt, werde daraus aber nicht so ganz schlau).


    Hier jetzt der Python-Code den ich nutze:


    Das Problem was ich nun habe ist scheinbar das Prellen - immer wieder löst ein Druck auf den Taster mehrfach das Event aus, hält man ihn einen Moment und lässt ihn dann erst los, kommt es ebenfalls zu mehrfachen Eventauslösungen. Auch wenn ich die Bouncetime erhöhe, scheint das nichts zu bringen.

    Weil ich es irgendwo im Web gefunden hatte, habe ich auch mal einen herumliegenden Kondensator mit 100nF am Schalter mit auf das Steckbrett gesteckt (je einen Fuß auf eine Tasterseite, also parallel eben) - hat aber keine für mich erkennbare Wirkung gehabt.

    Dann habe ich in die Leitung zwischen Taster und Pin 29 bzw 31 einen zusätzlichen 220 Ohm Widerstand geklemmt, dass schien die Problematik etwas zu entschärfen.


    Aber letztlich habe ich irgendwie die Vermutung, dass ich irgendwas wesentliches nicht weiß oder begriffen habe und deswegen wollte ich jetzt mal lieber bei Menschen nachfragen die sich damit auskennen. Macht es aus irgendwelchen Gründen vielleicht mehr Sinn mit dem Taster auf Masse zu gehen?

    Fließt durch die beiden Pins (29 und 31) in diesem Beispiel überhaupt ein Strom, oder liegt an denen nur eine Spannung an?


    Sorry für die vielleicht seltsamen Fragen, aber wie gesagt, ich habe noch nicht so recht den Einblick ;)
    Und leider bin ich mir noch nicht mal sicher ob diese Sektion hier die richtige ist, vielleicht ist der Code ja OK, aber die Schaltung totaler Humbug (oder umgekehrt, oder beides :))

    Besten Dank aber schon mal und viele Grüße
    JC

    --
    "I know the human being and fish can coexist peacefully."
    G. W. Bush, 29. September 2000

  • Lies Dir doch mal diesen Beitrag in den Foren FAQ durch. Vielleicht bringt das etwas Licht ins Dunke.

    Neueinsteiger
    17. September 2015 um 08:34
  • Das Thema "Prellen" wurde im Forum schon oft genung behandelt, einfach mal Suchfunktion benutzten.

    Pull-Up-Schaltungen - Pull-Down-Schaltungen auch.

    Mit einem Schaltplan wäre deine Erklärung verständlicher.


  • Lies Dir doch mal diesen Beitrag in den Foren FAQ durch. Vielleicht bringt das etwas Licht ins Dunkel.

    [FAQ] Wie schließe ich einen Taster an den GPIO an? Was ist ein Pullup / Pulldown?

    Hi,

    Oh ja, das hat etwas Erhellung gebracht, jetzt habe ich verstanden, wie das mit dem oft zu lesenden Herstellen eines definierten Pegels gemeint ist.

    Vorher hatte ich es so, was falsch war, weil die GPIO-Pins keinen definierten LOW-Pegel hatten:

    Code
    3.3 V ----+---+-----------------------------
              |   |
              |   +-[1 kOhm]--/ --+ GPIO5 (Pin29)
              |
              +-[1 kOhm]------/ --+ GPIO6 (Pin31)
    
    
      GND --------------------------------------


    Ich bin irgendwie davon ausgegangen, dass sich das durch "pull_up_down=GPIO.PUD_DOWN" erledigt.


    Jetzt habe ich es nach der verlinkten FAQ (Besten Dank, bin gestern Abend nicht darüber gestolpert) so aufgebaut:

    Code
    3.3 V -----------------+---+----------------
                           |   |
                           /   /
                           |   |
              +-[10 kOhm]--+---|--+ GPIO5 (Pin29)
              |                |
              |   +-[10 kOhm]--+--+ GPIO6 (Pin31)
              |   |
      GND ----+---+-----------------------------


    Das mit dem Pull-up/Pull-down peile ich leider nicht, habe mir den ElKo-Artikel dazu schon mehrfach angesehen (gehabt) aber ich kapier das nicht. Ich finde die Aussage "Ein Widerstand zieht die elektrische Spannung hinauf oder herunter" nicht verständlich. Ein Widerstand begrenzt Strom und kann genutzt werden um Spannung zu teilen (habe ich mal vor etlichen Jahren in einem Physikpraktikum gelernt) - unter dem "Ziehen von Spannung" kann ich mir nichts vorstellen :s

    Aber gut, dies hier ist scheinbar ein typischer "Pull-Down", da der Widerstand zwischen GND und Eingang liegt, bei dem im Falle einer Beschaltung eine positive Spannung (hier 3.3 Volt) angelegt wird. Scheinbar ist das dann unter "herunter Ziehen" zu verstehen, also die Tatsache, dass der Widerstand den unbeschalteten Eingang von seinem zunächst undefinierten Spannungsniveau auf das niedrige Niveau bringt (also "zieht"). Ich wrede es noch ein bisschen durchdenken.


    Vielen :danke_ATDE: Euch allen, hat mir glaube ich sehr weiter geholfen. Es prellt zwar immer noch mit den kleinen Tastern (insbeosndere wenn man sie einen Moment gedrückt hält), aber ich kann ja nochmal meinen Keramik-Kondensator an den Taster klemmen und mit der Bouncetime spielen. Bezüglich Prellverhalten dürfte es ja egal sein, ob man den Taster wie jetzt betreibt, oder umgekehrt (also Pull-Up Widerstand und Flanke auf FALLING), oder?


    LG
    JC

    --
    "I know the human being and fish can coexist peacefully."
    G. W. Bush, 29. September 2000

    Einmal editiert, zuletzt von JCorey (10. Februar 2016 um 22:22)

  • Bezüglich Deines Problems mit dem Prellen schau Dir mal das hier an:
    https://www.mikrocontroller.net/articles/Entprellung

    Ich nehme ganz gerne diese Lösung, damit ich mich nicht mit der Softwrae beschäftigen muss ;)
    https://www.mikrocontroller.net/articles/Datei:RC_debouncer.png

    Um Platz zu sparen könntest Du beispielsweise den hier nehmen:
    http://www.ti.com/lit/ds/symlink/sn74lvc2g14.pdf
    oder auch diesen hier
    http://www.nxp.com/documents/data_sheet/74LVC1G17.pdf

    Wenn es etwas größer sein muss, dann natürlich auch den hier
    http://www.nxp.com/documents/data_sheet/74HC_HCT14.pdf

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!