Ideas de interruptores de enclavamiento

Estoy tratando de construir un interruptor de enganche conectado a una puerta y agradecería ideas.

El interruptor está conectado a un pin de entrada del microcontrolador y me gustaría que funcionara de la siguiente manera: cuando una persona abre y cierra la puerta, se traba. Permanece encendido hasta que se restablece en el software.

La idea básica es medir el tiempo transcurrido desde que la puerta se abrió y se volvió a cerrar, y hacer algo en base a eso. Una vez que haya hecho esto, puedo restablecer el interruptor nuevamente. No importa si la puerta se abre o se cierra varias veces.

No estoy seguro de por dónde empezar, así que cualquier idea es bienvenida.

Entonces, ¿tiene una idea de cómo quiere sentir cuándo la puerta está abierta o cerrada, o eso es parte de la pregunta? Además, ¿diría que está interesado principalmente en cuándo se abre y se cierra la puerta, no en un "pestillo"?
Buen punto. Esa es parte de la pregunta :) No me importa cuando la puerta se abre y se cierra, solo que lo haya hecho.

Respuestas (4)

La mayoría de los MCU modernos, como Atmel AVR (utilizado en Arduino), tienen la capacidad de dormir en un estado de muy bajo consumo (< 1 uA) y activarse desde una variedad de fuentes, incluido un temporizador de bajo consumo impulsado por un cristal de 32 kHz o interrupciones por cambio de pin. . El uso de una interrupción de cambio de pin o una interrupción activada por bajo nivel puede despertar el microcontrolador AVR de un apagado profundo. Luego, el estado se puede guardar en una variable de programa. Consulte http://www.atmel.com/avr

Un enfoque alternativo solo de hardware para un interruptor de enganche es el enganche RS construido a partir de dos puertas NOR o NAND de 2 entradas con salida retroalimentada a una de las 2 entradas. Cada vez que la salida sube, la retroalimentación la mantiene en ese estado hasta que la otra entrada sube para restablecer el latch.

Atmelfaebrian

Si tiene un controlador, probablemente tenga sentido usarlo. También puede tener modos de apagado que permiten que un temporizador o rtc siga funcionando para que pueda mantener el tiempo mientras la CPU duerme. Alternativamente, podría usar un RTC externo.

Utilice un sensor de efecto Hall y un imán en la puerta. Si el sensor capta un campo magnético, la puerta se cierra. Sin campo magnético, no cerrado.

Ahora puede sondear periódicamente el sensor a la velocidad que desee (algo largo... ¿250 ms?). Una vez que no detecte ningún campo magnético, puede comenzar a rastrear el tiempo.

Para aclarar, no estás hablando de cerrar la puerta con pestillo, ¿verdad? ¿Solo quieres decir que el interruptor se traba?

Suponiendo que sí: comenzaría con un sensor de ranura óptica y un trozo de cartón adherido a la puerta, y luego haría el bloqueo en el software. Pruebe algo como el Rohm RPI-131 de Digikey.

Sí, no cerrar la puerta con pestillo. Por "bloqueo" quiero decir que el interruptor permanece en algún estado hasta que se reinicia. Sé que es posible hacer que la MCU escuche continuamente, pero preferiría hacerlo solo una vez cada pocos minutos. (Realmente estoy tratando de conservar energía, por lo que mcu pasará la mayor parte del tiempo durmiendo)
Esta es una idea genial, entonces, ¿montaría este sensor en el marco y montaría un trozo de tarjeta en la puerta que rompe el haz cuando la puerta está cerrada? El inconveniente de este enfoque es que este tipo de sensor siempre está encendido y, al mirar la hoja de datos, consume entre 50 y 100 mA.
Apuesto a que podrías resolver eso mecánicamente. Tal vez el cartón en realidad podría ser un trozo de plástico doblado para que encaje en el sensor de la ranura. Cuando la puerta se abre, sale de la ranura y se desdobla, pero cuando la puerta se cierra, no vuelve a encajar en la ranura. (Debería restablecerse a mano, pero por la pregunta, creo que está bien). Entonces, podría apagar el sensor casi todo el tiempo.
Si se realiza un sondeo, el sensor solo debe estar encendido cuando se realiza el sondeo. Colóquelo de modo que el controlador pueda encenderlo/apagarlo.

Haría algo súper simple, como un "interruptor" de contacto y haría la lógica de "bloqueo" en el software. Es decir, basta con utilizar dos piezas de metal, una en la puerta y otra en el marco que se "tocan" cuando la puerta está cerrada y se separan cuando la puerta está abierta. Haga que el pin de entrada tenga habilitado el pullup interno. Conecte el metal que está en el marco a su pin de entrada MCU. Conecte el metal que está en la puerta a GND (común a su MCU GND). Cuando la puerta esté cerrada, esa entrada leerá "0", cuando la puerta esté abierta, esa entrada leerá "1". Creo que incluso puedes despertarte en una transición de nivel lógico en ese pin (creo que así es como funciona de todos modos). También puede combinar esta activación con una activación "periódica" de una interrupción del temporizador como lo sugieren otros.

Estoy de acuerdo. Es más simple hacer que el hardware solo detecte "puerta cerrada" o "puerta abierta", y hacer que el software realice un seguimiento de si la puerta se ha abierto alguna vez, cuánto tiempo ha estado abierta, cuánto tiempo ha estado cerrada, etc. Las "2 piezas de metal" anteriores están bien para la creación de prototipos. Más tarde, es posible que desee cambiar a algún otro sensor de puerta menos vulnerable a la carga estática. -- un imán y un sensor de efecto hall, un punto pintado de blanco y un sensor óptico reflectante, etc. Cualquier cosa que le dé un "0" cuando la puerta está abierta y un "1" cuando la puerta está cerrada.