GPIO Input Fehlerkennung bei externer eingeschalteter Stromquelle

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hi,
    ich finde keinen Rat mehr. Ich möchte ganz simple an einen GPIO Port des Raspberry einen Button anschließen, der ein Event auslöst (Testhalber nur Textausgabe).

    Das ganze funktioniert auch super, nur dass es ab und zu ein Tastendruck gemessen wird, obwohl da gar keiner war. Ich habe das Problem eingegrenzt.
    Es liegt nicht am Button selbst oder am GPIO Pin. Es liegt nicht am Software oder Hardware Pullup.
    Ich kann eine Fehlmessung gezielt Auslösen, indem ich meine Schreibtischlampe beispielsweise einschalte.

    Ich habe folgendes versucht:
    Ansmann Netzteil, ATX Netzteil, Usb Hub mit y Kabel. Immer der Fehler. Beim ATX Netzteil habe ich mir was selbst zusammengelötet und einen 100µF Kondensator DIREKT vor den Usb Pin gebaut. Selbst das half nichts.
    Ich habe es im Unteren Stockwerk getestet. Dort der selbe Fehler. Im Haus ist alles miteinander Verbunden, nur dass die Stockwerke einzelne Sicherungen haben. Ich habe auch versucht den Pi im oberen Stockwerk einzuschalten und die Lampe im Unteren. Dann gab es keinen Fehler. Vielleicht war da die Entfernung aber zu groß.
    Ich habe einen zweiten Pi aus der gleichen Bestellung getestet (Baugleich, B 512 Hynix Ram), gleicher Fehler.

    Was ich noch versuchen werde:
    Die Nachbarn fragen, ob ichs da mal testen darf (vllt ist unser Hausnetz scheise)
    Die Großeltern fragen, vielleicht liegt es an unseren Stadtwerken
    Einen anderen Pi testen, mit anderen Speicher? (habe aber keinen)
    Ein Pulldown testen
    weniger geräte im raum anhaben

    Gibt es irgendeine einfache Lösung für das Problem oder muss ich mir einen unglaublich fetten Kondensator davor einbauen, damit ich sowas simples wie GPIO zuverlässig nutzen kann? Alternativ könnte ich eine Batterie testen, aber so einen schmodder will ich eigentlich nicht. Ist vielleicht mein Pi Model schlecht verarbeitet, wegen dem Hynix speicher?

    Das Programm:

  • GPIO Input Fehlerkennung bei externer eingeschalteter Stromquelle? Schau mal ob du hier fündig wirst!

  • > Es liegt nicht am Software oder Hardware Pullup.
    GAANZ SICHER ??

    • Ich wuerde erst mal einen kleineren Widerstand als Pullup nehmen und es nochmals probieren.
    • Und als zweites einen groesseren Widerstand parallel zum Kontakt schalten.
    • Ein abgeschirmtes Kabel zum Schalter schadet sicher auch nicht.


    Als weitere Option kommt eine saubere Entprellung in Frage. Da Schaltspitzen sehr kurz sind,
    kann der Schalter mehrfach abgefragt werden. Die Funktion wird erst ausgefuehrt wenn
    mehrere aufeinander folgende Abfragen das Gleiche ergeben haben.

  • Danke erstmal für die Antworten :)

    Es ist glaube eine Leuchtstofflampe, jedenfalls mit einem Travo. Problem ist, dass ich die Störsignale auch so manchmal bekomme, damit kann ich es nur gezielt erzeugen und testen.

    Zum Pullup:
    Ich habe Software, Soft + Hardware und nur Hardware versucht. Dabei habe ich den Gpio Pin, der zum Button führt mit 10k zu 3,3v geschaltet. Wenn der Button gedrückt ist, fließt der Strom über gnd ab. Sollte soweit alles passen.

    Welche Widerstände sollte ich denn mal versuchen, ohne den Pi dabei zu schrotten?

    Abgeschirmtes kabel... Ich habe diese 20cm Jumper Wire. Für solche kleinen Sachen habe ich keine Abschirmung...
    Entprellung ist eine Möglichkeit, sicherlich. Wobei das Problem nicht am Button liegt. Und ich finde es etwas dumm, dass so eine simple Sache schon nicht ohne sowas hinhaut :/
    Der Fehler tritt übrigends NICHT auf, wenn ich keine Kabel an den GPIO Port anschließe. Dann kann ich die Lampe ein und ausschalten wie ich will.

  • mir würde erst mal ordentliche software Entprellung einfallen

    4x lesen alle 10ms

    als ASM aber auch als C-Routine kann sicher auch nach phyton o.ä. umgesetzt werden
    Entprellung nach "Dannegger" finde ich einfach genial:
    http://www.mikrocontroller.net/topic/254231

    Lesestoff
    http://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)

    Einmal editiert, zuletzt von jar (3. März 2014 um 13:01)

  • Hallo Nico,

    ich habe mich vor zwei Wochen auch mit Tastern beschäftigt und bin auf folgende Schaltung gekommen:

    GPIO14 ==> R=330 Ohm ==> Kathode-LED-Anode ==> 3.3V ==> Taster ==> R=620 Ohm ==> GPIO10 ==> R=11 kOhm ==> GND


    Der Taster liegt zwischen 3.3 V und GPIO10, wobei ein Widerstand von 620 Ohm den Strom auf ca. 2 mA reduziert.

    Drückt man auf den Taster, liegt ein entsprechendes Signal am GPIO10 an. Zur Kontrolle leuchtet die LED in diesem Fall (falls Du eine Software wie im Link angegeben einsetzt).

    Ein hochohmiger Widerstand zwischen GPIO10 und GND sorgt dafür, dass keine Signale von außen "eingefangen" werden und Schalterzustände vorgaukeln.

    Mehr Infos.
    Reset-Taster am GPIO und Programmierung in Icon (EDIT 08-OKT-2017 Link im alten Forum)

    Da Du zu Deiner Schaltung so gar nichts hast verlautbaren lassen, vermute ich, dass Du den hochohmgen Widerstand vergessen hast und alles an Signale auffängst - insbesondere bei Schalten anderer Geräte.

    Viel Spaß und gutes Gelingen!

    Andreas


    Der Fehler tritt übrigends NICHT auf, wenn ich keine Kabel an den GPIO Port anschließe. Dann kann ich die Lampe ein und ausschalten wie ich will.


    Hallo Nico,

    na da hast Du es doch geschrieben:

    Mit diesen Kabeln fängst Du Dir unerwünschte Signale ein, die Durch entsprechend große Widerstände um 10 kOhm herum nicht hättest.

    Außerdem sollte Dein Programm nicht auf kurzfristigste Signale reagieren. Ein Tastendruck dauert vielleicht ca. 0,15 Sekunden. Alles was kürzer ist, ist wahrscheinlich unerwünscht.

    Bei meinem Taster-Programm reagiere ich z.B. gar nicht auf Ereignisse, die weniger als 0,5 Sekunden andauern. Bei Erignissen bis 1,5 Sekunden gibt's einen Reboot, bei länger andauerndem Tastendruck einen Shutdown.

    Da ich das Programm von Systemstart an mitlaufen lasse, wäre mir sicherlich aufgefallen, wenn das Teil unerünscht herunterfährt oder neu startet. Da das nicht passiert ist, spricht das für die Schaltung.

    Gutes Gelingen!

    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

    2 Mal editiert, zuletzt von Andreas (8. Oktober 2017 um 11:58)

  • Ich habe den Fehler jetzt geortet. Meine Tests möchte ich hier nicht ausführen, aber die Nachbarn fanden es komisch, als ich sie um Hilfe bat :D

    Wenn ich den Raspberry Pi mit Batterien betreibe und die Lampe einschalte, gibt es den Fehler. Es liegt definitiv nicht an der TV-Cinch verbindung. Mehr ich nicht verbunden. Also fangen die Kabel irgendwas ab, was sie eigentlich nicht sollten. Die dünnen Kabel kann ich wohl schlecht abschirmen, deswegen ist wohl eine Softwarelösung nötig. Dazu habe ich jetzt erstmal keine Nerven, aber das Problem ist endlich geklärt.

Jetzt mitmachen!

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