¿Cómo monitorear el estado del interruptor?

Fondo

Estoy construyendo una aplicación web simple usando raspberry como servidor. Estoy usando esta frambuesa también para controlar un arduino. ¡Un usuario puede enviar comandos a través del navegador a la frambuesa y puede controlar algunas funciones de arduino!

Lo que quiero

ingrese la descripción de la imagen aquí

Quiero usar un arduino para encender y apagar una lámpara, paralelo a un interruptor manual normal que puedo usar para encender y apagar la lámpara, así:

1: Si la lámpara está apagada y el interruptor también está en la posición de APAGADO (interruptor abierto), puedo encender la lámpara usando el interruptor, colocándolo en la posición de ENCENDIDO (cerrando el interruptor). Luego, el sistema de monitoreo le dirá a arduino (y al servidor web) que el interruptor está encendido/cerrado y la luz está encendida.

2: Puedo usar arduino para apagar la luz, sin necesariamente poner el interruptor en la posición de APAGADO. Si la luz está APAGADA (porque la apagué usando un arduino) y el interruptor está en la posición de ENCENDIDO (cerrado), debería cambiarlo a la posición de APAGADO y luego a la posición de ENCENDIDO nuevamente, de manera que pueda sentir estos cambios y enviarlo a arduino (y en consecuencia, al servidor web).

3 (¿Posible mejora?): Cada vez que cambio el estado del interruptor, la luz cambiaría su estado al opuesto al actual: si la luz está encendida, se apaga y viceversa, independientemente del interruptor estado.

El problema

¿Cómo puedo saber realmente si el interruptor está encendido y apagado? ¿Hay alguna forma de usar un sensor, algún circuito electrónico o componente que pueda decir si el interruptor está encendido o apagado? Estaba pensando en usar un relé para controlar la luz, dependiendo del estado de la luz que se almacena en arduino/servidor web. ¿Es esta una forma confiable (quiero decir, usando un relé) para hacer eso?

Agradezco cualquier posible ayuda al respecto, me ha interesado IOT y quiero hacer algunas aplicaciones sencillas para domótica; ¡Este es mi primero! Gracias de antemano por cualquier ayuda, de nuevo.

Respuestas (4)

Para obtener la funcionalidad que describe, debe tener interruptores de "3 vías" (SPDT): uno manual y un relé que controla Arduino. Esto es como tener dos interruptores que controlan las luces desde cualquier extremo de un pasillo, excepto que uno de ellos está controlado por su MCU.

Detectar el estado de la luz es un asunto aparte. Hay muchos circuitos en este sitio y otros para detectar de manera segura la presencia de voltaje de línea en el enchufe de la luz.

¡Gracias por su respuesta! Su enfoque es válido y lo implementaré, aunque todavía me pregunto cómo instalaría dicho sistema en un interruptor SPST simple, aunque no se usan comúnmente como interruptores de lámpara (¿supongo?)
Se utilizan regularmente (¿dónde?) en huecos de escaleras donde hay un interruptor en la parte superior e inferior. Alternar cualquiera de ellos enciende o apaga la luz. Muchos relés son de "3 vías" y usted simplemente los conecta en serie con un segundo interruptor de "3 vías" y la luz. Los interruptores de luz montados en la pared a menudo también son de 3 vías, por lo que pueden conectarse para encender la luz en cualquier configuración o usarse como interruptor de 3 vías.

Como necesitaría controlar la red de todos modos, solo puede conectar relés y luces en serie. El interruptor existente se conecta a GPIO de Arduino. De esta manera, Arduino conoce el estado del interruptor y puede controlar las luces sin conexiones ni sensores adicionales. Existe el problema de que su Arduino tiene que funcionar correctamente para controlar las luces, incluso si solo desea usar el botón físico. Entonces, esta solución solo es apropiada si puede vivir con la incapacidad de cambiar el estado de las luces hasta que repare Arduino.

