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

5

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

Con referencia a la hoja de datos que contiene información sobre el Atmega328p ( enlace ), indica 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 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?

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

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

Agradezco cualquier ayuda que se proporcione!

    
pregunta Izzo

2 respuestas

9
  

Debido a 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 máxima de reloj es de 20MHz, y se admite al menos hasta 32kHz, posiblemente más bajo. Cualquier cosa en el medio también es válida.

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

Comopuedever,lacorrienteaumentadeformaaproximadamentelinealconlavelocidaddelreloj.Enmiexperiencia,hayuncomponente"estático" en el consumo de energía que se agrega 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 el voltaje y el consumo de energía? Entiendo que la potencia de CC se define por W = VI; sin embargo, si operara a 3.3 V, ¿no obtendría menos corriente? Sin embargo, no estoy seguro de si esa es una suposición correcta.

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

Comopuedever,larelaciónesinclusomásfuertequelalineal,tieneunacurvacuadráticaleve.A5V,consumeaproximadamente1mAparaunapotenciade5mW.Alamitaddeeso,2.5V,essolo0.4mA,loquedacomoresultadounapotenciade1mW.Labajatensiónesunanecesidadsilapotenciabajaessuobjetivo.

  

SupongoquelapotenciadesalidaenumeradatambiénexcluyecualquierpotenciaadicionalqueelchipestésuministrandoalaE/S(esdecir,suministrar10mAaunLEDaumentaríalacantidadtotaldecorrientequeentraenelmicrocontrolador).

Correcto.

  

Sinembargo,¿ciertasoperacionesdentrodelmicrocontroladorhacenqueconsumamásenergía?EstoyespecialmenteinteresadoenelcasodeimplementarcomunicacionesserialescomoSPI.

Sí.LosAVR,incluidoel328,puedendesactivarmuchosdesusperiféricosinternos,comoSPI,UART,ADC,temporizadores,etc.Silosdesactiva,disminuirásuconsumodeenergía.Lapreguntaesporcuánto;enmiexperiencia,esosperiféricosconsumenunapotenciadespreciableencomparaciónconlaCPUprincipala5V/20MHz,peroavelocidadesderelojmásbajasocuandolaCPUduermemucho,lapotenciaperiféricapuedesersignificativa.Paraunapotenciabaja,desactivetodoloquenonecesite.

Unanotasobrehojasdedatos:tiendenapresentarlosmejoresescenarios.Sospechoquelascifrasygráficosdeconsumodeenergíaenlahojadedatosestáncontodoslosperiféricosdesactivados.

Lainformaciónenlahojadedatosesútil,perosideseaaprovecharalmáximosupoder,necesitarealizarexperimentosymediciones.Medirelsorteoactual:

  • Adiferentesvelocidadesdereloj
  • EndiferentesVCC(¡observeelVCCmínimoparaunavelocidadderelojdeterminada!)
  • Concadaunodelosperiféricosdeshabilitadosohabilitados
  • Enlosdistintosmodosdesuspensión
  • Usandolasdiversasfuentesdereloj

Engeneral,paraoptimizarsuproyectodeenergía328,sigaestospasos:

  • Optimicesucódigo.Cuantosmenosciclosnecesitesparahacertutrabajo,menospotencianecesitarás.
  • Ejecutael328alavelocidadderelojmásbajaquepuedas.
  • Ejecutael328alatensiónmásbajaquepuedas(considerandolavelocidaddelreloj).
  • Dejequeel328duermacuandonotienenadaquehacer.
  • Desactivetodoslosperiféricosquenonecesite.
  • IntenteutilizarelosciladorRCinternode128kHzsiesposible.

Realmentedependedecuántotrabajotengaquehacertu328.A20MHz/5V,un328activoconsumeaproximadamente20mA=100mW,peroabajavelocidadderelojyvoltaje,1mWesmuyfactible.Grandiferencia.

Cuandoseoperaconvoltajesbajos,cercadelatoleranciadel328,esposiblequetambiéndeseeconsiderarcómolidiarconlacaídadevoltajedelabatería.Discutirlacapacidaddelabateríaylacaídadevoltajeestámásalládeestarespuesta,pero este video de EEVblog es un excelente punto de partida.

    
respondido por el marcelm
2

Descubrí que los equipos de medición para estas mediciones de alta resolución son demasiado caros para mi presupuesto de desarrollo y tienen un avance prohibitivo para mis habilidades de bricolaje.

En cambio, descubrí que cargar un capacitor grande y alimentar el circuito con eso y ver cuánto tiempo antes de que se apague, es una buena forma de medir las diferencias relativas en las configuraciones de hardware.

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

Puede variar el voltaje de carga y la capacitancia para obtener un dominio de medición dentro de límites aceptables. A veces es demasiado tiempo esperar para ver si tomará 30 segundos o 25 en una configuración determinada, si 0.3 vs 0.25 podrían haber sido suficientes. Caballos para cursos y todo eso.

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

    
respondido por el Morten Jensen

Lea otras preguntas en las etiquetas