Entrada GPIO que fluctúa entre alta y baja cuando no se recibe ninguna entrada

Publiqué esto en Raspberry Pi StackExchange, pero siento que podría ser más adecuado aquí, ya que el SE está bastante inactivo de todos modos.

Tengo un circuito bastante simple que hice donde un detector de movimiento está conectado a un Raspberry Pi B + GPIO a través de un tramo de cable bastante largo de ~ 30 pies. El detector está siendo alimentado por una batería de 9V y el esquema es el siguiente:

Esquema PIL

Estoy ejecutando un script de python para captar el movimiento y es el siguiente:

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)

Obtuve una salida que era consistentemente 9-11 ALTOS, luego 9-11 BAJOS y luego se repetía, y me preguntaba qué pasaba, así que desconecté el detector de movimiento PIR, dejé el cable sin conectar a nada, y obtuve el mismo resultado. : una fluctuación constante entre mínimo y máximo.

De mi investigación, LOW para GPIO es aproximadamente <0.54V mientras HIGH es> 2V. Al medir la diferencia de voltaje entre el cable y el pin GND de Raspberry Pi (PIN 39), obtengo 0,32 V de manera constante, sin fluctuaciones. ¿Por qué sucede esto y cómo puedo solucionarlo?

¿Has probado a no usar el cable? Es posible que su sensor no pueda manejar la carga capacitiva que introduce el cable de 30 pies. Prueba a acercar mucho más el sensor y observa cómo se comporta.
@sherrellbc Funciona bien cuando está conectado directamente. La distancia del cable no se puede disminuir, y preferiría tenerlo cableado en lugar de enviar una señal inalámbrica. ¿Alguna idea de cómo evitar esto?
Si este es realmente el problema, necesitará un controlador de línea adicional para que funcione. Aunque, puede ser que el cable muestre sus características de antena no ideales y capte EMI. En este caso, podría intentar usar un cable blindado. Aún así, no puedo imaginar que su sensor PIR tenga mucha capacidad de manejo.
¿ Estás realmente enviando 9V a un pin en el RPi?

Respuestas (2)

Agregue una resistencia pull-up o pull-down. Prueba 10k. Si eso no funciona, intente 1k. Supongo que su cable largo está captando algo de EMI y el pin GPIO de muy alta impedancia lo está convirtiendo en un voltaje lo suficientemente alto como para cambiar el estado del pin. Una resistencia pull-up o pull-down hará que esto sea más difícil.

Según el esquema que proporcionó, su detector de movimiento está conectado como un corto, dejando el GPIO flotando o aplica VCC al GPIO. No muestra que haya una referencia de terreno común. Quizás el circuito es incorrecto.

Primero, asegúrese de que los circuitos en ambos extremos de su cable compartan una referencia común (GND). El voltaje debe medirse en relación con una referencia. Si cada lado del cable tiene su propia referencia poco común, entonces el sensor esencialmente siempre está flotando en la entrada GPIO.

Si de hecho hay una conexión a tierra común en ambos extremos de su circuito, debe subir o bajar la entrada con una resistencia para asegurarse de que cuando se deja abierta, no se quede flotando. Es posible que el dispositivo conectado ya tenga un menú desplegable, pero no se muestra en el esquema. Incluso si mide ~ 0 V CC, es probable que se detecte algo de EMI de CA en la entrada flotante, especialmente con un cable de 30 pies conectado.

Con un cable tan largo conectado, incluso si la entrada no está flotando, es posible que esté captando suficiente EMI para abrumar la fuerza de transmisión débil de su sensor.

Para bajar la entrada, ¿podría simplemente conectar una resistencia de 10k desde el cable de control a tierra antes de que llegue al gpio?
@globby, si está utilizando un sensor PIR y manejando la línea con la "salida" de este sensor, es probable que esto ya se haya hecho por usted; verifique la hoja de datos para estar seguro, pero supongo que la salida es alta o baja y nunca flota.
@sherrellbc Esto es cierto, por supuesto, depende del circuito/dispositivo conectado. Según el esquema simple proporcionado en la pregunta, parece un flotador (muy bien podría ser algo diferente).
El sensor PIR es directamente de Adafruit. adafruit.com/products/189 No proporcionan una hoja de datos definitiva que pueda encontrar, excepto esta: learn.adafruit.com/system/assets/assets/000/010/136/original/… que tiene poca información y no es el modelo exacto que venden (aunque lo referencian)
no compre un sensor sin una hoja de datos definitiva.