Probleme mit Störquellen an GPIO Schnittstelle

  • Hallo, hat von euch auch jemand Probleme mit Störquellen, die auf die GPIO Schnittstelle des Raspberry Pi wirken?
    Mei mir geht es soweit, dass meine in der Küche installierte DoorPi-Teststellung einen Anruf auslöst, wenn jemand die Backofen Tür öffnet.
    Ich habe den DoorpI schon mittels PowerBank betrieben, weil ich das Stromnetz in Verdacht hatte, aber weit gefehlt. Die Störungen sind auch ohne Steckdose da.


    Ich verwende die PINS 3V, Pin11, GRND für den Klingeltaster.


    Ich habe gelesen, man solle die Prellung verbessern. Also entweder hardware- oder softwaretechnisch.
    Hat jemand von euch ähnliche Erfahrungen gemacht und lässt sich das ggf. durch eine Einstellung von bouncetime beheben?
    Bei mir ist es momentan so eingestellt:


    Code
    [onboardpins_keyboard]
    bouncetime = 100
    polarity = 1
    pressed_on_keydown = True


    Ist zwar lustig, aber total nervend, wenn beim Sohn seine Pizza aus dem Backofen holt und der DoorPi dabei klingelt... :lol:

    Edited once, last by han-solo ().

  • Mit Prellen hat das nichts zu tun. Die GPIOs sind grundsätzlich recht empfindlich gegen Störungen. Entstörglieder (manchmal reichen auch schon Keramikkondensatoren mit 10nF vom GPIO gegen Masse und +Vcc) in den Zuleitungen bringen Verbesserung.


  • Hallo, hat von euch auch jemand Probleme mit Störquellen, die auf die GPIO Schnittstelle des Raspberry Pi wirken?


    fast jeder 2te hier:



    Mit Prellen hat das nichts zu tun. Die GPIOs sind grundsätzlich recht empfindlich gegen Störungen. Entstörglieder (manchmal reichen auch schon Keramikkondensatoren mit 10nF vom GPIO gegen Masse und +Vcc) in den Zuleitungen bringen Verbesserung.


    also Kondis sind i.d.R. das letzte Mittel und kein Allheilmittel.


    Es wurde hier genug geschrieben über pullups pulldowns und um niederohmige Anbindung der GPIO mit Taster.


    Wenn es richtig gemacht wurde kann kaum ein Fremdimpuls das Signal auf dem PI stören.


    http://www.forum-raspberrypi.d…annt?pid=208628#pid208628
    http://www.forum-raspberrypi.d…sein?pid=208526#pid208526

    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)

  • Hallo.
    Also eines versteh ich nicht... wozu 2 R's... ?, und den Mittelabgriff abfragen ?
    Wenn schon unbeding per Hardware entprellt werden soll (was meiner Ansicht nach nie ganz sauber sein wird), dann bitte mal >folgendes< durchlesen.
    Das mit dem C an der richtigen Stelle sollte man sich auch verinnerlichen.
    Wobei ich noch die Flip-Flop-Variante bevorzugen würde.


    Warum traut ihr euch nicht an die Softwareentprellung ran ?. Ist doch ein Kinderspiel, vorausgesetzt man versteht die Hintergründe.
    Aber ok, ein jeder wie er mag.


    Vlt. mal als Beispiel.
    Nachdem viele hier mit Python rumwerkeln;
    Es gibt für ne Flankenerkennund den Befehl:

    Code
    GPIO.add_event_detect(18, GPIO.BOTH, callback = doIfHigh, bouncetime = 200)


    Da muss hier in der ISR geprüft werden ... war es ne steigende, oder ne fallende Flanke, also GPIOin lesen und dann entscheiden.
    Zweifler können jetzt einwenden... da sind ja uSec vergangen, und der Eingang kann sich verändert haben.
    Akzeptiert.
    Dann einfach 2 ISR's aktivieren:

    Code
    GPIO.add_event_detect(18, GPIO.RISING, callback = doIfHigh, bouncetime = 200)


    ...ist absolut eindeutig
    und

    Code
    GPIO.add_event_detect(18, GPIO.FALLING, callback = doIfLow, bouncetime = 200)


    ebenfalls absolut eindeutig
    ...und der Brei ist gegessen.


    gruß root

    Edited once, last by root ().

  • Quote


    Also eines versteh ich nicht... wozu 2 R's... ?, und den Mittelabgriff abfragen ?


    Der 10k-Ohm_widerstand, damit sich Funkstrahlung nicht auf den GPIO auswirkt, sondern gegen Masse abgeleitet wird.
    Der andere, um den maximalen Stromfluss zu begrenzen.

    Code
    GPIO.add_event_detect(18, GPIO.BOTH, callback = doIfHigh, bouncetime = 200)


    Quote


    Zweifler können jetzt einwenden... da sind ja uSec vergangen, und der Eingang kann sich verändert haben.
    Akzeptiert.


    Ich dachte mS, nicht µSec
    Und eine Bouncetime ist eine Bouncetime, warum unnötig hoch ansetzen, wenn es nicht nötig ist.
    Gut, hat nicht jeder ein Oszi, um zu messen, aber 200 finde ich schon sehr hoch.
    Bei mir reicht eine Bouncetime von 1-2.


  • Bei mir reicht eine Bouncetime von 1-2.


    gute Taster! aber überflüssig,


    1. gibt es auch schlechte Taster
    2. kann kein Mensch in 2ms 2x Drücken!


    also reicht auch 40ms

    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)

  • Hallo fred0815.


    Und eine Bouncetime ist eine Bouncetime, warum unnötig hoch ansetzen, wenn es nicht nötig ist.
    Gut, hat nicht jeder ein Oszi, um zu messen, aber 200 finde ich schon sehr hoch.
    Bei mir reicht eine Bouncetime von 1-2.


    Sicher sind diese 200 absolut kein muss.
    Wie jar schon sagte , hast eben gute Taster.
    Wenn du aber schlechte erwischt hast und kein Oszi,dann oben ansetzten und runterdrehen bis Ungereimtheiten auftauchen.
    Dann +x und fertig.
    ... nur mal so nebenbei :thumbs1:


    gruß root