Encienda Arduino con temporizador cada 24 h

9

Actualmente estoy trabajando en un proyecto Arduino que me envía la carga de la batería de mi automóvil una vez al día a través de un ESP8266. Durante el invierno no conduzco mi automóvil, y me gustaría que me informen cuando la batería caiga más allá de un valor crítico, para poder cargarla y evitar daños.

Por lo tanto, la eficiencia energética es importante para el proyecto, por lo que no descarga la batería en sí. Leí mucho sobre el modo de suspensión, reguladores desplegables eficientes, etc. Todos estos tienen en común que el regulador de voltaje siempre está funcionando, que no es lo que quiero.

Estoy buscando algún tipo de "circuito swich-on-timer". Debe contar las 24 horas y luego encender un relé o MOSFET, que conecta el regulador de voltaje a la alimentación y con eso enciende el Arduino y el ESP8266. Cuando el Arduino ha terminado con la transmisión, restablece el temporizador, que desconecta el regulador de voltaje de la alimentación, y así sucesivamente. Por supuesto, el circuito del temporizador debe usar muy poca energía.

¿Alguien conoce un circuito como ese? Busqué en AliExpress con todas las variaciones de palabras que me vinieron a la mente, sin éxito. ¿O tal vez un IC que se puede usar (fácilmente) para crear dicho circuito?

Dirk Pitt
fuente
1
No todos los reguladores de voltaje son iguales. Algunos solo usarán unos pocos micro amplificadores.
Gerben
Pensando fuera de la caja ... ¿No será suficiente un interruptor de temporizador estándar ?
usuario31208

Respuestas:

5

Un enfoque sería el uso de un módulo DS3231 (Precision Real Time Clock). Dichos módulos se venden en Ebay por menos de $ 1. Buscar ds3231 arduino.

Por lo general, estos módulos tienen un conector de seis pines, con pines etiquetados como 32K, SQW, SCL, SDA, VCC y GND. Como se señaló en las especificaciones DS3231, el pin INT / SQW se usa para salida de onda cuadrada o para salida de interrupción. En la página 13 de las especificaciones, en la sección Registro de control, dice:

Bit 2: Control de interrupción (INTCN). Este bit controla la señal INT / SQW. Cuando el bit INTCN se establece en 0 lógico, se emite una onda cuadrada en el pin INT / SQW. Cuando el bit INTCN se establece en la lógica 1, una coincidencia entre los registros de cronometraje y cualquiera de los registros de alarma activa la salida INT / SQW (si la alarma también está habilitada).

Inicialmente, ejecutaría un boceto para configurar el DS3231: active una alarma diaria, active una interrupción en lugar de una onda cuadrada, configure la hora actual, etc. Luego, cargue un programa operativo que lea el voltaje de la batería del automóvil cada vez que se ejecute y actúa de manera apropiada.

El pin DS3231 INT / SQW se conectaría a la puerta de un mosfet de canal P que conmuta la alimentación de 12V al Arduino. El P-fet se encenderá cuando se active el pin de salida de drenaje abierto INT / SQW de la alarma. El programa operativo hace su trabajo y luego borra la bandera de interrupción DS3231, para apagar la alimentación hasta que ocurra la próxima alarma. (Para la depuración, establezca intervalos más breves que un día; por ejemplo, una vez por minuto, como se describe en la Tabla 2, Bits de máscara de alarma, en la página 12 de las especificaciones).

Por lo general, el DS3231 consume 0,84 μA cuando se ejecuta con una batería de 3,3 V, o 1 μA de 5V. Consulte Características eléctricas, página 3 de las especificaciones.

James Waldby - jwpat7
fuente
1
La compuerta P-fet probablemente debería subirse a +12 a través de algo así como una resistencia de 1 megaohmio; de lo contrario, estaría efectivamente abierto cuando el pin INT / SQW esté apagado, y podría flotar a niveles arbitrarios
James Waldby - jwpat7
3

El temporizador o el circuito temporizador en sí mismo tendrían que extraer algo de corriente. Cualquiera de los chips AVR pico-power consume muy poca corriente en el modo de suspensión, en los 10s de microamplificadores para el 328, si no recuerdo mal. Dormir un AVR para el menor consumo de corriente necesita casi todo apagado, excepto el temporizador de vigilancia, y el período máximo de WDT es de 8 segundos. Una biblioteca como Narcoleptic administrará períodos más largos para usted. Sin embargo, lo que debe hacer es proporcionar una fuente de alimentación regulada mucho más eficiente que la integrada en la placa Arduino (si eso es lo que usará). Hecho esto, la carga del Arduino en la batería de su automóvil debe ser microscópica.

Un posible diseño para un suministro eficiente es un conjunto de baterías alcalinas, digamos 3 en serie para una salida de 4.5 (mientras está fresco) multiplicado por 2 o más de tales cadenas en paralelo, conectadas directamente al bus de 5v.

No he hecho el presupuesto de energía para saber la capacidad que necesitaría y si necesitaría celdas D o podría hacer una matriz práctica de las más pequeñas, digamos AA, pero esa es una manera de lograr una carga cero en la batería del automóvil (descontando los requisitos del sensor de voltaje de la batería del automóvil). Es posible que desee incluir el estado del conjunto de baterías Arduino en el informe diario, o, por el precio de unos pocos alcalinos, podría sobre-diseñar la batería Arduino para que el monitoreo no sea necesario.

Un par de puntos de datos sugieren que una batería separada es un enfoque factible:

  • Un solo alcalino de 9v funciona con un detector de humo durante más de un año, incluido el invierno en un ático sin calefacción (en mi propia experiencia), y los alcalinos de 9v no son conocidos por su capacidad.
  • Mi termostato digital de retroceso ha funcionado durante un par de años en 2 celdas AA, antes de que a) murieran, yb) me di cuenta y comencé a cambiarlas anualmente. :)
JRobert
fuente
Tengo un ATmega48 (muy similar al 328P) que funciona con un par de celdas AA desde junio de 2012. Está despierto durante un poco más de 4 minutos por día y duerme el resto del tiempo. No ha cambiado las baterías hasta ahora.
Edgar Bonet
Es un tiempo de ejecución impresionante: ¡gracias por el punto de datos adicional, @EdgarBonet! Esperaba que un Arduino dormido y una batería alcalina pudieran ser un sistema de "configúralo y olvídalo", pero sin calcular el consumo de energía, no pensé que funcionaría tan bien. Entonces, @DirkPitt, hay algunos datos de soporte del mundo real.
JRobert
No es un Arduino completo: no pude lograr estar por debajo de ~ 40 mA con mi Uno, mientras que el ATmega desnudo SLEEP_MODE_PWR_SAVE, con solo el temporizador asíncrono activo, tomó algo como 2 µA.
Edgar Bonet