6 votos

¿Cuál es la mejor manera de estimar el consumo de energía de un microcontrolador Atmega328p?

Actualmente estoy trabajando con un microcontrolador barebone Atemga328p implementado dentro de un diseño de baterías. Me he dado cuenta de que no tengo ni idea de cómo se clasifican los microcontroladores en función del consumo de energía.

Refiriéndonos a la hoja de datos que contiene información sobre el Atmega328p ( http://www.atmel.com/images/Atmel-8271-8-bit-AVR-Microcontroller-ATmega48A-48PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf ), establece que el consumo de energía de un modo de operación de 1Mhz, 1.8V, 25C consume 0.2 mAs de corriente. Tengo varias preguntas con respecto a este número:

  • Debido a que estos microcontroladores pueden operar a 8Mhz y 16Mhz, ¿el consumo de energía es una función lineal de la frecuencia? es decir, ¿operar a 8Mhz consume 0,2mA * 8 = 1,6 mA de corriente?

  • ¿Cuál es la relación entre el voltaje y el consumo de energía? Entiendo que la potencia de CC está definida por W = VI, sin embargo, si yo operara a 3.3V, ¿no tiraría menos corriente? No estoy seguro de que sea una suposición correcta.

  • Asumo que la salida de energía listada también excluye cualquier energía adicional que el chip esté suministrando a E/S (es decir, suministrar 10mA a un LED aumentaría la cantidad total de corriente que va al micro controlador). Sin embargo, ¿hay ciertas operaciones dentro del microcontrolador que hacen que consuma más energía? Estoy específicamente interesado en el caso de implementar comunicaciones seriales como SPI. Asumiendo que estoy tratando de usar SPI sin un dispositivo esclavo conectado (por lo tanto no hay manera de perder la energía externa), ¿el microcontrolador seguiría usando más energía?

¡Agradezco cualquier ayuda que se me proporcione!

2 votos

hay muchos periféricos que se pueden desactivar para reducir el consumo de energía, por lo que tener SPI activado o desactivado tendrá un impacto en el consumo de corriente. Hay muchos recursos en línea sobre cómo hacer que los atmega328s funcionen con baja energía.

0 votos

@WesleyLee Ya veo. ¿Cómo podría diseñar esto exactamente? ¿O sólo se convertirá en prueba y error?

1 votos

Si es la cifra real lo que te interesa, creo que tendrás que averiguarlo empíricamente. Esto podría ser una lectura interesante: gammon.com.au/power

13voto

Andrew Trubatchev Puntos 42

Dado que estos microcontroladores pueden funcionar a 8Mhz y 16Mhz, ¿el consumo de energía es una función lineal de la frecuencia? es decir, ¿el funcionamiento a 8Mhz consume 0,2mA * 8 = 1,6 mA de corriente?

En primer lugar, el 328 puede funcionar a muchas más velocidades; su velocidad de reloj máxima es de 20MHz, y se admite al menos hasta 32kHz, posiblemente menos. Todo lo que esté en medio también es válido.

En cuanto al consumo de energía, eche un vistazo al hoja de datos en particular el gráfico de la sección 33.1.1 (Características típicas del ATmega328 -> Corriente de alimentación activa):

328 active supply current

Como puedes ver, la corriente aumenta aproximadamente de forma lineal con la velocidad de reloj. En mi experiencia, hay un componente "estático" en el consumo de energía que se añade al consumo de energía relativo a la velocidad, y esta parte puede dominar a velocidades de reloj muy bajas. Pero esto dependerá de la tensión de alimentación y de los periféricos habilitados.

¿Cuál es la relación entre la tensión y el consumo de energía? Entiendo que la potencia de CC se define por W = VI, sin embargo, si yo fuera a operar a 3,3V, ¿no tiraría menos corriente? Sin embargo, no estoy seguro de que sea una suposición correcta.

Los circuitos integrados basados en transistores suelen consumir menos corriente a voltajes más bajos; podrías aproximarlos como una carga resistiva (lo cual no es del todo exacto, pero es suficiente para una estimación). De nuevo, la hoja de datos tiene un gráfico útil (en la misma sección):

328 active current vs vcc

Como puedes ver, la relación es incluso más fuerte que lineal, tiene una ligera curva cuadrática. A 5V consume aproximadamente 1mA, para una potencia de 5mW. A la mitad, 2,5V, sólo consume 0,4mA, lo que supone una potencia de 1mW. El bajo voltaje es imprescindible si tu objetivo es la baja potencia.

Supongo que la potencia listada también excluye cualquier potencia adicional que el chip esté suministrando a las E/S (es decir, suministrar 10mA a un LED aumentaría la cantidad total de corriente que entra en el microcontrolador).

Correcto.

Sin embargo, ¿algunas operaciones dentro del microcontrolador hacen que consuma más energía? Me interesa específicamente el caso de la implementación de comunicaciones en serie como SPI.

Sí. Los AVR, incluido el 328, pueden desactivar muchos de sus periféricos internos, como SPI, UART, ADC, temporizadores, etc. Desactivarlos reducirá su consumo de energía. La cuestión es cuánto; en mi experiencia esos periféricos consumen una energía insignificante comparada con la CPU principal a 5V/20MHz, pero a velocidades de reloj más bajas o cuando la CPU duerme mucho, la energía de los periféricos puede ser significativa. Para un consumo bajo, desactiva todo lo que no necesites.

Una nota sobre las hojas de datos: suelen presentar los mejores escenarios. Sospecho que las cifras de consumo de energía y los gráficos de la hoja de datos son con todos los periféricos desactivados.

La información de la hoja de datos es útil, pero si quieres sacar el máximo partido a tu potencia, tienes que hacer experimentos y mediciones. Mide el consumo de corriente:

  • A diferentes velocidades de reloj
  • A diferentes VCC (¡observa la VCC mínima para una velocidad de reloj determinada!)
  • Con cada uno de los periféricos desactivados o activados
  • En los distintos modos de reposo
  • Utilización de las distintas fuentes de reloj

En general, para optimizar su proyecto 328 de potencia, siga estos pasos:

  • Optimice su código. Cuantos menos ciclos necesite para realizar su trabajo, menos energía necesitará.
  • Haz funcionar el 328 a la menor velocidad de reloj que puedas.
  • Haz funcionar el 328 al menor voltaje que puedas (teniendo en cuenta la velocidad del reloj).
  • Deja que el 328 duerma cuando no tenga nada que hacer.
  • Desactiva todos los periféricos que no necesites.
  • Intenta utilizar el oscilador RC interno de 128kHz si es posible.

Realmente depende de la cantidad de trabajo que tenga su 328. A 20MHz/5V, un 328 activo consume unos 20mA = 100mW, pero a baja velocidad de reloj y voltaje, 1mW es muy factible. La diferencia es grande.

Cuando se trabaja con voltajes bajos, cercanos a la tolerancia del 328, también hay que tener en cuenta cómo tratar la caída de tensión de la batería. Discutir la capacidad de la batería y la caída de voltaje está más allá de esta respuesta, pero este vídeo de EEVblog es un excelente punto de partida.

3voto

Morten Jensen Puntos 471

He comprobado que los equipos de medición de tan alta resolución son demasiado caros para mi presupuesto de desarrollo y demasiado avanzados para mis habilidades de bricolaje.

En su lugar, he descubierto que cargar un condensador grande y alimentar el circuito con él y ver cuánto tiempo pasa antes de que se oscurezca, es una buena manera de medir las diferencias relativas en las configuraciones de hardware.

Si su software está organizado de tal manera que en su mayoría hace las mismas cosas dadas las mismas entradas, puede probar fácilmente y ver cuánto se afecta el consumo de energía al cambiar ciertas configuraciones de hardware.

Puedes variar la tensión de carga y la capacitancia para conseguir un dominio de medición dentro de unos límites aceptables. A veces es demasiado esperar para ver si se tarda 30 segundos o 25 en un determinado ajuste, si 0,3 frente a 0,25 podría haber sido suficiente. A caballo regalado y todo eso.

No es demasiado difícil estimar la energía contenida en un condensador cargado a un determinado voltaje, por lo que también se puede estimar/calcular el consumo total de energía.

1 votos

"... las mediciones de alta resolución son demasiado caras..." - ¿Cómo es eso? Antes sólo tenía un multimetro de 10 dólares, y medía hasta µA sin problemas. Incluso si su precisión no es grande (que es probablemente el caso) sigue siendo útil para obtener valores aproximados y para hacer mediciones relativas.

0 votos

@marcelm la alta resolución se refería tanto al dominio del tiempo como al de la frecuencia/muestreo. Si tienes un tiempo infinito puedes conseguir una precisión infinita, pero a menudo quieres muestrear a una determinada velocidad. Cuando esa velocidad aumenta, o el precio también lo hace, o la precisión/resolución disminuye. Nunca he argumentado en contra de las mediciones de referencia :)

0voto

edou_art Puntos 1

Hay más que un microcontrolador en el diseño integrado, así que si el consumo de energía de la MCU no es significativo en comparación con el consumo total de energía del diseño integrado, es bueno centrarse en otros periféricos para implementar estrategias de ahorro de energía.

Algunas técnicas que he enumerado aquí en mi artículo para el diseño de sistemas embebidos de baja potencia.

8 votos

Si enlaza con su propio sitio web, debe ser muy explícito al respecto; véase también Cómo no ser un spammer.

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