2 votos

Consumo de energía de ATtiny con preescalador de reloj

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:

  1. La MCU está encendida.
  2. 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.
  3. El MCU se comunica con el dispositivo vía I2C o SPI y obtiene una lectura.
  4. El sensor se apaga con la MCU.
  5. El circuito del transmisor es alimentado por la MCU.
  6. La lectura se transmite.
  7. El circuito del transmisor es alimentado por la MCU.
  8. La MCU dispara un dispositivo temporizador externo de bajo consumo (rango nA) que está configurado para retrasar durante aproximadamente diez minutos.
  9. La MCU se pone en modo de apagado para conservar la energía.
  10. 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.

1voto

Rob S Puntos 58

El capítulo 21 de la hoja de datos del ATtiny44 tiene mucha información sobre el consumo en función de la frecuencia y la tensión de alimentación.

Una mirada casual indica que la frecuencia de reloj más baja conducirá al menor consumo total.

La tabla 21-2 contiene información sobre el consumo adicional de los distintos módulos en función de la frecuencia, indicando de nuevo que a menor velocidad menor consumo.

Dependiendo de la rapidez con la que necesites hacer el cálculo, podrías salirte con la velocidad de reloj de 128kHz.

No he mirado los módulos I2C y SPI en detalle, pero es posible que no funcionen correctamente a una frecuencia tan baja, así que podrías considerar aumentar la velocidad antes de hacer cualquier comunicación usando esos periféricos.

1voto

Ozzyprv Puntos 1

Hay algunas opciones que veo.

1) Haga funcionar el dispositivo con un ajuste de preescalado de reloj más rápido cuando esté activo, y cambie a un preescalado más bajo antes de ir a dormir.

2) Si el chip tiene un registro de habilitación de energía para los periféricos, desactive la habilitación de energía para esos periféricos cuando estén en reposo. No consumirán energía cuando estén desactivados.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X