- Técnicas de ahorro de energía para microcontroladores
- 1. Modos de reposo
- 2. Modificación dinámica de la frecuencia del procesador
- 3. Estructura del firmware del controlador de interrupciones
- 4. Firmware optimizado para la energía
- Conclusión
Así como el gas (gasolina / diésel) es importante para que las bicicletas, camiones y automóviles (¡sí, excluyendo Teslas!) Se muevan, también lo es la energía eléctrica para la mayoría de las aplicaciones electrónicas y más aún, para las aplicaciones basadas en sistemas integrados que generalmente son baterías (energía limitada), desde teléfonos móviles normales hasta dispositivos domésticos inteligentes, entre otros.
La naturaleza limitada de la energía de la batería implica la necesidad de garantizar que la tasa de consumo de energía de estos dispositivos sea razonable para fomentar su adopción y uso. Especialmente con dispositivos basados en IoT donde se puede esperar que un dispositivo dure entre 8 y 10 años con una sola carga sin reemplazar la batería.
Estas tendencias han llevado a la implementación de consideraciones de bajo consumo de energía en el diseño de sistemas integrados y, a lo largo de los años, los diseñadores, ingenieros y fabricantes en varios puntos han desarrollado varias formas inteligentes de administrar eficazmente la energía consumida por los productos, para garantizar que duren más carga única. Muchas de estas técnicas se centran en el microcontrolador, que es el corazón de la mayoría de los dispositivos. En el artículo de hoy, exploraremos algunas de estas técnicas y cómo se pueden utilizar para minimizar el consumo de energía en los microcontroladores. Aunque un microprocesador consume menos energía, pero se puede usar en el microcontrolador en cualquier lugar, siga el enlace para aprender en qué se diferencia el microprocesador del microcontrolador.
Técnicas de ahorro de energía para microcontroladores
1. Modos de reposo
Los modos de suspensión (generalmente denominados modos de bajo consumo) son posiblemente la técnica más popular para reducir el consumo de energía en los microcontroladores. Por lo general, implican la desactivación de ciertos circuitos o relojes que controlan ciertos periféricos de los microcontroladores.
Dependiendo de la arquitectura y el fabricante, los microcontroladores suelen tener diferentes tipos de modos de suspensión, y cada modo posee la capacidad de desactivar más circuitos internos o periféricos en comparación con el otro. Los modos de suspensión generalmente van desde el sueño profundo o apagado, hasta los modos inactivo y dormido.
Algunos de los modos disponibles se explican a continuación. Cabe señalar que las características y el nombre de estos modos pueden variar de un fabricante a otro.
yo. Modo inactivo / inactivo
Este suele ser el más simple de los modos de bajo consumo que pueden implementar los diseñadores. Este modo permite que el microcontrolador vuelva a funcionar completamente a una velocidad muy rápida. Por lo tanto, no es el mejor modo, si el ciclo de energía del dispositivo requiere que salga del modo de suspensión con mucha frecuencia, ya que se consume una gran cantidad de energía, cuando el microcontrolador sale del modo de suspensión. El regreso al modo activo desde el modo de espera generalmente se basa en interrupciones. Este modo se implementa en el microcontrolador apagando el árbol de reloj que impulsa los circuitos de la CPU mientras el reloj primario de alta frecuencia de la MCU se mantiene funcionando. Con esto, la CPU puede reanudar las operaciones inmediatamente que se activa el disparador de despertador. La compuerta de reloj se ha empleado ampliamente para cortar señales en los modos de bajo consumo de microcontroladores y este modo controla eficazmente las señales de reloj en la CPU.
ii. Modo de espera
El modo de espera es otro modo de bajo consumo, fácil de implementar para los diseñadores. Es muy similar al modo inactivo / inactivo, ya que también implica el uso de un reloj en la CPU, pero una diferencia importante es que permite cambiar el contenido de la RAM, lo que no suele ser el caso con el modo inactivo / inactivo. En el modo de espera, los periféricos de alta velocidad como el DMA (acceso directo a la memoria), los puertos serie, los periféricos ADC y AES se mantienen en funcionamiento para garantizar que estén disponibles inmediatamente después de que la CPU esté activa. Para ciertas MCU, la RAM también se mantiene activa y el DMA puede acceder a ella, lo que permite almacenar y recibir datos sin la intervención de la CPU. La energía consumida en este modo puede ser tan baja como 50uA / MHZ para microcontroladores de baja potencia.
iii. Modo de sueño profundo
El modo de suspensión profunda, generalmente implica la desactivación de relojes de alta frecuencia y otros circuitos dentro del microcontrolador, dejando solo el circuito de reloj utilizado para controlar elementos críticos como el temporizador de vigilancia, la detección de apagones y el circuito de reinicio de encendido. Otras MCU pueden agregar otros elementos para mejorar la eficiencia general. El consumo de energía en este modo puede ser tan bajo como 1uA dependiendo de la MCU en particular.
iv. Modo de parada / apagado
Ciertos microcontroladores tienen diferentes variaciones de este modo adicional. En este modo, tanto los osciladores altos como los bajos generalmente se desactivan dejando solo algunos registros de configuración y otros elementos críticos encendidos.
Las características de todos los modos de suspensión mencionados anteriormente difieren de MCU a MCU, pero la regla general es; cuanto más profundo es el sueño, mayor es el número de periféricos desactivados durante el sueño y menor es la cantidad de energía consumida, aunque esto generalmente también significa; cuanto mayor sea la cantidad de energía consumida para que el sistema vuelva a funcionar. Por lo tanto, depende del diseñador considerar esta variación y elegir la MCU adecuada para la tarea sin hacer concesiones que afecten a la especificación del sistema.
2. Modificación dinámica de la frecuencia del procesador
Esta es otra técnica muy popular para reducir de manera eficiente la cantidad de energía consumida por un microcontrolador. Es, con mucho, la técnica más antigua y un poco más complicada que los modos de suspensión. Implica que el firmware controle dinámicamente el reloj del procesador, alternando entre alta y baja frecuencia, ya que la relación entre la frecuencia del procesador y la cantidad de energía consumida es lineal (como se muestra a continuación).
La implementación de esta técnica generalmente sigue este patrón; cuando el sistema está en un estado inactivo, el firmware establece la frecuencia del reloj a una velocidad baja, lo que permite que el dispositivo ahorre algo de energía y cuando el sistema necesita hacer cálculos pesados, la velocidad del reloj vuelve a subir.
Existen escenarios contraproducentes para modificar la frecuencia del procesador, que generalmente es el resultado de un firmware mal desarrollado. Estos escenarios surgen cuando la frecuencia del reloj se mantiene baja mientras el sistema realiza cálculos pesados. Una frecuencia baja en este escenario significa que el sistema tomará más tiempo del necesario para realizar la tarea establecida y, por lo tanto, consumirá acumulativamente la misma cantidad de energía que los diseñadores estaban tratando de ahorrar. Por lo tanto, se debe tener especial cuidado al implementar esta técnica en aplicaciones de tiempo crítico.
3. Estructura del firmware del controlador de interrupciones
Esta es una de las técnicas más extremas de gestión de energía en microcontroladores. Es posible gracias a unos pocos microcontroladores como los núcleos ARM cortex-M que tienen un bit de suspensión en el registro SCR. Este bit proporciona al microcontrolador la capacidad de dormir después de ejecutar una rutina de interrupción. Si bien existe un límite en la cantidad de aplicaciones que se ejecutarán sin problemas de esta manera, esta podría ser una técnica muy útil para sensores de campo y otras aplicaciones basadas en recopilación de datos a largo plazo.
La mayoría de las otras técnicas, en mi opinión, son variaciones de las ya mencionadas anteriormente. Por ejemplo, la técnica de sincronización selectiva de periféricos es esencialmente una variación de los modos de suspensión en los que el diseñador selecciona los periféricos para encenderlos o apagarlos. Esta técnica requiere un conocimiento profundo del microcontrolador de destino y puede no ser muy amigable para principiantes.
4. Firmware optimizado para la energía
Una de las mejores formas de reducir la cantidad de energía consumida por un microcontrolador es escribiendo un firmware eficiente y bien optimizado. Esto afecta directamente la cantidad de trabajo realizado por la CPU por tiempo y esto, por extensión, contribuye a la cantidad de energía consumida por el microcontrolador. Se deben hacer esfuerzos mientras se escribe el firmware para garantizar un tamaño de código y ciclos reducidos, ya que cada instrucción innecesaria ejecutada es una parte de la energía almacenada en la batería que se desperdicia. A continuación se muestran algunos consejos comunes basados en C para el desarrollo optimizado de firmware;
- Utilice la clase "Static Const" tanto como sea posible para evitar la copia en tiempo de ejecución de matrices, estructuras, etc. que consumen energía.
- Utilice punteros. Probablemente sean la parte más difícil de entender del lenguaje C para los principiantes, pero son las mejores para acceder a estructuras y uniones de manera eficiente.
- ¡Evite Modulo!
- Variables locales sobre variables globales cuando sea posible. Las variables locales están contenidas en la CPU, mientras que las variables globales se almacenan en la RAM, la CPU accede a las variables locales más rápido.
- Los tipos de datos sin firmar son su mejor amigo siempre que sea posible.
- Adopte una "cuenta atrás" para los bucles siempre que sea posible.
- En lugar de campos de bits para enteros sin signo, utilice máscaras de bits.
Los enfoques para reducir la cantidad de energía consumida por un microcontrolador no se limitan a los enfoques basados en software mencionados anteriormente, existen enfoques basados en hardware como la técnica de control de voltaje central, pero para mantener la longitud de esta publicación dentro de un rango razonable, ahorraremos ellos para otro día.
Conclusión
La implementación de un producto de bajo consumo parte de la elección del microcontrolador y puede resultar bastante confuso cuando se intenta repasar las diversas opciones disponibles en el mercado. Mientras se escanea, la hoja de datos puede funcionar bien para obtener el rendimiento general de las MCU, pero para aplicaciones de energía crítica, puede ser un enfoque muy costoso. Para comprender las verdaderas características de potencia de un microcontrolador, los desarrolladores deben tener en cuenta las especificaciones eléctricas y las funcionalidades de baja potencia disponibles para el microcontrolador. Los diseñadores no solo deben preocuparse por el consumo de corriente de cada uno de los modos de energía anunciados en la hoja de datos de la MCU, sino que deben analizar el tiempo de activación, las fuentes de activación y los periféricos que están disponibles para su uso durante los modos de bajo consumo.
Es importante verificar las características del microcontrolador que planea usar para determinar las opciones que tiene para la implementación de bajo consumo. Los microcontroladores han sido uno de los mayores beneficiarios de los avances tecnológicos y ahora existen varios microcontroladores de energía ultrabaja que aseguran que tenga recursos para ayudarlo a mantenerse dentro de su presupuesto de energía. Algunos de ellos también proporcionan varias herramientas de software de análisis de potencia que puede aprovechar para lograr un diseño eficaz. Un favorito personal es la línea de microcontroladores MSP430 de Texas Instrument.