Encienda arduino con RTC Alarm

3

Me gustaría que una alarma RTC encienda mi arduino a una hora específica cada día. Sé que Arduino tiene buenos modos de suspensión, pero me preocupa incluso el consumo de energía inactivo del regulador de voltaje debido a que alimenta a Arduino con 9 V (esta es mi única opción). Mi preferencia es apagar completamente la placa arduino quitándole todo el poder.

Así que mi idea es usar un RTC que tenga una alarma para activar el Arduino de alguna manera. No estoy familiarizado con los MOSFETS y los relés, pero creo que estas son opciones para mi problema.

¿Alguien tiene alguna sugerencia?

    
pregunta bostoncommon

3 respuestas

1

Aquí está mi solución para cualquier persona que tenga curiosidad. Tengo un DS1305 RTC corriendo de una celda de moneda de 3V y tengo el pin INT0 del RTC levantado a 5V. INT0 es el pin de interrupción de alarma. Este pin está en alta impedancia cuando no se ha alcanzado la hora de la alarma y se convierte en un drenaje abierto cuando se ha alcanzado la hora de la alarma (la alarma está sonando). Debido a que el pin INT0 es de alta impedancia, consume una corriente casi nula. El 5V se entrega desde un regulador IQ ultra bajo de MAX8881 en lugar del regulador Arduino estándar. Entonces, por estas dos razones, cuando el dispositivo aún está durmiendo está consumiendo solo unos pocos microamperios.

El siguiente paso es usar esa alarma para despertar todo. Entre mi regulador y mi chip ATMega principal tengo un MOSFET de canal p que tiene su compuerta conectada al pin INT0 del RTC. Entonces, cuando se cumple la hora de la alarma, INT0 se convierte en un colector común que lleva la puerta del MOSFET p-ch a 0V, lo que cierra el interruptor y permite que se entreguen 5V a ATMega.

    
respondido por el bostoncommon
1

Si bien OP ya ha mostrado su respuesta, hay otros dos métodos que se pueden usar, los cuales implican simplemente pasar por alto el regulador existente. Esencialmente, el mayor consumo de corriente de un arduino durmiente es el ineficiente LDO que utilizan.

El primero es usar un regulador con un pin activo de baja habilitación. Esto utiliza la misma configuración de pin de interrupción de drenaje abierto, pero sin el Mosfet. Cuando la interrupción se dispara, el pin de habilitación del regulador se baja y permite que ATMega se inicie.

El segundo es, en primer lugar, mediante el uso de un regulador eficiente de corriente de reposo bajo. La mayoría de los Arduinos usan un Regulador Lineal "" LDO "" 1A o superior, que desperdicia energía (Vin - Vout / Current), tiene una corriente mínima alta para la regulación y una corriente quiescente alta. Al saber cuánta corriente pico usará su arduino, y luego elegir un regulador de conmutación para cumplir con el 130% de eso, tendrá una mayor duración de la batería tanto por la eficiencia del regulador como por el uso de corriente de reposo bajo.

En su estado actual, OP fue con un MAX8881, un LDO de 200 mA. Usando la fórmula de eficiencia del regulador
Efficiency = (Vout * Iout) / (Vin * (Iin + Iq)) * 100
obtenemos
(5v * 0.2A) / (9v * (0.2A + 0.0000035A)) * 100 = 55.55% de eficiencia

Un LDO con una diferencia de entrada de 4v será bastante ineficiente. Una batería alcalina de 9v típica es de 500 mAH. Así que obtendrás aproximadamente la mitad de eso desperdiciado en calor. Un regulador de conmutación podría elevar eso a 80 ~ 95%, un aumento del 40%.

    
respondido por el Passerby
1

MCP1702 es un ejemplo de un regulador de baja caída con una corriente de reposo de 2uA. Combinado con colocar el Arduino en uno de los modos de reposo de baja potencia mantendría su corriente de reposo a unos pocos u-Amps. El hecho de que desee ejecutarlo una vez al día (supongo que de forma relativamente breve) significa que su presupuesto de energía se destinará principalmente al mantenimiento del sueño; La energía en tiempo de ejecución será una pequeña fracción de ella a pesar de las ineficiencias de conversión.

    
respondido por el JRobert

Lea otras preguntas en las etiquetas