Apague arduino a través del software

4

Tengo un arduino que es alimentado por una batería de bloque de 9v y habilitado por un interruptor. Quiero cambiar el curcuit, de modo que cuando se apaga el interruptor, el arduino permanezca encendido hasta que finalicen ciertas acciones, y luego se apague.

Sin embargo, no solo quiero que el arduino se duerma, la alimentación debe estar desconectada. 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 se apaga el interruptor, el arduino sigue recibiendo alimentación a través del relé. El arduino detecta cuando el interruptor está apagado (el interruptor es bipolar, por lo que puedo detectar su estado con un pin de entrada digital) y apaga el relé cuando las acciones restantes están terminadas.

¿Hay una mejor manera de usar un relé? ¿Puedo usar un mosfet o algo más en lugar del relé?

Y quizás, en el futuro, necesitaré 9V para componentes adicionales, que también deberían apagarse cuando el arduino decida apagarse. Pero cuando el relevo / mosfet / ..? se coloca entre la batería y el arduino VIN Puedo conectar esos entre el relé / mosfet / ..? y el arduino. Así que esto debería ser simple.

Editar: Basándome en la respuesta de Passerbys, se me ocurrió esto:

El motor es solo un marcador de posición para mis componentes adicionales que agotan la energía de la batería y también deben apagarse.

    
pregunta Johannes

2 respuestas

6

Un sistema que uso comúnmente:

simular este circuito : esquema creado usando CircuitLab

M1 normalmente se mantiene APAGADO por R1. SW1 tire de la puerta M1 BAJA cuando se presiona para encender M1. Eso entonces le da poder al Arduino.

La primera operación que realiza el 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 BJT NPN) . Eso evita el interruptor SW1 manteniendo el sistema encendido.

El interruptor se puede liberar y la alimentación permanece activada.

El Arduino puede liberar el GPIO ya sea conduciéndolo BAJO o configurándolo en ENTRADA (R3 lo bajará en ese caso) apagando M2, lo que permite que R1 levante la compuerta de M1 apagándolo.

El único aspecto negativo 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 (aproximadamente 2 segundos) antes de que la energía permanezca encendida. Puede ser beneficioso agregar un LED (y una resistencia limitadora de corriente asociada) al GPIO que controla la puerta de M2 para que obtenga una retroalimentación visual de "encendido" (o podría usar un GPIO si lo desea) para que pueda saber cuándo has sostenido el botón el tiempo suficiente.

    
respondido por el Majenko
0

Un transistor pnp de lado alto o mosfet de canal p con una resistencia pull up en su base / compuerta entre el regulador de 5 V y el circuito de accesorios. Cuando su arduino se ponga en reposo, configure el pin de control alto o el modo de entrada para apagar el transistor. Cuando necesites el poder, baja el pin.

Un relé es demasiado grande y agotará su batería de 9V muy rápido.

    
respondido por el Passerby

Lea otras preguntas en las etiquetas