Page 1 of 1

Mehrere Taster am RasPi -> Merkwürdiges Verhalten

Posted: Tue Sep 25, 2018 7:11 pm
by DigiTalk
Hallo alle zusammen!

Ich vermute ein elektrisches Problem bei mir.
Mein nettes Python-Programm soll bei 10 verschiedenen Tastern entsprechend 10 verschiedene Animationen auf einem LED-Streifen ausgeben.
Das mit dem LED-Streifen funktioniert alles, jedoch bekomme ich merkwürdige Reaktionen bei den Tastern.

Habe ich nur einen Taster, klappt alles - auch wenn die Animation manchmal zweimal nacheinander durchläuft.
Wenn ich mehrere Taster habe (ich bis bis 4 gekommen aktuell), passiert jedoch völlig unvorhersehbares:
Mal gibt es die korrekte Animation.
Mal gibt es eine völlig andere, und dann noch zwei falsche hinterher.
Mal gibt es die korrekte, gefolgt von einer falschen.
Manchmal sogar zwei gleichzeitig.

Die Taster sind entprellt.
Der Raspi ist ein B3.
sudo update und disp-upgrade sind gelaufen.
System ist Raspbian Stretch

Ich initialisiere die GPIOs:

Code: Select all

    GPIO.setmode(GPIO.BOARD)

    GPIO.setup(11, GPIO.IN, pull_up_down = GPIO.PUD_UP)
    GPIO.setup(13, GPIO.IN, pull_up_down = GPIO.PUD_UP)
    GPIO.setup(15, GPIO.IN, pull_up_down = GPIO.PUD_UP)
    GPIO.setup(16, GPIO.IN, pull_up_down = GPIO.PUD_UP)

    GPIO.add_event_detect(11, GPIO.FALLING, callback = lauflicht1, bouncetime=500)
    GPIO.add_event_detect(13, GPIO.FALLING, callback = lauflicht2, bouncetime=500)
    GPIO.add_event_detect(15, GPIO.FALLING, callback = lauflicht3, bouncetime=500)
    GPIO.add_event_detect(16, GPIO.FALLING, callback = lauflicht4, bouncetime=500)
Die Callback-Funktionen sind nach dem folgenden Schema aufgebaut:

Code: Select all

def lauflicht1(channel):
#    GPIO.remove_event_detect(11)
    print("Lauflicht Nummer 1 von " + str(START_LED_1) + " bis "+ str(END_LED_1) + " um " + str(datetime.datetime.now()) +" gestartet!")
    lauflicht(farbe=ROT)
    print("Lauflicht Nummer 1 beendet!")
Also habe ich den internen PullUp-Widerstand verwendet (weil PullUp widerstandsfähiger gegen Störeinflüsse ist) und entsprechende Interrupts hinzugefügt.
Jetzt der wahrscheinliche Knackpunkt: die Schaltung.
Ganz simpel gehalten (weil ja alles Programmatisch geht - dachte ich):
schalter.png
schalter.png (10.91 KiB) Viewed 1886 times
So, jetzt kommen die Fragen:
- Habe ich Recht, dass es ein elektrisches Problem ist?
- Muss ich da was anders verkabeln? (Entstörkondensatoren zum Beispiel)
- Habe ich Mist Programmiert? (da habe ich noch ein anderes Problem, was wahrscheinlich nichts hiermit zu tun hat)
- Habe ich einen Denkfehler irgendwo?
- Bin ich blind?

Das erwähnte andere Problem ist übrigens, dass ich bei Strg+C fast immer einen Fehler zurückbekomme.
Das kann ein "Segmentation Fault" sein, oder sowas hier:
"*** Error in `python': corrupted size vs. prev_size: 0x00564cc0 ***"

Meine verwendeten Libraries:

Code: Select all

import time
from neopixel import *
import _rpi_ws281x as wslib
import RPi.GPIO as GPIO
import argparse
import math
import datetime
Besten Dank für euren Input!
Auf Wunsch kann ich natürlich auch das ganze Programm posten, ich glaube aber zu wissen, dass es für das Taster-Problem irrelevant ist.
Für den Absturz am Ende wahrscheinlich hingegen nicht...

Re: Mehrere Taster am RasPi -> Merkwürdiges Verhalten

Posted: Wed Sep 26, 2018 7:27 am
by smartifahrer
Schau mal im Datenblatt nach ob die von dir verwendeten GPIOs überhaupt über die interne Pull-Up/Down Funktion verfügen. Ansonsten einfach externe Widerstände verwenden.

Re: Mehrere Taster am RasPi -> Merkwürdiges Verhalten

Posted: Wed Sep 26, 2018 2:31 pm
by DigiTalk
So ein Datenblatt muss man erstmal finden...
Nach allem, was ich gelesen habe, müssten alle einen haben, mit Ausnahme von Pin 3 und 5.
Aber wenn nicht: dann habe ich entweder alle Widerstände parallel geschaltet (= kleinerer Widerstand) oder nur einen Widerstand für alle GPIOs.
Das würde doch dazu führen, dass ich immer alle auf masse ziehe, egal, welchen Knopf ich drücke, oder?

Edit:
Ich habe jetzt mal externe PullUps mit 47kOhm eingesetzt. Es ist schon deutlich besser.
Jetzt kommt trotzdem manchmal die falsche Animation, aber es klappt sogar, zwei gleichzeitig laufen zu lassen.

Ergo sind die internen PullUps nicht so gut wie externe...

Re: Mehrere Taster am RasPi -> Merkwürdiges Verhalten

Posted: Wed Sep 26, 2018 2:56 pm
by smartifahrer
Datenblätter findest du hier https://www.raspberrypi.org/documentati ... /README.md
Im Innern hast du nicht wirklich Widerstände sondern eine ganze Schaltung. Sonst könntest du die nicht ein und ausschalten. Somit kannst du die internen gar nicht parallel schalten. Ich gehemal davon aus das du alle Taster richtig verdrahtet hast und damit den GPIO mit GND verbindest wie beschrieben. Hast du sehr lange Verbindungskabel?
Habe ich nur einen Taster, klappt alles - auch wenn die Animation manchmal zweimal nacheinander durchläuft.
Genau genommen funktioniert es auch mit einem Taster nicht richtig.

Re: Mehrere Taster am RasPi -> Merkwürdiges Verhalten

Posted: Wed Sep 26, 2018 3:03 pm
by DigiTalk
Zum Edit:
Besser klappts mit den externen.
Ich habe sie so verdrahtet:
Image
(Bild von https://makerguy.wordpress.com)

Re: Mehrere Taster am RasPi -> Merkwürdiges Verhalten

Posted: Wed Sep 26, 2018 3:04 pm
by mahjongg
DigiTalk wrote:
Wed Sep 26, 2018 2:31 pm

Ergo sind die internen PullUps nicht so gut wie externe...
Stimmt, die interne sind etwa 50K, so die sollen nur für kurze Verbindungen verwendet werden.