Estoy diseñando un dispositivo sensorial por radio que funciona con pilas y que requiere una larga vida útil. Debido a los requisitos del proyecto, tengo muy poca energía a bordo para trabajar; una sola pila de botón es la fuente probable y el requisito de vida útil es de al menos una semana.
Mi principal ahorro de energía vendrá de poner el dispositivo en un modo de sueño profundo y despertarlo con un temporizador cada diez minutos aproximadamente para tomar una lectura y transmitirla. Esto significa que sólo el 0,5% del tiempo el dispositivo consume una cantidad significativa de energía; durante el estado de reposo el consumo será de microamperios como máximo.
El proceso propuesto es el siguiente:
- La MCU está encendida.
- El sensor es encendido por la MCU y se da un tiempo de gracia de un segundo. La MCU se pone en estado de reposo hasta que transcurre el periodo de gracia.
- El MCU se comunica con el dispositivo vía I2C o SPI y obtiene una lectura.
- El sensor se apaga con la MCU.
- El circuito del transmisor es alimentado por la MCU.
- La lectura se transmite.
- El circuito del transmisor es alimentado por la MCU.
- La MCU dispara un dispositivo temporizador externo de bajo consumo (rango nA) que está configurado para retrasar durante aproximadamente diez minutos.
- La MCU se pone en modo de apagado para conservar la energía.
- El dispositivo temporizador externo dispara un pulso a un pin GPIO, lo que provoca una interrupción de vigilia en la MCU, devolviéndonos al paso 1.
El ATtiny44A tiene múltiples modos de reloj (sección 6.2): un reloj interno calibrado de 8MHz, un reloj interno de baja precisión de 128kHz, y soporte para fuentes de reloj y cristales externos. Estos pueden ser reducidos usando el preescalador de reloj (ver fig. 6-1 y sección 6.3 para una descripción). El MCU funcionará a 3,3V.
Como los procesos realizados por la MCU no son particularmente críticos en cuanto al tiempo, estoy tratando de decidir cuál de las siguientes estrategias es más óptima para el bajo consumo de energía:
- Utilizar el reloj interno calibrado de 8MHz tal cual, sin preescalado, para minimizar el tiempo durante el cual el MCU estará encendido. Esto tiene el beneficio de acelerar los pocos cálculos que estoy haciendo en el chip y acelerar la IO con los dispositivos del sensor y el transmisor. Sin embargo, una desventaja potencial es que otros relojes internos están funcionando a una frecuencia más alta, y seguirán funcionando durante el período de gracia de un segundo en el paso 2. Mi instinto me dice que esta es una mala elección, ya que cualquier ahorro de energía por un cálculo más rápido se verá empequeñecido por el segundo de funcionamiento del reloj en reposo.
- Utiliza la fuente de reloj interno de baja precisión de 128kHz. Esto aumenta el tiempo de cálculo y de E/S, pero puede ahorrar energía durante el periodo de gracia.
- Utiliza el reloj interno calibrado de 8MHz con el preescalador ajustado a 1/64, produciendo una velocidad de reloj de 125kHz, emulando el reloj interno de baja precisión. No estoy seguro de si esta es una opción útil.
- Utiliza el reloj interno calibrado de 8MHz con el preescalador ajustado a 1/256 (el máximo), produciendo una velocidad de reloj de 31,25kHz. De nuevo, no estoy seguro de que esto ahorre energía.
¿Cuál de ellos, en el escenario descrito anteriormente, tendrá el menor consumo de energía?
0 votos
Esto depende de muchas cosas: la tensión de alimentación, los periféricos habilitados, los chips externos (¿también están apagados?), etc. La única manera de obtener respuestas definitivas para esto es construir tu circuito y medir el consumo de energía de los distintos enfoques. Ver también mi respuesta a una pregunta similar.
0 votos
@marcelm Como señalé en mi pregunta, la tensión de alimentación es de 3,3V, y los CI externos (aparte del CI del temporizador) se encienden sólo durante el período de detección cada diez minutos.