Muchas personas que han intentado alimentar una tarjeta arduino con baterías pueden encontrarse con la situación de que la carga de la batería dura poco: solo un par de días. La solución puede ser aumentar el tamaño o número de las baterías, pocas veces llegando al resultado deseado, aún cuando la batería llega a ser bastante grande (en tamaño físico y en capacidad de almacenamiento de energía). Otras veces la reacción inmediata podría ser buscar un microcontrolador que sea considerado“de bajo consumo” ya que la primera impresión es que el chip ATMega328 es bastante “comelon” en cuanto a baterías. En este post intentamos aclarar porqué sucede esto y como podemos diseñaraplicaciones con Arduino basadas en el ATMega328 que utilicen la energía de forma eficiente.

Hay que aclarar que NO estamos hablando de usar baterías durante 5 minutos para enseñarle al profesor un programa, o para mostrarle a tus amigos como funciona tu último Gadget hecho en casa. Estamos hablando de utilizar un grupo de pilas (AA, por ejemplo) para alimentar permanentemente una tarjeta durante el mayor tiempo posible. En estos casos, el uso de la energía durante periodos de inactividad y cualquier fuga de energía debe considerarse como importante.

Comenzaremos por explicar algunos puntos que hacen que la batería se desperdicie al utilizar un arduino, de manera que podamos hallar soluciones para optimizar el uso de la energía.

1. La mayoría de las tarjetas Arduino (y compatibles) usan un regulador lineal basado en alguna variante del LM1117. Un regulador lineal tiene la desventaja de ser poco eficiente, ya que transforma la energía que no llega a la carga en calor.

El regulador del Arduino es similar al LM7805. Estos reguladores se calientan por que la diferencia de voltaje entrada-salida se transforma en calor.

Imaginemos por un momento que utilizamos una batería de plomo-acido de 12 volts para alimentar un Arduino UNO que consume 50mA, y cuyo voltaje regulado de operación es de 5 volts. Entonces la energía disipada en forma de calor en el regulador es de P = (12 – 5 ) * 0.05A = 0.35 W mientras que la energía usada por el microcontrolador es de P = 5V * 0.05A = 0.25W. Como podemos observar, la mayoría de la energía (58%) se va como calor en el regulador en vez de realizar un trabajo útil.

2. Los reguladores lineales siempre utilizan corriente, aunque no tengan carga conectada. Esta es una característica del dispositivo y podemos encontrar información sobre este parámetro en la hoja de datos del regulador bajo el nombre de “Quiescent Current”. Esto es una medida necesaria para la operación y polarización de los circuitos internos del regulador y aunque generalmente es una corriente bastante pequeña, es importante mencionarla. Existen reguladores de ultra baja corriente en espera que ayudan a mitigar este problema, pero siempre se va a requerir de una pequeña corriente para el funcionamiento del regulador.

3. El voltaje de operación de la mayoría de las tarjetas Arduino es de 5 Volts. El rango de operación del microcontrolador ATMEGA328 va de los 1.8 Volts a los 3.3 Volts. Mientras que la mayoría de microcontroladores de “bajo poder” están en el rángo de 1.8 a 3.3 Volts.

Gráfica de la corriente requerida por el ATMEGA328 a diferentes voltajes y frecuencias de operación

Gráfica de la corriente requerida por el ATMEGA328 a diferentes voltajes y frecuencias de operación

Se puede apreciar que el ATMEGA328 corriendo a 8 Mhz es capaz de funcionar a 2.7 volts con menos de 2 mA mientas que a 5 volts demanda una corriente de 4 mA. Esto implica ahorros de  cerca del 50% de energía.

4. La mayoría de los osciladores funcionan a 16 Mhz. A mayor frecuencia de reloj, mayor consumo de energía. Esto es claramente visible en el gráfico anterior. Para muchos escenarios de “bajo poder” el uso del micro a 16 Mhz es exagerado. Podemos aumentar la vida útil de las baterías usando cristales de 8  Mhz o bien utilizar el oscilador interno del ATMEGA328.

El arduino utiliza un cristal de 16 Mhz que esta bastante sobrado para aplicaciones de bajo consumo de energía.

El arduino utiliza un cristal de 16 Mhz que esta bastante sobrado para aplicaciones de bajo consumo de energía.

5. Uso desmesurado de delays y programas que nunca pasan a modo de bajo consumo (sleep). El problema que debe resolver un ingeniero para lograr un producto de bajísimo consumo de energía va más allá del hardware. El software también desempeña un papel importante en el consumo de energía de un producto, y caso de que pensemos utilizar un programa con arduino durante un periodo de tiempo considerable utilizando baterías, conviene evitar al máximo el tiempo de pasamos en rutinas de retardos.

Con estos 5 factores cubrimos aspectos que uno puede pasar por alto fácilmente y que pueden consumir bastante energía. Como podrás ver, se trata de factores que caen predominantemente en el terreno del hardware, aunque el uso de energía también podría verse afectado por cuestiones de software que por ahora reservaremos para otra entrada.

De momento no me queda mas que invitarte a que nos hagas llegar tus comentarios más abajo… ¿Como has hecho para exprimir el máximo de esos mili-amperes hora en tus baterías?

Mitos de Arduino: Las baterias duran poco para alimentar un arduino.

 

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *