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ñar aplicaciones 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.

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 acaracterí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 mayorría de microcontroladores de “bajo poder” están en el rángo de 1.8 a 3.3 Volts.
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.

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 alla 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?
Hola
Hace unos años hice dos artículos de como reducir el consumo del arduino.
Espero que os sirvan.
http://seta43.hol.es/arduraa.html
http://seta43.hol.es/ardurab.html
Saludos
Juan
Hola que lasitma estan caidos, lo podras reepublicar?
Hola. me gustaria saber de que manera alimentar de bateria un arduino para un objeto de tamaño regular (como un monedero o cartera pequeña, casi del tamaño de un celular)
Gracias.
Me ha resultado muy interesante y lo considero un trabajo bien fundamentado. Gracias
Hola buenas!
alguien sabe cuantos sensores me soporta Arduino uno R3?
Por el titulo pensaba que lo desmentiría o explicarias como evitarlo, pero no…
Josè Gailsteo
Es realmente penosa la forma en que pueden atraer tu atenciòn personas sin escrupulos. Arduino recomienda usar de 6.5 a 8 voltios no regulados para alimentar a cualquiera de sus diferentes Boards por el puerto Vcc -si trabajan a 5 voltios- y de 4.5 a 6 voltios para sus versiones de 3.3 voltios. Hay alternativas conmutadas de facil implementaciòn, para alimentar el arduino en el pin de 5 o 3.3 voltios. -Consulta pàginas de Maxim ò Linear technology. —-basta con dos celdas de 1.5 voltios en serie, funcionan correctamente con perdidas del orden de 100 a 200 mW. a plena carga—..Siempre recuerda que el ATMega toma de referencia el bus de alimentaciòn para las conversiones anallògicas y dicho bus debe estar regulado al menos a la menor resoluciòn de sus convertidores A/D para que realice mediciones repetibles y pueda funcionar adecuadamente como medidor -temperatura, voltaje, densidad, etc.-. Por ùltimo y solo para aclarar el punto nro, 5, la grafica que presenta no especifica el nro. de instrucciones en funciòn del consumo de corriente, por lo que la aseveraciòn de no usar muchos delays para reducirlo, no es vàlida Al usar muchos delays solo te acabas los recursos de memoria del ATMega que estes usando.Saludos y suerte en tus proyectos. -P.D. Con razòn nadie comento nada en años-
Lo realmente penoso, mi estimado amigo, es comentar sin fundamentos y sin los conocimientos necesarios, te hace falta estudiar para poder emitir un comentario y te voy a decir puntualmente por que:
1.- Usar un regulador conmutado es la solución evidente cuando se habla de reguladores lineales y sus inherentes perdidas e ineficiencia (no aportas mucho). Por otra parte comentas que con 2 pilas se puede alimentar el arduino con las soluciones de Maxim/Linear. La realidad es que realmente ni siquiera es forzoso un regulador para alimentar el ATMEGA328 con 2 pilas, sobre todo si la relación costo/beneficio no lo hace viable (lo cual lleva a los siguientes puntos).
2.- En un diseño que debe operar por meses o años una perdida de 100 a 200mW en la conversión puede ser demasiado, sin considerar la energía desperdiciada por el convertidor DC-DC en standby y para su polarización y funcionamiento interno. Todo esto sin hablar del costo económico.
3.- El ATMEGA no toma como referencia necesariamente VDD. Se puede configurar para tomar una tensión de referencia externa (pin AREF) o bien una referencia interna de 1.1 volts, configurable por software.
4.- Se nota que careces completamente del conocimiento en patrones de diseño en software embebido: Utilizar delays obliga a el procesador a realizar una espera activa, en la que el procesador permanece ENCENDIDO y ACTIVO a toda potencia en un ciclo repitiendo una serie de conteos hasta que el tiempo requerido ha pasado.
Utilizar abundantes llamadas a “delay()” en una aplicación diseñada para bajo consumo es la PEOR (y lo repito… PEOR) práctica posible, a menos que quieras sabotearte y acabar con tus baterías antes del tiempo estimado. Para esto los micros cuentan con modos de bajo consumo de energía (sleep) e interrupciones que apoyan el desarrollo de software eficiente energéticamente hablando.
5.- La gráfica mostrada muestra la corriente de operación contra la frecuencia de ejecución de instrucciones y también el voltaje de alimentación. Todos estos son factores determinantes en la duración de baterías, no entiendo cual es tu punto sobre la gráfica.
Si pones atención el artículo ya te dice que debes hacer para lograr el máximo desempeño con baterías, todo sin dejar la plataforma arduino:
0.- Usar solamente el hardware indispensable (eliminar leds, interfaz USB, etc). De preferencia usar el ATMEGA328 con bootloader de arduino en un board / protoboard con circuito a medida.
1.- Cambiar el regulador lineal por conmutado (si se requiere un regulador)
2.- Usar el regulador con la mejor eficiencia posible y menor consumo de corriente intrínseco (generalmente no son baratos, por lo que deben usarse solo si se requieren)
3.- Reducir el voltaje de alimentación del micro ATMEGA328
4.- Reducir la frecuencia de reloj del micro ATMEGA328
5.- Hacer uso intensivo de instrucciones sleep e interrupciones y evitar llamar a delay (que es mala práctica en general)
Como puedes ver te falta Muuuuucho para ponerte a discutir en este tema. Sin embargo voy a usar tu comentario no constructivo y desinformativo, para mejorar el texto y permitir una mejor lectura del artículo.
Saludos.
Rubén, excelente argumento. Estamos claros que todas las críticas constructivas siempre son bien recibidas. Hay individuos que, lamentablemente, sólo ven la forma de sabotear un buen artículo. Si se cree un erudito en el tema, no lo lea y si no va a aporta nada valioso no pierda tiempo en escribir. Sin saber nada del tema o muy poco, me ha interesado bastante el concepto abordado. Invita a seguir estudiando y a hechar a andar la imaginación….
Gracias y siga aportando a la red que siempre va a haber alguien interesado en alimentar las neuronas.
Ruben acabo de terminar un proyecto de control remoto y necesitaba bajar el consumo de las pilas, tus comentarios fueron a exitosos para tomar desiciones antes de comenzar a programar, muchas gracias por tus aportaciones
buenas, con este método que recomiendas cuanto tiempo estimas que durará un par de pilas AA.
Estoy precisando mantener una placa arduino monitoreando durante meses.
saludos
Depende mucho de cuanto tiempo pases activo haciendo operaciones si por ejemplo debes monitorear cada 5-10 minutos y regresar a sleep deberías poder user más de 6 meses a 1 año. Mucho depende de que más conectes al microcontrolador y el consumo de estos circuitos externo también.
en particular haz utilizado la función snozze?
tienes idea de cual es el máximo tiempo que puedo ingresarle?
mi idea es de monitorear determinados sensores cada una hora durante mínimo 6 meses.
saludos
Ruben que tal, te quería consultar sobre un proyecto de seguridad que tengo en arduino el cual tiene un sensor de movimiento y tiene un loop que controla cuando da un valor HIgh, en ese momento la cámara del arduino dispara una foto para guardarla en la SD..
¿Tienes idea si lo ideal sería usar pilas o conviene usar corriente continua?