Respecto a la fiabilidad. Tengo exactamente la misma solución que en esta respuesta y he experimentado algunos problemas menores con el relé que no se desconecta (contactos soldados), por lo que recomendaría comprar un relé de calidad y no una pieza desconocida de eBay, incluso si sus "parámetros" se ven bien.

Si no se siente cómodo trabajando con 120 VCA (podría ser desastroso si no sabe lo que está haciendo), entonces una solución mecánica es mucho más segura. Vas a odiar esto, pero como prueba de concepto, puedes pegar un interruptor de límite en la placa frontal debajo del interruptor de la luz como se muestra en la imagen a continuación (pintarlo de blanco podría hacerlo más tolerable). Usaría una resistencia desplegable para darle una señal ALTA activa que generalmente es más intuitiva. Consulte este tutorial de cambio para obtener orientación.

ingrese la descripción de la imagen aquí

Para una solución más avanzada, reduciría y rectificaría el voltaje a través del interruptor para ver si hay lo mismo en ambos lados del interruptor (CERRADO) o cosas diferentes (ABIERTO). Idealmente, tendría un pequeño transformador reductor de aislamiento entre cualquier voltaje de red y su microcontrolador sensible. Sin embargo, en aras de una solución económica, puede usar condensadores "clasificados X" para el aislamiento. Cualquiera de las soluciones deberá rectificarse a CC para que su microcontrolador pueda leerla y funcione entre 0 y 5 voltios.

esquemático

simular este circuito : esquema creado con CircuitLab

Hermosa salida, diría yo, y solo absorbe alrededor de 25 mW según el simulador (el azul es el voltaje aislado y rectificado y el naranja es el voltaje regulado por zener). ¡Lea esa salida con una de las entradas de su microcontrolador y obtendrá un indicador! (FYI 0V significa que no hay diferencia en el interruptor = CERRADO)

Suministro de voltaje aislado del condensador

Si bien ciertamente es una buena solución para un ingeniero experimentado, sugerir circuitos de voltaje de red a personas que acaban de volverse firmes con cosas de µC es una receta para un desastre mortal.
Buen punto, agregué una solución mecánica. Aunque OP tiene la intención de controlar un relé de 120 V con un microcontrolador, eso también será un desafío con una interfaz de alto voltaje.
¡Gracias por su respuesta! Bueno, no estoy seguro si entendí lo que quisiste decir en el primer párrafo, pero no tengo intención de usar arduino para cambiar la posición del interruptor; Es posible que quiera hacer que arduino sepa si el interruptor está encendido o apagado, ¡pero no quiero usar arduino para cambiar su estado!
Se agregó una imagen para ayudar a visualizar. Esto es voluminoso y antiestético, pero debería funcionar bien una vez que ajuste el posicionamiento para que se dispare. Si va a agregar una caja de proyecto encima o debajo del interruptor de la luz para albergar su equipo IoT, también puede perforar un pequeño orificio de lado a lado a través del interruptor de la luz y luego usar un enlace de cables que llegue hasta la caja de su proyecto. para ocultar toda la electrónica de la vista. El movimiento del interruptor de luz arriba/abajo estaría acoplado al mismo tipo de interruptor de límite en su cuadro de proyecto para leer su posición lineal (arriba o abajo).

Otra idea curiosa que aporto aquí. ¿Existe una solución de sensor optoelectrónico simple que pueda resolverlo? Nos brindan dos ventajas, aislamiento para mantener la seguridad, cambio de nivel de voltaje en las piezas de su MCU. Imagen de que hay una conexión física dentro del interruptor de encendido, cuando está ENCENDIDO para emitir una luz para activar el sensor óptico, obtenemos una señal lógica como 1. Cuando está apagado, no obtenemos señales como 0.

Como está escrito actualmente, su respuesta no está clara. Edite para agregar detalles adicionales que ayudarán a otros a comprender cómo esto aborda la pregunta formulada . Puede encontrar más información sobre cómo escribir buenas respuestas en el centro de ayuda .