Aumente el consumo de energía con el preescalador de reloj

2

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:

  1. MCU está encendido.
  2. 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.
  3. La MCU se comunica con el dispositivo a través de I2C o SPI y obtiene una lectura.
  4. El MCU apaga el sensor.
  5. El circuito del transmisor está encendido por la MCU.
  6. La lectura se transmite.
  7. La MCU apaga los circuitos del transmisor.
  8. La MCU activa un dispositivo temporizador externo de bajo consumo (rango nA) configurado para demorar aproximadamente diez minutos.
  9. La MCU se pone en modo de apagado para ahorrar energía.
  10. 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?

    
pregunta Polynomial

2 respuestas

1
El

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

Un aspecto informal indica que la frecuencia de reloj más baja conducirá al consumo total más bajo.

La Tabla 21-2 contiene información sobre la cantidad de consumo adicional que agrega de los distintos módulos en función de la frecuencia, lo que nuevamente indica que una velocidad menor le reducirá el consumo.

Dependiendo de la rapidez con la que necesite realizar el cálculo, podría salirse con la velocidad de reloj de 128 kHz.

No he examinado los módulos I2C y SPI en detalle, pero es posible que no funcionen correctamente a una frecuencia tan baja, por lo que podría considerar aumentar la velocidad antes de hacer comunicaciones con esos periféricos.

    
respondido por el Rob S
1

Hay algunas opciones que veo.

1) Ejecute el dispositivo a una configuración de preescala de reloj más rápida cuando esté activo, y cambie a una preescala inferior antes de irse a dormir.

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

    
respondido por el user4574

Lea otras preguntas en las etiquetas