DigiTalk
Posts: 3
Joined: Tue Sep 25, 2018 3:34 pm

Mehrere Taster am RasPi -> Merkwürdiges Verhalten

Tue Sep 25, 2018 7:11 pm

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 969 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...

smartifahrer
Posts: 646
Joined: Sat Feb 13, 2016 8:10 am

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

Wed Sep 26, 2018 7:27 am

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.

DigiTalk
Posts: 3
Joined: Tue Sep 25, 2018 3:34 pm

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

Wed Sep 26, 2018 2:31 pm

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...
Last edited by DigiTalk on Wed Sep 26, 2018 3:00 pm, edited 1 time in total.

smartifahrer
Posts: 646
Joined: Sat Feb 13, 2016 8:10 am

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

Wed Sep 26, 2018 2:56 pm

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.

DigiTalk
Posts: 3
Joined: Tue Sep 25, 2018 3:34 pm

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

Wed Sep 26, 2018 3:03 pm

Zum Edit:
Besser klappts mit den externen.
Ich habe sie so verdrahtet:
Image
(Bild von https://makerguy.wordpress.com)

User avatar
mahjongg
Forum Moderator
Forum Moderator
Posts: 11078
Joined: Sun Mar 11, 2012 12:19 am
Location: South Holland, The Netherlands

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

Wed Sep 26, 2018 3:04 pm

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.

Return to “Deutsch”