Estoy diseñando un dispositivo sensor de radio conectado a una batería que requiere una larga vida útil. Debido a los requisitos del proyecto, tengo muy poca energía a bordo para trabajar; una celda de una sola moneda es la fuente probable y el requisito de vida útil es de al menos una semana.
Mi ahorro de energía principal provendrá de colocar el dispositivo en modo de suspensión profunda y despertarlo con un temporizador cada diez minutos aproximadamente para tomar una lectura y transmitirlo. Esto significa que solo durante el 0,5% del tiempo el dispositivo obtiene una potencia significativa; durante el estado de reposo, el consumo estará en las unidades de microamperios como máximo.
El proceso propuesto es el siguiente:
- MCU está encendido.
- El MCU enciende el sensor y se da un tiempo de gracia de un segundo. La MCU se coloca en estado de suspensión hasta que transcurre el período de gracia.
- La MCU se comunica con el dispositivo a través de I2C o SPI y obtiene una lectura.
- El MCU apaga el sensor.
- El circuito del transmisor está encendido por la MCU.
- La lectura se transmite.
- La MCU apaga los circuitos del transmisor.
- La MCU activa un dispositivo temporizador externo de bajo consumo (rango nA) configurado para demorar aproximadamente diez minutos.
- La MCU se pone en modo de apagado para ahorrar energía.
- El dispositivo temporizador externo dispara un pulso a un pin GPIO, lo que provoca una interrupción de activación en la MCU, lo que nos devuelve al paso 1.
El ATtiny44A tiene varios modos de reloj (sección 6.2): un reloj interno de 8MHz calibrado, una precisión baja Reloj interno de 128 kHz, y soporte para fuentes de reloj externas y cristales. Luego, estos pueden reducirse usando el prescaler de reloj (consulte la fig. 6-1 y la sección 6.3 para obtener una descripción). Estaré ejecutando el MCU a 3.3V.
Como los procesos realizados por la MCU no son particularmente críticos en el tiempo, estoy tratando de decidir cuál de las siguientes estrategias es más óptima para un bajo consumo de energía:
- Use el reloj interno calibrado de 8MHz tal como está sin preselección, para minimizar el tiempo durante el cual se encenderá la MCU. Esto tiene la ventaja de acelerar los pocos cálculos que estoy haciendo en el chip y acelerar la IO con el sensor y los dispositivos transmisores. Sin embargo, un inconveniente potencial es que otros relojes internos se ejecutan a una frecuencia más alta y se mantendrán en funcionamiento durante el período de gracia de un segundo en el paso 2. Mi instinto dice que esta es una mala elección ya que cualquier potencia ahorrada por un cálculo más rápido será empequeñecido por el segundo de correr el reloj en modo inactivo.
- Utilice la fuente de reloj interno de baja precisión de 128 kHz. Esto aumenta el tiempo de cálculo y de IO, pero puede ahorrar energía durante el período de gracia.
- Use el reloj interno calibrado de 8MHz con el prescaler configurado en 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.
- Use el reloj interno calibrado de 8MHz con el preescalador configurado en 1/256 (el máximo), produciendo una velocidad de reloj de 31.25kHz. De nuevo, no estoy seguro de si esto ahorrará energía.
¿Cuál de estos, en el escenario descrito anteriormente, dará como resultado el menor consumo de energía?