GPIO schaltet schon beim bloßen Berühren EINES Pins durch

L I V E Stammtisch ab 20:30 Uhr im Chat
  • Liebe Community,
    ich habe ein Problem.
    Und zwar schaltet mein PI schon beim bloßen Kontakt mit meiner Hand an EINEN Pin durch, und lässt die LED blinken.

    Ist das wirklich normal? Ich hab es auch mit einem Kabel ausprobiert. Ich muss nur ein kleines (leicht isoliertes) Kabel festhalten, und mit diesem den Pin anticken, dann schaltet der direkt durch...

  • GPIO schaltet schon beim bloßen Berühren EINES Pins durch? Schau mal ob du hier fündig wirst!

  • -> Elektrostatische Aufladung des Körpers

    Und auch in diesem Zusammenhang sollte erwähnt werden das man genau deswegen nicht ohne Erdung irgendwo an der Platine anfassen sollte - man kann diese dadurch nämlich auch durchaus beschädigen

  • Das Problem ist wirklich extrem, der schaltet manchmal selbstständig einfach durch, während ich Deine Antwort lese...

    Es reicht auch eine Berührung des Flachkabels, was den Pi mit meinem Elektronikboard verbindet :-/

    Die statische Aufladung des Körpers leuchtet mir ja ein, aber wieso hat der durchgeschaltet als ich nur hier saß und gelesen habe?

    Und wenn ich vom Stuhl aufstehe, schaltet der auch :D Ist das wirklich normal?

    Einmal editiert, zuletzt von osxHandler (20. November 2014 um 15:21)


  • Die statische Aufladung des Körpers leuchtet mir ja ein, aber wieso hat der durchgeschaltet als ich nur hier saß und gelesen habe?


    Warst halt noch nicht "ganz" entladen, nach deiner letzten Aktion :D
    Bei solchen Aktionen ... Taster...etc, den internen Pulldown zuschalten, das bewirkt oft Wunder.

    gruß root

  • Hallo,

    jo, Du kannst für jeden GPIO nen PullUp oder Pulldown zu-abschalten.

    Beispiel für C:

    Code
    gpioSetMode(16, PI_INPUT);
    	gpioSetPullUpDown(16, PI_PUD_DOWN);


    oder Python

    Code
    GPIO.setup(16, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)

    GPIO 16 wird Eingang mit Pulldown.
    Verhindert Störsignale die da rumschwirren, durch den ~50kOhm R der am GPIO hängt, auf Masse ziehen.

    gruß root


  • Also muss ich zusätzlich wie oben stehend zum Code noch meine Schaltung ändern?


    Nein, an der Schaltung selbst wird nix geändert.
    Nur im Proggi.
    Nicht durcheinander bringen lassen, das ist nur die schematische Darstellung eines GPIO Pins.
    Damit man sich den Pullup/down vorstellen kann, und wie der funktioniert.

    Einmal editiert, zuletzt von root (20. November 2014 um 16:16)

  • Ich empfehle für Schaltungen immer externe Pulls zu nehmen. Grund dafür ist, dass ich oft Klassen zum Programmieren nutze, die ich oder jemand anderes schon mal entworfen hat. Besteht da nicht die Möglichkeit die Pulls zu aktivieren, steht man oft mit seiner Hardware dumm da. Erst recht, wenn man gar nicht programmieren will, sondern fertige Programme nutzen möchte. Die internen Pulls sind vom Hersteller eingebaut, weil der davon ausgeht, dass sein Chip in einem Gerät steckt und dort immer das gleiche tut. Also USB ist immer USB, Ausgang ist immer Ausgang und Eingang ist immer Eingang.
    Übrigens hat das Schalten der GPIOs sehr wenig mit statischer Aufladung zu tun. Es ist eher die gegenseitige Beeinflussung der Bauteile auf dem Chip, die bei offenen Aus- und Eingängen auftreten. Zudem hängen diese Zustände auch noch von Fertigungstolleranzen ab, sind also nie vorhersehbar. Also immer Pulls nutzen! Egal welche!


  • ...
    Nein, an der Schaltung selbst wird nix geändert.
    Nur im Proggi.
    ...


    stimmt zwar, ich verbaue allerdings die pullups/pulldowns als reale Widerstände in einer Schaltung.
    Damit sind alle Klarheiten beseitigt ;) ...
    Die internen sieht man halt nicht, und wenn das nicht dokumentiert ist, wunderst Du Dich später, warum die Schaltung nicht (mehr) funktioniert :) ...

    //EDIT: da war Jörg jetzt schneller ...

    cu,
    -ds-

  • Wie man es macht, intern oder extern - macht aber erst mal keinen Unterschied?
    Wenn man wie oben von dreamshader arbeitet, macht es wirklich Sinn mit externen Pulldowns zu arbeiten - jetzt weiß ich auch was da passiert - hab mich da gerade mal reingelesen!

    Auf den ersten Blick scheint es mit den internen Pulldowns zu funktionieren - ich lasse das über Nacht einfach mal loggen :)

    Vielen Dank für die Hilfestellung!

    Einmal editiert, zuletzt von osxHandler (20. November 2014 um 16:31)


  • Wie man es macht, intern oder extern - macht aber erst mal keinen Unterschied?

    stimmt ausser das die internen sehr hochohmig sind und starke Störungen die auch überlisten können, deswegen bin ich ein Freund von externen pullup/pulldown.

    ausserdem kann jederzeit eine Software ein Firmwareupdate oder sonst wer z.B. EMV deinen internen pullup/pulldown abschalten und du merkst es nicht!

    Klar könnte man einen cronjob fahren der immer den Status pullup/pulldown aktiv zeigt, aber wer macht das?

    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)

  • Hi,

    Das "zufällige" schalten kann man wunderschön beobachten indem man z.b. das gpio Tool(wiringPi) mit dem Tool watch(vorinstalliert) kombiniert.

    Code
    watch -d -n.1 "gpio readall"

    Kurz erklärt:
    Der Befehl "gpio readall" wird von watch immer wieder und wieder in einem bestimmten Intervall ausgeführt wobei man Änderungen in der Ausgabe recht gut beobachten kann. Die Anführungszeichen sind hier eigentlich nicht nötig und dienen nur der besseren lesabarkeit. Mit Strg + c beendet man das ganze wieder.

    Mit der Option -n kann der Aktualisierungs-Intervall in Sekunden festgelegt werden(standard ist 2 Sekunden) und mit der Option -d werden alle Anderungen seit der letzten aktualisierung hervorgehoben. Im Beispiel oben wird ein Interval von 0.1 Sekunden(kurz .1) festgelegt.


    PS: Bei mir reicht es schon aus(gpios schalten) wenn ich mit meinem alten Laptop auch nur in die Nähe (ca. halber meter) des Pi komme. :)

    Grüße,
    Joh

    DON'T PANIC!

    Einmal editiert, zuletzt von joh.raspi (20. November 2014 um 21:58)

  • So, besten Dank an Alle die den internen Pulldown jetzt verteufelt haben ... :lol::lol::lol:

    Nein, jetzt im ernst.
    Natürlich ist es ratsamer nen externen zu nehmen, der viel weniger als 50kOhm hat.
    Aber nur für Testzwecke reicht sowas allemal.
    Wichtig ist nur, dass der TE (nach reinlesen wie er sagte) den Sinn und Zweck verstanden hat.
    gruß root

  • PS: Bei mir reicht es schon aus(gpios schalten) wenn ich mit meinem alten Laptop auch nur in die Nähe (ca. halber meter) des Pi komme. :)

    Sowas konnte ich hier auch reproduzieren ;)
    Aber jetzt funktioniert es wunderbar - bei Gelegenheit werde ich dann wirklich mal auch einen externen Pulldown in die Schaltung implementieren!

    Danke Euch allen! :)

Jetzt mitmachen!

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