¿Cuánto consume Arduino?
Material requerido.
Arduino Uno o compatible y con el firmware para S4A cargado. |
|
Unos cables dupont. | |
Una Protoboard | |
Un multímetro digital. |
El consumo real de Arduino
Mas pronto que tarde, si estas jugando con los Arduinos un poco mas en serio que la media, te vas a encontrar con que quieres correr un registro de datos, un data logging, en algún punto lejos de un punto de suministro eléctrico.
La solución es fácil, incorporas unas baterías y listo. A funcionar un año a base de baterías. ¿Cuánto has dicho?
El problema es que las baterías tiene la mala costumbre de agotarse antes de tiempo y dejarte tirado. Por eso calcular adecuadamente su capacidad es clave para que este tipo de proyectos sean viables, así que tenemos que empezar dimensionando adecuadamente la batería en función de los consumos.
Vale, ningún problema. Midamos el consumo de nuestro prototipo.
De nuevo tenemos un pequeño problema y es que aun no tenemos prototipo para medir y por tanto vamos a tener que estimar consumos y todo eso. Y necesitamos tener una idea aproximada para estimar si nuestro proyecto es viable.
Podemos empezar midiendo el consumo en vacío de nuestro Arduino UNO, por ejemplo, y así poder hacer algunos cálculos sencillos.
Esta claro que cuanto menos consuma nuestro equipo mas duraran las baterías. Pero …¿Cuánto es la duración real de eso? ¿Una semana? ¿Un mes? ¿Un año quizas?
Queridos amigos, en la vida de todo científico (O técnico) hay un punto en el que hay que mancharse las manos de grasa y bajar al mundo real. ¡Hay que medir!
Y tenemos que empezar midiendo los consumos reales de nuestro Arduino. Y pacientes lectores, este es el primer objetivo de esta humilde sesión que nos ocupa.
¿Cuándo consume Arduino?
¿No me digáis que nunca os habéis planteado esta pregunta? Si os pasa como a mi, claro que os la habéis hecho, e incluso lo habéis consultado por Internet con mejor o peor fortuna, y habréis encontrado bastantes opiniones y en su mayor parte divergentes.
Así que vamos a hacer nuestras propias medidas para salir de dudas, y para ello vamos a plantear el método que vamos a usar.
En primer lugar vamos a empezar con un venerable Arduino UNO. Podríamos sentir la tentación de usar el conector de barrilete o el USB pero para poder medir el consumo real tendríamos que romper un cable para poner nuestro multímetro en serie con la alimentación, y aquí no rompemos nada si se puede evitar, porque es algo que me repatea el higadillo.
Incluso si rompiéramos el cable de alimentación de barrilete, seria muy mala idea medir el consumo por ahí, porque esa es la entrada al regulador LM7805 que incorporan todos los Arduinos UNO y MEGA, que si bien es barato es un autentico asco en cuanto a eficiencia energética.
Hasta el punto que si usamos un típico alimentador de 9V, el regulador LM7805 básicamente desperdicia la mitad de la energía ( 1 – 5/9 = 45%) en forma de calor.
Estos reguladores son baratos y eficaces pero no se ocurra usarlos en situación de baterías, Con estas hay que buscar otras soluciones, como Buck converters (fuentes power down) o Boosters (fuentes power up) si nuestra batería es de digamos 9V o 12V.
Para nuestra medida vamos a optar por alimentar nuestro Arduino desde los pines de tensión en los laterales, a 5V y GND:
Para medir el consumo real de nuestro circuito vamos a usar un multímetro sencillo que aunque no es de precisión nos va a sobrar para medidas a palmos, que es lo que nos interesa en este caso. Podemos montar el circuito asi:
Voy a usar una fuente de protoboard porque de ese modo puedo medir el consumo pinchando el polímetro a través de la protoboard sin necesidad de pelar cables ni romper conectores. Me ha parecido una forma cómoda de hacerlo (Y recordad que soy muy vago)
Un par de consideraciones.
 :
Llegados a este punto basta ya con encender todo y medir lo que consume nuestro Arduino UNO. Aquí os dejo un mini vídeo con el asunto:
El resumen es que poco mas o menos un Arduino UNO consume unos 46 mA en reposo y por si mismo.
Calculando la duracion de la bateria
Vale. Ya sabemos cuanto consume un Arduino UNO, como 46 mA el sólito y ahora ¿Como calculo el tiempo de vida de la batería?
Pues fácil, fácil. Vete a Amazon o Ebay o donde prefieras y busca baterías de 5V. Enseguida encontraras una pila de ellas tratando de llamar tu atencion.
Lo importante de una batería son dos cosas principales: La tensión que proporcionan en Voltios y la capacidad que normalmente se mide en mAh (mili amperios hora)
 :
