GPIO Fehlauslösungen - aber anders!?

  • HI zusammen,

    ich weiß, es gibt schon viele dieser Threads, bezüglich dem Phänomen, dass die GPIO-Eingänge Fehlauslösungen generieren. Die habe ich auch gelesen, auch das Elektronik-Kompendium bezüglich den GPIO-Pins. Aber bei mir verhält es sich einfach nochmal komischer:

    ich habe 7 RasPi-B3, alle mit einem separaten Netzteil ( MeanWell DR-15-5) aufgebaut. Jeder Pi hat ein GPIO-Pin als Eingang konfiguriert, dieser Eingang wird über ein Relais angesteuert (Relais hat den GPIO-EIngang und Pi-GND verbunden) Überall läuft das gleiche Script.

    Ich benutzte die internen PullUp-Widerstände:

    GPIO.setup(37, GPIO.IN, pull_up_down = GPIO.PUD_UP)

    (Ich weiß, viele bevorzugen externe HW-Lösungen, aber wenn ich den Eingang mit dem Multimeter messe, habe ich da konstante, stabile 3,31V)

    Erkennen tu ich es mit dem Interrupt:

    GPIO.add_event_detect(37, GPIO.FALLING, callback = callback, bouncetime = 660)

    Nun sind alle 7 Pis über EINE Steckerleiste mit Strom versorgt, eingeschaltet und das Script läuft.

    Wenn ich nun mit einem "kleinen" (6cm) Schraubendreher die Schraube eines Relais (egal ob von Pi-Eingang oder Pi-GND) berühre, kommt es zu Fehlauslösungen auf dem verbundenem Pi.

    Aber erst richtig interessant wird es, wenn ich statt dem Schraubendrehr eine Messspitze von einem Multimeter (ausgeschaltet) verwende: Dann kommt es auch zu Fehlauslösungen, aber nicht nur auf dem direkt mit dem Relais verbundenen Pi, sondern auch willkürlich und sporadisch auf den anderen RasPis!!??

    Das gleiche passiert sogar, wenn ich mit der Messspitze an die L-Leiterverschraubung des Netzteils komme, dadurch kommt es auch willkürlich auf den Pis zu Fehlauslösungen.

    PullUp und debounce sind gesetzt, also sollten die üblichen Fehlerquellen damit ausgeschlossen sein.

    Klar, das Multimeter fungiert als lange Antenne, aber wie kommt es dazu, dass selbst die nicht "direkt berührten" Pis mit auslösen?

    Nachtrag:

    Ich habe auch schon an einem Netzteil-Ausgang ein 4,7uF Kondensator angeschlossen, um eventuelle Spannungsschwankungen abzufangen, aber aber auch so kam es zu Fehlauslösungen, wenn ich die Messspitze des Multimeters an einen Eingang eines anderen Pis gehalten habe.

    Dieser Zustand ist ja absolut unzuverlässig, und macht keinen Sinn. Ich habe nur keine Idee mehr wie man das säubern könnte?

    Vielen Dank und Grüße

    Dave

    2 Mal editiert, zuletzt von dr.vga (4. März 2019 um 14:12)

  • typisch Doktorchen, Titel aber .....

    egal,

    was ist eine Relaisschraube?

    vermutlich ein Pin der durch eine Schraube geführt wird, hätte auch ein Lötpin sein können :lol:

    Klaro fängst du dir was ein sobald das Relais nicht direkt auf den GPIO Pin sitzt ist ein Kabel im Spiel und das spielt Antenne!

    Das Spiel klappt umso besser je hochohmiger der pullup ist:

    Ich benutzte die internen PullUp-Widerstände:

    wobei sich wieder mal zeigt, Geiz und Faulheit siegen nicht immer.

    Besser und hilfreicher wären offensichtlich in deiner Schaltung echte pullup Widerstände und deutlich niederohmiger als die internen, so um den Faktor 500-1000. Um im Falle einer falschen Programmierung nicht die GPIO zu töten sollte man nicht viel unter 1k Ohm gehen -> 3,3mA aus den GPIO.

    Eine echte Software Entprellroutine ist einer doofen RC Kombi immer vorzuziehen

    https://www.mikrocontroller.net/articles/Entprellung

    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)

  • Besser und hilfreicher wären offensichtlich in deiner Schaltung echte pullup Widerstände und deutlich niederohmiger als die internen, so um den Faktor 500-1000.

    Deutlich hilfreicher (auch für nachfolgende Leser) wäre es, neben dem Weglassen von persönlichen Herabwürdigungen, mit konkreten Zahlen zu arbeiten. Die internen Pullups haben 50.000 -60.000 Ohm. Mit Deinem Divisor (nicht Faktor) kommst Du auf Werte deutlich unterhalb der sinnvollen und ungefährlichen Größen von 10-4,7 kOhm.

    Die Verwendung externer PullUp/Down Widerstände würde ich aber auch in Erwägung ziehen.

    dr.vga kannst Du bitte einen Plan bzw. Foto Deines Aufbaus hochladen, dann wird die Prosa IMHO verständlicher.

  • neben dem Weglassen von persönlichen Herabwürdigungen

    sorry wenn ich Dr. lese gehen die Pferde mit mir durch, persönliche Erfahrungen, aber Recht hast du, persönliche Herabwürdigung geht gar nicht, dazu gehört aber ein echter Dr.:daumendreh2:

    genauso wie mein Faktor 500-1000, ich hätte rechnen sollen:blush:

    ein Glück das ich noch einen Wert nannte der nicht ganz falsch war.

    sollte man nicht viel unter 1k Ohm gehen -> 3,3mA aus den GPIO.

    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 STF und jar,

    Danke für die Unterstüzung! (selbst wenn sich jemand durch einen alias, dessen Bedeutung im übrigen nicht immer der allgemein geläufigen entsprechen muss, abgeneigt fühlt).

    Ein Bild vom Aufbau wäre glaub zu chaotisch. ;)

    ich habe aber folgende Tests gemacht:

    1. - softwareseitig internen Pullup deaktiviert

    - hardwareseitig 1kOhm Pullup verwendet

    - 100nF Kondensator parallel zum Relais.

    Ergebnis: wer hätte es geahnt, KEINE Fehlauslösungen mehr!

    2. - softwareseitig internen Pullup deaktiviert

    - hardwareseitig 1kOhm Pullup verwendet

    Ergebnis: Hier gibt es weiterhin Fehlauslösungen.

    3. - softwareseitig internen Pullup aktiviert

    - kein hardwareseitigen Pullup Widerstand verbaut!

    - 100nF Kondensator parallel zum Relais.

    Ergebnis: Auch hier KEINE Fehlauslösungen mehr.

    Fazit: In meinem Aufbau ist wohl der Kondensator die entscheidende fehlende Komponente.

    Vielen Dank für die Tipps.


    MfG dave

Jetzt mitmachen!

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