Alternativa de bajo consumo a Arduino, para proyectos sencillos

Tengo un proyecto Arduino realmente simple: el sensor ultrasónico HC-SR04 devuelve la distancia que luego se usa como tiempo de sueño durante un efecto de onda LED. Entonces es una distance <-> LED-wave velocityrelación simple. Cuanto más se acerque al dispositivo, más rápidos serán los LED. Eso es todo.

La corriente que se extrae cuando no se ejecuta la onda LED y solo se verifica 5 veces por segundo si la distancia es inferior a 2 metros: 15 mA. Este valor es en mi opinión enorme.

Luego escuché sobre ESP-8266. Puede reemplazar completamente a Arduino. Sin embargo, los niveles de potencia aún no son lo suficientemente buenos. Navegué más, lea sobre Teensy y otros, y todos consumen energía como locos; parece así si una persona piensa en usar baterías por un momento.

Creo que los profesionales conocen la solución. Los aficionados están atrapados en un mundo Arduino muy divertido.

¿Alguien puede revelar la verdad? Debe haber una respuesta, ya que, por ejemplo, los ratones de computadora pueden funcionar durante meses con dos AA. O, por ejemplo, una lámpara comprada activada por detección de movimiento funcionó muy bien durante 7 días antes de que me aburriera y la pusiera en un cajón. La lámpara estaba dando luz real , no parpadeos de LED, y no agotó las tres pilas AAA que usaba.

¿Qué puedo usar para mi proyecto simple? Necesita funcionalidad de ping para HC-SR04, 8 pines para LED y eso es todo. ¿Cómo hacer esto correctamente y que la batería dure meses?

Lea sobre los modos de suspensión del ATmega328. Si duerme la mayor parte del tiempo y solo se despierta para comprobar la distancia, ahorrará bastante energía. Creo que encontrará que, en última instancia, la corriente del LED inundará todos los demás consumos de energía.
"... ESP-8266... ​​los niveles de potencia aún no son lo suficientemente buenos". - Si por "todavía no es lo suficientemente bueno" te refieres a "unas 10 veces peor" :P

Respuestas (3)

El Arduino tiene reguladores y chips USB-Serial que no son compatibles con Sleep.

Sin embargo , si observa la hoja de datos de ATMega328 (sección 32.2.2), verá que los estados de suspensión existen hasta alrededor de 4-8 uA (wake on WDT) para la MCU.

Considere simplemente construir su propio clon de Arduino (si ese es el entorno de programación que desea usar) que solo tenga el ATMega328 (u otro AVR como el ATMega8L). Puede funcionar con 3 baterías AAA sin un regulador, siempre que no necesite admitir LED de mayor voltaje. Hay muchos recursos que muestran cómo programar un entorno de cargador de arranque Arduino en una MCU AVR independiente. Podrías empezar aquí y aquí .

El chip utilizado en Arduino Uno (Atmega328P) ciertamente puede funcionar con bajo consumo de energía.

Consulte mi página sobre ahorro de energía para obtener más detalles.

Mi expectativa básica es que si no necesita un temporizador (por ejemplo, para hacer algo periódicamente), puede bajar a 100 nA de corriente y aún despertarse con una interrupción, como presionar un interruptor.

Si necesita despertarse de vez en cuando (usando el temporizador de vigilancia), su uso actual será de alrededor de 6,5 µA. Esto es mucho más bajo que los 15 mA que cita.

Si usa una placa Arduino , el LED integrado, el chip de interfaz USB y el regulador de voltaje serán los principales culpables de la alimentación. Además, no entrar en modo de suspensión no ayuda.

Hice un registrador de temperatura y humedad , vea la imagen a continuación, que ha estado funcionando durante un par de años tomando una lectura cada 15 minutos y registrándola en una tarjeta SD. Funciona con 3 pilas AA.

Registrador de temperatura

Está diseñado para dormir la mayor parte del tiempo. El "mosfet de alimentación de periféricos" que se muestra se utiliza para "apagar" los dispositivos integrados cuando no se necesitan.

Qué gran blog sobre la configuración de consumo de energía para los AVR, debe estar seriamente "en sintonía" con la hoja de datos.

Creo que he encontrado la respuesta: MCU de Texas Instruments. Por ejemplo, este: MSP430FR6989 tiene corriente, a 1 MHz con una tasa de aciertos de caché del 0%, 0,375 mA. Para modo de bajo consumo 0 (LPM0): 0,120 mA, para LPM1: 0,065 mA. Los LPM restantes tienen una corriente de 0,001-0,009 mA. Si el software consultará HC-SR04 dos veces por segundo, es decir, dormirá en un LPM durante 500 ms después de cada conjunto de acciones completo, entonces creo que obtendré el efecto deseado de meses con las baterías.

Por si sirve de algo, a 1 MHz y 3 V, el atmega328P (el MCU del Arduino) muestra un consumo de energía similar. Probablemente lo mismo para PIC comparables. Se trata más de la velocidad del reloj y el voltaje que del chip en particular (aunque definitivamente también hay diferencias).
@marcelm: 16 MHz como Arduino Uno y el peor escenario (0% de caché), entonces la corriente es de 2.675 mA. He medido mi circuito y consume 15 mA, aunque es una placa completa y se adjunta HC-SR04. Me pregunto si LPM0, el modo de ahorro de energía más débil, realmente permite ejecutar normalmente el código y el dispositivo.
@Itze. El HC-SR04 tiene un mínimo de 1,5 - 2 mA cuando está inactivo, por lo que tendría que apagarlo por completo para llegar a una corriente realmente baja. Como se comentó antes, casi cualquier MCU tendrá estados de suspensión. Sin embargo, cuando está activo (es decir, midiendo la distancia con el HC-SR04), puede estar despierto hasta 40 mS (distancia máxima). Esto significará 40 mS despierto y 160 mS dormido (a una tasa de repetición de 5 por segundo), lo que significa que lo mejor que puede lograr es un ahorro promedio actual del 70% desde el estado inactivo al ir a dormir.