Ich habe dies auf dem Raspberry Pi StackExchange gepostet, aber ich habe das Gefühl, dass es hier besser geeignet ist, da die SE sowieso ziemlich inaktiv ist.
Ich habe eine ziemlich einfache Schaltung, die ich gemacht habe, wo ein Bewegungsmelder über eine ziemlich lange Kabelstrecke von ~ 30 Fuß mit einem Raspberry Pi B + GPIO verbunden ist. Der Detektor wird von einer 9-V-Batterie gespeist und das Schema sieht wie folgt aus:
Ich führe ein Python-Skript aus, um die Bewegung aufzunehmen, und es lautet wie folgt:
import RPi.GPIO as gpio
import time
gpio.setmode(gpio.BCM)
gpio.setup(17, gpio.IN)
while True:
print ("LOW","HIGH")[gpio.input(17)]
time.sleep(.5)
Ich erhielt eine Ausgabe, die konstant 9-11 HIGHs war, dann 9-11 LOWs und sich dann wiederholte, und ich fragte mich, was los war, also trennte ich den PIR-Bewegungsmelder und ließ das Kabel an nichts angeschlossen, und ich erhielt das gleiche Ergebnis : eine beständige Schwankung zwischen niedrig und hoch.
Nach meinen Recherchen ist LOW für GPIO ungefähr <0,54 V, während HIGH > 2 V ist. Das Messen der Spannungsdifferenz zwischen dem Kabel und dem GND-Pin des Raspberry Pi (PIN 39) ergibt konstant 0,32 V ohne Schwankungen. Warum passiert das und wie kann ich es beheben?
Fügen Sie einen Pull-up- oder Pull-down-Widerstand hinzu. Versuchen Sie es mit 10k. Wenn das nicht funktioniert, versuchen Sie es mit 1k. Ich vermute, dass Ihr langer Draht einige EMI aufnimmt und der GPIO-Pin mit sehr hoher Impedanz diese in eine Spannung umwandelt, die hoch genug ist, um den Pin-Status zu ändern. Ein Pull-up- oder Pull-down-Widerstand erschwert dies.
Basierend auf dem von Ihnen gelieferten Schaltplan ist Ihr Bewegungsmelder entweder als Kurzschluss verbunden, wobei der GPIO schwebend bleibt, oder er wendet VCC an den GPIO an. Es zeigt nicht, dass es einen gemeinsamen Massebezug gibt. Vielleicht ist die Schaltung falsch.
Stellen Sie zunächst sicher, dass die Schaltkreise an beiden Enden Ihres Kabels eine gemeinsame Referenz (GND) haben. Die Spannung muss relativ zu einer Referenz gemessen werden. Wenn jede Seite des Kabels ihre eigene ungewöhnliche Referenz hat, schwebt der Sensor im Wesentlichen immer auf dem GPIO-Eingang.
Wenn an beiden Enden Ihres Stromkreises tatsächlich eine gemeinsame Masse vorhanden ist, sollten Sie den Eingang mit einem Widerstand entweder hoch oder niedrig ziehen, um sicherzustellen, dass er nicht schwebend bleibt, wenn er offen bleibt. Das angeschlossene Gerät hat möglicherweise bereits einen Pull-up/down, aber einer ist im Schaltplan nicht dargestellt. Selbst wenn Sie ~0 V DC messen, werden am schwebenden Eingang wahrscheinlich einige AC-EMI erfasst, insbesondere wenn ein 30-Fuß-Kabel angeschlossen ist.
Mit einem so langen angeschlossenen Kabel können Sie, selbst wenn der Eingang nicht erdfrei ist, genug EMI aufnehmen, um die schwache Antriebsstärke Ihres Sensors zu überwältigen.
sherrelbc
rund
sherrelbc
Scott Seidmann