Estoy tratando de usar un RPi3 para emitir/controlar una lámpara usando este módulo de relé.
También quiero poder leer desde un botón y un interruptor.
El problema que tengo es que parece que cambiar el relé introduce ruido en la entrada GPIO y crea falsos positivos.
El RPi y el módulo de relés se encuentran en un gabinete para exteriores de 190 mm x 145 mm x 140 mm. Ellos tienen razón el uno al otro.
Intenté usar un relé de estado sólido y eso resolvió el problema de la interferencia, pero preferiría usar un relé convencional debido al tamaño y precio.
Intenté ver el ruido captado por el GPIO usando un osciloscopio USB digital Hantek económico, pero desafortunadamente no pude ver nada. Sigo esperando para comprobar con mi osciloscopio analógico. Además, estoy pensando en probar el cable blindado desde el botón pulsador y cambiar al GPIO y también envolver el módulo de relé en una malla metálica conectada a tierra para crear una jaula de Faraday.
Hasta ahora he intentado poner un filtro de paso bajo para cada entrada.
El primer circuito que probé fue: C1 - 10n y 100n
simular este circuito : esquema creado con CircuitLab
Luego probé un filtro de paso bajo:
R1 - 100 y 1k
C1 - 1u, 10n, 100n
También probé con GPIO pull-up encendido y apagado
En cualquier caso ninguno de ellos mejora el resultado.
Por el lado del software, estoy usando Python, RPi.GPIO event_detect; Intenté aumentar el tiempo de rebote e insertar un retraso después de la detección de eventos para "filtrar" los eventos generados por humanos, pero esto solo funcionaría para el caso del botón pulsador, no para el interruptor.
Cualquier consejo sería apreciado.
ACTUALIZACIÓN : este módulo de relé inserta mucho ruido, probé con la porción de RPI HAT de verdad y el mismo código funcionó bien, pudo detectar cualquier falso positivo en una prueba rápida.
este es el codigo:
#!/usr/bin/python
import RPi.GPIO as GPIO
import time
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.setup(24, GPIO.OUT)
GPIO.setup(26, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(20, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(23, GPIO.IN, pull_up_down=GPIO.PUD_UP)
def read2(channel):
print "GPIO 2"
def read20(channel):
print "Button"
def read23(channel):
print "Switch"
if __name__ == '__main__':
GPIO.add_event_detect(26, GPIO.BOTH, callback=read2, bouncetime=300)
GPIO.add_event_detect(20, GPIO.BOTH, callback=read20, bouncetime=300)
GPIO.add_event_detect(23, GPIO.BOTH, callback=read23, bouncetime=300)
while True:
pass
Independientemente, todavía estoy buscando cómo poder usar esa placa.
Debería poder recuperar su interruptor en el software. Siempre es una buena práctica "tirar" de la entrada en la dirección opuesta a la acción del interruptor usando una resistencia de 10k ohm o más.
Con respecto a los transitorios de conmutación del relé, parece que hay diodos de amortiguamiento en las bobinas del relé. Entonces, intentaría colocar un capacitor de 100 uF o más grande directamente a través de los terminales de la fuente de alimentación de la placa de relés. Esto ayudará a "mantener" el suministro de 5 voltios a la placa cuando el relé esté energizado.
Me he enfrentado exactamente al mismo problema y justo antes de volverme loco, encontré la causa raíz y la solución.
Su problema es que la detección de borde es muy, muy, muy, muy sensible a los picos de voltaje. Probablemente verá detecciones falsas incluso cuando encienda o apague otros equipos en su casa.
Para superar este problema, simplemente coloque un retraso de suspensión de 10 ms en sus definiciones de devolución de llamada y lea el estado del pin nuevamente; si sigue igual que realizar la acción, de lo contrario, solo fue un pico. Los condensadores pueden ayudar, pero deben diseñarse de una manera específica para que la sincronización sea perfecta, también tienen un comportamiento de carga y descarga diferente, ¡así que esto es bastante difícil!
Eche un vistazo a: https://www.raspberrypi.org/forums/viewtopic.php?t=134394 para obtener información real y adecuada. ¡Espero que tengas éxito!
No estoy seguro de si se aplica, pero existen múltiples problemas posibles con estos relés.
A menos que el módulo de relé los proporcione (no pudo encontrar la hoja de datos del módulo), debe hacerlo usted mismo. Ahora, dado que el módulo está diseñado para Arduino, que, AFAIK, tiene GPIO de 5 V, existe una alta probabilidad de que al menos p. 1 está en el lugar. Es decir, el módulo espera 5 V como voltaje de control y tratar de controlarlo con 3.3 V RPi GPIO conduce a una operación inestable.
Por fin, un límite de 100 uf en el tablero de relés entre VCC y GND resolvió los problemas de falsos positivos.
No es necesario cambiar de nivel.
Gracias a todos.
ACTUALIZACIÓN : ¡Falsa alarma! estaba probando sin carga (LAMP) no funciona con el módulo de relé o RPi HAT.
Estoy empezando a creer que estoy tratando de hacer algo imposible. creo que solo me quedan las opciones de SSR y/o "antirrebote" de software...
Andrei Pro
chris stratton
maco1717
maco1717
maco1717
Andrei Pro
maco1717
prasan dutt
maco1717
prasan dutt
maco1717