Tengo un arduino que funciona con una batería de bloque de 9v y está habilitado por un interruptor. Quiero cambiar el circuito, para que cuando se apague el interruptor, el arduino permanezca encendido hasta que finalicen ciertas acciones, y luego se apague.
Sin embargo, no solo quiero que el arduino duerma, la alimentación debe desconectarse. Esto es importante porque tengo componentes adicionales que consumen energía del pin de 5 V (alrededor de 300 mA) y quiero que también se apaguen.
Mi primera idea fue usar un relé en paralelo al interruptor. Cuando se enciende el interruptor, el arduino también enciende el relé. Cuando el interruptor está apagado, el arduino todavía se alimenta a través del relé. El arduino detecta cuando el interruptor está apagado (el interruptor es de doble polo, por lo que puedo detectar su estado con un pin de entrada digital) y apaga el relé cuando finalizan las acciones restantes.
¿Hay una mejor manera que usar un relé? ¿Puedo usar un mosfet o algo más en lugar del relé?
Y tal vez, en el futuro, necesitaré los 9V para componentes adicionales, que también deberían apagarse cuando el arduino decida apagarse. Pero cuando el relé/mosfet/..? se coloca entre la batería y el VIN de arduino. ¿Puedo conectarlos entre relé/mosfet/..? y el arduino. Así que esto debería ser simple.
Editar: según la respuesta de Passerbys, se me ocurrió esto:
El motor es solo un marcador de posición para mis componentes adicionales que consumen energía de la batería y también deben apagarse.
Un sistema que uso comúnmente:
simular este circuito : esquema creado con CircuitLab
M1 normalmente se mantiene APAGADO por R1. SW1 tira de la compuerta M1 BAJA cuando se presiona para encender M1. Eso luego proporciona energía al Arduino.
La primera operación que realiza Arduino es conducir el GPIO conectado a la puerta de M2 (que debe ser un FET de "nivel lógico" con un umbral lo suficientemente bajo como para conducir directamente con un Arduino; también puede usar un NPN BJT). Eso luego pasa por alto el interruptor SW1 manteniendo el sistema encendido.
Entonces se puede soltar el interruptor y la alimentación permanece encendida.
El Arduino puede liberar el GPIO llevándolo a BAJO o configurándolo en ENTRADA (R3 lo bajará en ese caso) apagando M2, lo que luego permite que R1 levante la puerta de M1 apagándolo.
El único inconveniente de este circuito cuando se trabaja con un Arduino es que debe mantener presionado el botón de encendido el tiempo suficiente para que el cargador de arranque termine de ejecutarse (alrededor de 2 segundos) antes de que la alimentación permanezca encendida. Puede ser beneficioso agregar un LED (y una resistencia limitadora de corriente asociada) al GPIO que impulsa la puerta de M2 para que obtenga una respuesta visual de "encendido" (o podría usar un GPIO separado si así lo desea) para que pueda saber cuándo ha mantenido presionado el botón el tiempo suficiente.
Un transistor pnp de lado alto o un mosfet de canal p con una resistencia pull up en su base/compuerta entre el regulador de 5 V y su circuito accesorio. Cuando su arduino se vaya a dormir, configure el pin de control alto o el modo de entrada para apagar el transistor. Cuando necesite energía, baje el pin.
Un relé es demasiado grande y agotará su batería de 9V muy rápido.
Jim
Nick Alexeev