Ich habe in letzter Zeit viel mit dem Raspberry Pi gespielt. Aber ich habe ein Problem.
Wenn ich einen Eingangs-Pin einrichte, um zu überprüfen, ob Strom an ihn gesendet wird oder nicht, er gibt mir ziemlich instabile Antworten.
Einige Beobachtungen, die ich gemacht habe, um mein Problem zu klären:
Wenn ich die Schaltung anschließe und Strom an den Eingangsanschluss fließt, ist der Wert, den ich erhalte, durchgehend WAHR oder 1.
Wenn ich den Stromkreis unterbreche, indem ich eine LED entferne, die ein Teil davon ist (wenn der Eingangswert 0 sein sollte), erhalte ich zufällige Werte, die zwischen 0 und 1 wechseln.
Wenn ich alle Kabel von meinem Pi entferne, erhalte ich den konsistenten Wert 0
Wenn ich alle GPIO-Kabel entfernt habe, gibt es mir den Wert 0, aber wenn ich einfach den Eingangsstift mit einem Stück stromführendem Metall berühre (was am anderen Ende zu nichts führt), beginnt es wieder mit den Zufallswerten. Es gibt mir keine zufälligen Werte, es sei denn, ich habe auch etwas mit dem Ausgangs-Pin verbunden. Es muss nirgendwo hinführen, es muss nur den Ausgangspin berühren. Und ein anderes Stück Metall muss den Eingangsstift berühren. Überhaupt keine Verbindung zwischen ihnen.
Ich frage mich, warum mir zufällige Werte angezeigt werden, wenn der Eingangs-GPIO-Pin ein Metall berührt.
Und noch interessanter ist, warum gibt es mir konstante Einsen oder WAHREN, wenn ich tatsächlich Elektrizität dorthin schicke?
Antworten:
Das Problem
Stimmt, aber was passiert, wenn Masse mit dem GPIO-Eingangspin verbunden ist? Der Wert, den es geben würde, wäre immer falsch .
Wenn nichts angeschlossen ist, befindet sich der Pin in einem "schwebenden" Zustand und der Ausgang ist nicht vorhersehbar. es ist in einem undefinierten Zustand, es ist weder 0 noch 1, und der erkannte Wert kann sich merkwürdig ändern, daher Ihre zufälligen Ergebnisse. In der Elektronik ist dies als dritter Zustand bekannt .
Einige Details von a Wikipedia-Artikel :
Die allgemeine Lösung
Die Lösung ist ein Pulldown-Widerstand . Stellen Sie sich dies als eine zusätzliche Komponente vor, die nichts tut, wenn die Leitung eine 0 oder 1 erhält. Wenn die Leitung jedoch frei ist, tritt sie plötzlich in Aktion und gibt eine 0 aus.
Die Himbeer-Pi-Lösung
Glücklicherweise hat der Rpi ein eingebautes Pulldown-Menü, das Sie programmgesteuert aktivieren müssen. Hier ist ein Python-Skript dafür:
Randnotiz
Schließen Sie die Stromversorgung nicht direkt an den Stift an, da dies gefährlich wäre! Stellen Sie sicher, dass im Stromkreis genügend Widerstand vorhanden ist. Schließen Sie außerdem niemals die 5-V-Stromversorgung direkt an den GPIO an, da dieser nur 3,3 V akzeptiert.
quelle