Störungen GPIO Eingang

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo Leute,

    ich bin neu hier.

    Ich möchte mit einem Taster am Eingang eine Nachricht über den Dienst pushover absetzen.

    Mit Python ist alles programmiert.

    Den Taster habe ich versucht auf einer externen Platine zu entprellen, als Pull-up zu programmieren, über ein ca 10cm langes Flachbandkabel ist die Platine angeschlossen an den Raspi.

    Das ganze ist in dem Raum der Hausinstallation verbaut.

    Sobald im Raum das Licht angeschaltet wird, oder andere Impulse über weitere Kabel der Hausverteilungen laufen, gibts unnötige Benachrichtigungen.

    Mir ist schon klar, dass ich mir sicherlich reichlich Störungen über das blöde Kabel zwischen Widerständen, Kondensator und dem GPIO einfange, eigentlich sind Lötarbeiten damit auch leicht ad absurdum, daher ja auch die Software Massnahmen.

    Und dennoch reichlich unnötige push Nachrichten.

    Was kann ich besser machen?

    Klar, die externe Platine weglassen, aber direkt auf die GPIO löten wollt ich nicht und eigentlich sollen noch weitere Signaleingänge verarbeitet werden, irgendwann mal, wenns den zuverlässig läuft.

    anbei mal nen Auszug aus Python.

    #-*- coding: iso-8859-1 -*-

    import RPi.GPIO as GPIO

    from push_tuerklingel import send_push_message

    import time

    GPIO.setmode(GPIO,BCM)

    GPIO.setup(17,GPIO.IN, pull_up_down = CGPIO.PUD_UP)

    def Klingel(channel):

    if GPIO.input(17):

    send_push_message("xxxxxxx")

    GPIO.add_event_detect(27, GPIO.FALLING, callback = Klingel, bouncetime=400)

    GPIO.cleanup()

    Kann mir jemand da helfen?

    Gruß

    Mark

  • Was kann ich besser machen?

    externer 1k pullup und Taster nach GND auf low abfragen

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

  • Servus smartimark ,

    auf einer externen Platine zu entprellen, als Pull-up zu programmieren,

    finde ich jetzt keine so gute Idee ... Entweder Hardware mit pullups oder Software.

    Das Problem dabei ist, dass Du den internen Widerstand nicht siehst und parallel zum externen schaltest.

    Ich verbaue ausschliesslich externe Widerstände und verwende die internen gar nicht ... weil man das eben leicht übersehen kann.

    Ansonsten schliesse ich mich da jar an: auf GND schalten ...

    cu,

    -ds-

  • dreamshader und jar

    ist auf gnd geschaltet.

    deswegen ja extra die externe Platine zum verlöten und stecken der paar Bauteile, zumal ich die eh brauchen werde wenn mehr Eingänge abgefragt werden sollen.

    da sollte ersichtlich werden was meiner Einschätzung das Problem sein könnte.


    auf der Platine ist gemäß dem Schaltbild verdrahtet. R = 10k

    Mit der Antennenwirkung des Flachbandkabels sammeln ich mir wieder oder sogar zusätzlich Störungen ein.

    Wer weiß Rat?

    Gruß

    Mark

    • Offizieller Beitrag
    Zitat

    da sollte ersichtlich werden was meiner Einschätzung das Problem sein könnte.

    Darum geht es nicht, bzw. Deine Einschätzung ist nur eine Einschätzung. ;) Ein Foto von einem Kabel hilft auch nicht weiter. Mach mal ein paar von der Platine und dem Taster inkl. Anschlüsse. Vielleicht kann man dann etwas erkennen.

  • Wer weiß Rat?

    wozu schreibe ich, es nervt wenn man schon geantwortet hat und dieselbe Frage wiederkommt.

    Evtl. fällt dir ja zu deinem ein Unterschied auf

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

  • Mit R runter bis auf 2k.

    heftiger Protest, wenn ich 1k schreibe kannst du doch nicht mit 2k daherkommen :@:baeh2:

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

  • Wie war das mit dem Forenkonsens nochmal ?

    bei pullup war ich immer auf 1k, ihr nicht? :conf:

    aber hier macht ja jeder was er will und fast nie einer was er soll, nicht mal lesen! :stumm:

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

  • bei pullup war ich immer auf 1k, ihr nicht? :conf:

    Nö ... nur im Extremfall. Sonst liegen die bei mir immer bei 10k oder 4k7 ...

    Ich muss ja nicht dauerhaft 3 mA aus den GPIOs ziehen...

    Wie war das? So gross wie möglich und so klein wie nötig ;)

    //EDIT: das war natürlich Unsinn ... sorry dafür ...

    cu,

    -ds-

  • Ich muss ja nicht dauerhaft 3 mA aus den GPIOs ziehen...

    wer schreibt dir denn vor mit deinem Daumen dauerhaft auf dem Taster zu kleben? :conf:

    wenn du natürlich den entsprechenden GPIO dauerhaft auf low gegrillt hast ist der Stromverbrauch natürlich imens und unbezahlbar :lol:

    REM:

    mit einem Taster

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

  • Ich muss ja nicht dauerhaft 3 mA aus den GPIOs ziehen...

    du hast immer noch nicht geantwortet warum du dauerhaft auf dem Taster bleibst!

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

  • Du hast "extern entprellen" geschrieben... Wie sieht denn deine Entprellschaltung aus? Welche Zeitkonstante hast du gewählt?

    Wieso machst du nicht eine Software-Entprellung. Einfacher, billiger und in diesem Fall auch praktikabel.

    Ich hab es kürzlich mal beim µC mit einem Timer-Interrupt ausprobiert. Alle 5 ms eine Routine aufrufen, die hochzählt, wenn die Taste gedrückt ist und auf null setzt, wenn die Taste nicht gedrückt ist. Wenn 5 oder 6 erreicht ist (entspricht 25-30 ms Entprellzeit) dann wird getriggert.

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

    • Offizieller Beitrag

    smartimark Bevor Du jetzt weiter in dem alten Thread liest und ich RPi.GPIO kaum noch ertragen kann, hast Du hier mal ein Beispiel mit dem aktuelleren und besseren gpiozero:

    ;)

    Falls Du wirklich entprellen musst, dann z.B. button = Button(17, bounce_time=0.2) für 200 ms. Siehe dazu auch hier:

    bounce_time (float) – If None (the default), no software bounce compensation will be
    performed. Otherwise, this is the length of time (in seconds) that the
    component will ignore changes in state after an initial change.


Jetzt mitmachen!

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