GPIO eingänge spinnen

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Ich baue einen smarthome server mit einem Raspi B+.
    Darauf läuft openhab und diverse shell und python skripte.

    Seit kurzem fährt der server unvermittelt runter.
    ich hab an einem eingang einen Taster mit pullup der den server runter fahren soll, da kein monitor angeschlossen ist.
    Zunächst bin ich von spikes ausgegangen und hab eine software entprellung gemacht und den pullup verkleinert auf 1kOhm. Leider ohne erfolg.
    Jetzt hab ich mit dem Multimeter gesehen, das der Eingang nach einiger Zeit von Stabil 3.3 auf zappelnde 0,2 bis 0,5 Volt springt. Danach fährt auch der raspi runter.
    Es sieht so aus wie wenn der eingang plötzlich auf ausgang geschaltet wird.
    Das gleiche problem hab ich noch mit einem weiteren eingang.
    Der Fehler ist erst seit einigen Tagen vorhanden, vorher war alles ruhig auf den eingängen.
    Ich hab jetzt den Taster von Pin 11 auf Pin 40 umgelegt und alles läuft wieder.

    Wie kann ich raus finden wer mir hier auf die eingänge spukt oder kann auch der raspi defekt sein? Kann es openhab sein?. Dort hab ich versucht diverse eingänge abzufragen, aber ohne erfolg und nie den pin 11. Openhab hab ich auch schon vor einigen wochen installiert.

    mpeg

  • Hallo Mpeg,

    Pullup- / Pulldown-Widerstände dienen dazu, bei Eintreten bestimmter Ereignisse festgelegte Pegel zu erzielen.
    Beim Raspberry Pi ist ein Pegel kleiner 0,8 V LOW, ein Pegel > 1,3 V HIGH. Dazwischen befindest Du Dich in einem undefinierten Bereich.

    Wenn Du den Widerstand auf 1 kOhm verringert hast, muss er vorher größer gewesen sein. :geek: Wenn er vorher größer war und Du Probleme gehabt hattest, dann war er vermutlich nicht groß genug - nicht wie Du denkst, zu groß.

    Hast Du schon einmal den Versuch gemacht, gänzlich ohne Widerstand (am GPIO-Eingang) zu arbeiten? Dann wirst Du feststellen, dass das Signal "flattert". Deswegen setzt man einen recht hochohmigen Widerstand ein. Üblicherweise etwas um 10,8 kOhm.

    Das wäre dann auch meine Empfehlung.


    Und der Status eines GPIO-Ports bzgl. Ein- und Ausgang kannst Du nur softwareseitig ändern. Das passiert nicht einfach so.

    Wenn Du derartiges vermutest, laufen entweder mehrere GPIO-Programme (kannst nur Du wissen) - oder Deine Software entfaltet ein Eigenleben (kannst auch nur Du beurteilen).

    Beste Grüße

    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.

    Einmal editiert, zuletzt von Andreas (21. Mai 2015 um 21:09)

  • Also die Antwort von Andreas ist schon ein bischen schräg, aber wenn man einen GPIO Port als Eingang verwendet und daran ein Kabel anschließt, hat man quasi eine Antenne am GPIO Port, welche dann auch etwas empfangen kann. Um nun zu verhindern, dass damit unerwünschte Effekte auftreten, legt man den Eingang mit Pullup- / Pulldown Widerstände auf eine definiertes Potential. Diese Widerstände sollte man eigendlich so hoch wie nötig / möglich wählen, da man ja nur einen minimalen Stromfluß über diesen Widerstand haben will. Eine Entprellung soltest Du eigendlich nicht benötigen, da es ja egal ist, ob nun ein oder mehrere Tastenbetätigungen für ein Shutdown erkannt werden. Besser wäre es vielleicht, eine Art Mindestbetätigungszeit in das Script einzubauen, um evtl. Fehler zu vermeiden. Allgemein mögliche Fehlerursachen wären noch: Taster ist defekt, eine andere Software greift noch auf GPIO Ports zu, Programmierfehler im Script ( man kann die GPIOs auch per Software Pullup- / Pulldown schalten )

  • Danke erst mal für die Antworten, aber es geht mir nicht um die elektrotechnik, das ist mein beruf.
    Die entprellung soll störspitzen und versehentliches betätigen raus filtern, das klappt auch.

    Es geht mir darum ob es eine möglichkeit gibt zu erkennen welcher prozess auf die GPIOs zugreift.
    Ich konnte den Fehler gestern nicht mehr an pin 11 reproduzieren, lasse den taster aber jetzt auf pin 40.

Jetzt mitmachen!

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