Encontraras baterías de diferentes capacidades y precio pero enseguida las encontraras de 1.000 a 1.200 mAh. Como sabemos que nuestro Arduinillo consume unos 46 mA, la cuenta es así de fácil:
1200 mAh / 46 mA = 26.08 horas
La razón de que la capacidad de las baterías se mida en mAh es precisamente que para calcular su duración, basta con dividir esa capacidad por la corriente que usa. No hay mas. ¿A que creías que iba a ser mucho mas difícil? Pues ya ves.
Pero aun asi, tenemos un problema serio. Incluso con una batería decente, parece que nuestro limite es poco mas de un día, y eso si no hacemos nada. En cuanto le coloquemos algo a nuestro Arduino la cosa va a empeorar.
¡Pero que desastre! ¡Esto no puede ser! ¿Pero a donde vamos así?
Bueno, cuando se os pase la rabieta, empezaremos a buscar soluciones que para eso estamos los ingenieros, y recordad que según decía un viejo profesor:
“Recordad siempre que ingeniero viene de ingenio. Usad el vuestro”
¿Por donde podemos empezar? Veamos, una pregunta sensata sería ¿Todos los modelos de Arduino consumen lo mismo? ¿O hay unos que consumen mas que otros?
A medir, pues (Vale el mismo sistema de antes y he probado unos cuantos modelos que tenia rodando por la mesa) y esto es lo que tenemos:
Modelo | Consumo en mA | Duracion de una bateria de 1200 mAh |
---|---|---|
Arduino UNO | 46 | 26 horas |
Arduino MEGA | 93 | Casi 13 horas |
Arduino DUE | 75 | 16 horas |
Arduino Nano | 15 | 80 horas |
La primera conclusión si vas a correr un Arduino con baterías es que procures usar un Arduino Nano. Porque parece que bate el record de eficiencia energética de los Arduinos.
El Nano tuvo un re-diseño reciente para esto precisamente y daros cuenta de que no incluye un regulador de tensión, porque solo se puede alimentar por USB a 5V, o alimentándolo directamente con un fuente externa de 5V (Que es lo que yo he hecho con la fuente de protoboard) y quitar ese chip libera ya unos 10 mAh de consumo.
Ya esperábamos que el MEGA consumiese mas dado su mejor chip, pero teníamos alguna esperanza con el DUE, ya que al ir a 3,3V su consumo debería ser menor, pero su mayor velocidad de reloj y potencia de procesador tienen un precio.
 :
Aun con el Nano, la duración de las baterías no llega a 4 días. Podemos comprar mayores baterías, de hasta 5.000 mAh que son 4 veces lo que habíamos hablado, a cambio de empezar a ser un trasto que pesa y ciertamente voluminoso y aun así solo habremos conseguido llegar a 333 horas con un Nano. Poco menos de dos semanas. De un año mejor ni hablamos.
Mejorando la duracion de las baterias
¿Por qué consume tanto un Arduino UNO?
En primer lugar, porque Arduino esta diseñado para ser fácil de manejar, no para ser eficiente. En la vida hay que elegir y todas las elecciones acarrean inconvenientes y hay que apechugar.
Tu Arduino tiene un consumo relativamente alto porque no solo el chip ATMEGA328 consume, sino que también consumen los chips de control del USB y el regulador de tension (Al menos 10 mA en vacío)
Si no necesitas todo eso, puede ser buena idea diseñar un circuito con solo el procesador de Arduino sin el resto de componentes como veíamos en la sesión Arduino en Protoboard. y eso disminuiría sensiblemente el consumo a unos 20 mA. Pero probablemente esta opción no esta al alcance de nadie que no haya diseñado antes places de circuito impreso PCB propias (Printed Circuit Board).
Otra solución es que el consumo energético del chip central depende de la frecuencia del reloj o cristal de nuestro circuito. Arduino UNO corre normalmente a 16Mhz pero existen modos de bajar esta velocidad a la mitad usando un reloj interno del propio chip y eliminando la necesidad de un cristal externo.
Ciertamente esto supone disminuir a la mitad, la ya de por si escasa capacidad de operación del UNO, pero para leer un sensor o enviar un mensaje puede no necesitarse mas y es una solución a considerar, que por ahora ignoraremos.
 :
Las pilas de 9v que se suelen dibujar en los montajes de Arduino no suelen tener mas allá de unos 300mA, lo que normalmente las hace una muy mala elección para nada que no sea correr algo para enseñar a tu profe o así.
Las pilas alcalinas del tipo AA disponen de una buena relación de precio duración porque a diferencia de las de 9V suelen ser de alrededor de 2.800 mAh, pero el inconveniente es que se gastan y hay que reponerlas.
En general os recomendaría que cortarais el regulador de tensión de vuestro Arduino si vais a usar un proyecto de larga duración, y le alimentéis directamente con 5V desde los pines de tensión con en el ejemplo de mas arriba.
Podríamos usar un buck boost converter, una fuente de alimentación conmutada, para que usando por ejemplo 10 pilas AA de 1,5V en serie, alimentáramos nuestro Arduino.
 :
Podemos poner en serie las baterías, con lo que se suman las tensiones de cada una y obtendríamos 15V de diferencia con el que podríamos alimentar el buck boost converter y garantizar una tensión de 5V estable para alimentar nuestro circuito.
Pero incluso una fuente de este tipo tiene una perdida de energía en la conversión ya que su eficiencia no sera mayor de un 85%, aunque podría compensar su uso. Habría que probarlo.
Quizás alguno de los que leéis esto tengáis mas experiencia que yo con las baterías y seria interesante oír vuestros comentarios.
Esta no pretende ser una disquisicion sobre baterias, pero si el tamaño y peso no son importantes en nuestro proyecto, una vieja bateria de coche, de plomo y acidos malisismos para el medio ambiente, son la solucion ideal ya que no es dificil encontrarlas de uno 80 Ah por 60 – 70€.
Si esto es excesivo tambien las hay mas pequeñas, pero las ventajes de las baterias de plomo es que estan super probadas y hay oferta abundante a bajo precio (relativamente). Son las campeonas de capacidad.
Y por ultimo, la solución de verdad que es la que hay que emplear (Además de todas las anteriores): Hacer entrar a vuestro Arduino en modo Sleep, es decir ponerlo en situación de letargo para que reduzca al mínimo su consumo, especialmente si como es habitual solo tiene que tomar unas medidas cada… ¿Media hora?
El resto del tiempo que no ha saltado el ciclo de lectura, hay que apagarlo e hibernar hasta que llegue la primavera, y con las luces apagadas.
La solución es por supuesto una combinación de todo estas cosas y el modo Sleep, pero esto es ya el tema de la próxima sesión.
Resumen de la sesión