Uso del temporizador para encender/apagar un circuito de alta corriente

Estoy trabajando en un proyecto de Arduino que toma medidas del entorno y las envía a un servidor remoto a través de WiFi. El circuito debe funcionar con batería y he medido que lo que tengo en este momento consume alrededor de 160 mA de corriente, lo que hace que sea imposible funcionar con batería más de un par de días. Lo bueno es que basta con alimentar el circuito una vez por hora y dejarlo funcionar aproximadamente un minuto y luego apagarlo.

Así que estaba pensando en crear un circuito temporizador de muy baja potencia que alimentaría mi circuito principal durante un minuto cada hora. Desafortunadamente no tengo ni idea de cómo hacer eso :). Traté de investigar y creo que podría ser posible con IC 555, pero si entendí la hoja de datos correctamente, consume alrededor de 3-6 mA de corriente, lo cual es un poco demasiado.

¿Alguien tiene alguna idea para señalarme la dirección correcta?

¿Puedo sugerir que si no le importa que su procesador esté funcionando todo el tiempo, simplemente puede usar Millis() para obtener la marca de tiempo y simplemente hacer el ciclo de encendido/apagado cada 3600 segundos ( * 1000 para milisegundos, todas las variables largas sin firmar ¡tipos de datos!)
de lo contrario, aprenda cómo hacer que su arduino se duerma, y ​​use el pin de interrupción externo y haga lo que sugiere Motoprogger con un temporizador 555 y despierte y cuente + 1 cada vez que se despierte, una vez por segundo, hasta que la variable del contador llegue a 3600 y luego haga su operación durante 1 minuto según sea necesario, luego regrese a la operación dormir-esperar-contar

Respuestas (3)

Una hora es demasiado para un temporizador 555 o cualquier otro oscilador. Una mejor solución podría ser un multivibrador de 1 Hz (un chip 4011 consume menos de 0,5 mA a 1 MHz, e incluso menos a 1 Hz) y un contador para contar hasta 3600.

Esa es una idea muy buena, estoy de acuerdo con esta. Espero que por contador quiera decir que Arduino solo cuenta la cantidad de veces que el pin sube (recuento de borde ascendente, o simplemente despertar en interrupción y contar ++, luego dormir si no es> = 3600)
Si no está satisfecho con el consumo de corriente de 6 mA del 555, ¿estaría satisfecho con el Arduino siempre activo?
¿Por qué no hacer que el arduino se despierte con una interrupción externa activada por la señal del temporizador 555 de 1 Hz (o incluso 0,2 Hz, no importa), haga un conteo y luego duerma si no cuenta> = 3600?

Si tiene un Arduino y busca tanto tiempo, ¿por qué no comprar un complemento RTC para Arduino? No son tantos y de esa manera puede obtener una precisión decente durante largos períodos de tiempo.

http://playground.arduino.cc/Main/DS1302

El ATmega en la placa arduino tiene algunas funciones de suspensión , lo que hará que no consuma prácticamente energía.

El ATMega328 tiene incorporado un temporizador de vigilancia. Puede configurarlo hasta en 8 segundos. Simplemente colóquelo SLEEP_MODE_PWR_DOWNy el perro guardián lo despertará nuevamente en 8 segundos. Haga esto 450 veces y obtendrá una hora de sueño, con solo unos pocos ms de tiempo de CPU.

La otra cosa es hacer que el módulo Wifi duerma también.

Y tal vez desoldar algunos de los LED en la placa arduino para reducir el consumo de energía.

Es una buena opción deshabilitar los sensores además de wi-fi antes de configurar el microcontrolador para dormir.