Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Soluciones de Alimentación Optimizadas para Proyectos Arduino

Componentes y suministros

Adafruit PowerBoost Charger Shield × 1
Batería LiPo recargable (genérica) × 1 3.7 - 4.2V
Arduino UNO × 1

Sobre este proyecto

Los proyectos con placas Arduino normalmente no necesitan gestión de energía especial: conectas una fuente, el dispositivo arranca, hace su trabajo y se apaga al quitar alimentación. A diferencia de Raspberry Pi, no hay riesgo de corrupción de tarjeta SD.

Pero para algunas aplicaciones querrás monitorizar el estado de la energía y responder de forma gestionada, no solo apagarse.

Imagina un sensor remoto que registra temperatura. Si la batería se agota mientras está desatendido, los registros se detienen. No hay forma inmediata de saber si fue batería baja, fallo de software o hardware.

Asimismo, en un sistema portátil es útil saber cuánta batería queda y cuándo recargar.

Este proyecto presenta varios enfoques de gestión de energía para Arduino con circuitos, software y descripciones. Desde un simple interruptor de encendido/apagado hasta un sistema de registro de datos que incluye estado de batería para monitorización desatendida.

Puede elegir qué subsistemas le interesan. Los describo por complejidad creciente, pero puede comentar las partes que no necesite.

El proyecto se basa en las ideas de LiPoPi y Pi Power, que ofrecen funcionalidad similar para Raspberry Pi.

Visión general

El sistema proporciona:

Introduciré cada uno, pero el hilo común es la combinación del Adafruit PowerBoost y el Arduino.

En cada caso añade y personaliza dos funciones, arduinoPowerSetup() y arduinoPowerMonitor(), a las estándar setup() y loop() de tu código.

Escudo Adafruit PowerBoost

El sistema usa una batería LiPo recargable y el Adafruit PowerBoost Charger Shield, que carga la batería y eleva su salida a 5V.

Adafruit tiene tres versiones: dos breakout boards y un shield para Arduino. La mayor parte del trabajo aquí usa el Shield, pero mencionaré los breakouts después.

Lea la página de configuración del PowerBoost Shield. Para preparar el kit Shield debe:

Circuito Encendido/Apagado

Este circuito básico usa un pulsador momentáneo para encender y, al pulsar de nuevo, apagar el sistema, similar a un teléfono.

Al pulsar y mantener en sistema apagado, el PowerBoost se activa y alimenta al Arduino, que arranca y ejecuta su programa.

Al pulsar de nuevo y soltar, el Arduino desactiva el PowerBoost y, al dejar de suministrar energía, el Arduino se apaga.

Detalles en la página enlazada. Esquemático:

Soluciones de Alimentación Optimizadas para Proyectos Arduino

Nota: No necesita este circuito para el resto del proyecto. Puede usar el interruptor opcional del PowerBoost. La diferencia principal es que el interruptor básico apaga sin poder registrar un mensaje de log.

Monitorizar voltaje de batería

El Arduino tiene 6 conversores analógico-digitales (ADC) en pines A0-A5, facilitando la medición de voltaje. El PowerBoost Shield permite conectar el voltaje de batería (Vbat) a uno de estos puentes los pads correspondientes. En este ejemplo lo conecto a Analog pin 0.

El voltaje de baterías LiPo varía de ~4.25V (carga completa) a ~3.7V (descargada). El ADC convierte 0-5V en enteros 0-1023, accesibles con analogRead().

Este fragmento muestra cómo hacerlo y calcular el estado relativo de la batería usando voltajes min/max:

float maxVoltage = 4.25;
float minVoltage = 3.75;
arduinoPowerVoltage = float(analogRead(arduinoPowerVoltagePin)) / 1024.0 * 5.0;
float fractionalVoltage = (arduinoPowerVoltage - minVoltage) / (maxVoltage - minVoltage);

Las baterías LiPo no pierden voltaje linealmente, pero es suficientemente cercano para estimar vida restante con el voltaje fraccional.

Para comunicar al usuario, podríamos usar pantalla alfanumérica, pero en la siguiente sección registro en tarjeta SD. Para muchos proyectos es excesivo.

Un enfoque simple: usar LED RGB y cambiar color según batería:

Añada un LED RGB y dos resistencias de 1K al circuito y código en arduinoPowerMonitor().

Los LED RGB suelen ser Ánodo Común, así que este circuito funciona:

Soluciones de Alimentación Optimizadas para Proyectos Arduino

NOTA: En la práctica uso la alimentación 3.3V para los LEDs.

NOTA: Puede haber "oscilación" significativa en el voltaje medido (razones desconocidas). Si la batería está cerca de un umbral de cambio de color, el LED parpadeará entre dos estados, muy molesto. Solución rápida: colocar un condensador 0.1uF entre pin analógico A0 y GND.

Soluciones de Alimentación Optimizadas para Proyectos Arduino

Este layout de protoboard no muestra batería ni Arduino. El sketch arduino_2_voltage_led implementa Encendido/Apagado y display de voltaje con LED. El código pone el pin verde o rojo en LOW para encender y HIGH para apagar.

NOTA: Puede ver voltajes medidos y depurar descomentando llamadas a Serial y abriendo el Monitor Serie en el IDE. Verá voltaje real y fraccional. Por alguna razón la primera lectura es incorrecta.

Registrar voltaje de batería en tarjeta SD

El indicador LED es útil para sistemas portátiles donde no importan detalles, solo saber cuándo recargar.

Pero si monitoriza sensores en un sistema autónomo, querrá registrar voltaje de batería junto con datos de sensores para analizar consumo energético.

Uso el Adafruit Data Logging Shield que graba datos en formato CSV en tarjeta SD con timestamps. La guía de Adafruit explica las librerías SD y RTC; entiéndalas antes de continuar.

El circuito no cambia del ejemplo anterior; vale la pena mantener el LED para feedback inmediato, pero no es necesario.

Como registramos en tarjeta, es importante registrar un mensaje de apagado. Así sabremos si el apagado fue intencional o por error.

Además, al monitorizar voltaje, podemos detectar cuando cae por debajo de un mínimo y apagar el sistema de forma segura, registrando un mensaje antes.

El sketch es arduino_3_voltage_logging. Incluye rutinas para generar timestamps formateados y un truco para parpadear LED rojo si olvida insertar tarjeta SD (me pasa siempre).

La pila completa (Arduino UNO, Data Logging Shield, PowerBoost Shield, protoboard) se ve así:

Soluciones de Alimentación Optimizadas para Proyectos Arduino

Datos de voltaje

Gráfica del voltaje de batería en ~20 horas, mostrando declive gradual. No es perfectamente lineal, pero suficientemente cercano para estimar energía restante.

Soluciones de Alimentación Optimizadas para Proyectos Arduino

Como mencioné, añadir condensador 0.1uF entre A0 y GND ayuda. En la muestra, la línea morada muestra el impacto del condensador vs la original en azul.

Soluciones de Alimentación Optimizadas para Proyectos Arduino

Registrar datos ambientales en tarjeta SD

Una adición más: un monitor ambiental autónomo para mi jardín (temperatura, humedad del suelo, etc.).

Instalaré Arduino, etc., en caja sellada desatendida. Además de batería, quiero detectar humedad interna y temperaturas extremas que dañen el sistema. Sensor barato y fácil: DHT22 (ver tutorial Adafruit).

En mi código uso pin digital 5 en vez del 2, porque ya uso el 2 para interrupción del botón de apagado.

Código en arduino_4_voltage_temp_humidity_logging. Una vez funcionando en protoboard, lo monté en un Adafruit Proto Shield. El DHT22 es voluminoso pero barato. Vea otras breakout boards de Adafruit, Sparkfun, etc.

Conservación de energía en proyectos Arduino

La siguiente etapa es reducir consumo y extender vida de batería.

Mi punto de partida es el excelente tutorial de Adafruit "Low Power Datalogging" de Tony DiCola.

Código

GitHub

https://github.com/craic/arduino_power

GitHub (LiPoPi)

https://github.com/NeonHorizon/lipopi

GitHub (Pi Power)

https://github.com/craic/pi_power

Proceso de manufactura

  1. Tecnología de bulldozers: diseño, fabricación e innovaciones futuras
  2. Baterías: De la pila de Volta a las modernas celdas de litio
  3. Construye un Spybot controlado por Bluetooth con Arduino
  4. FlickMote: Mando IR por gestos para Smart Home
  5. TV‑B‑Gone DIY con Arduino: Mando universal para apagar cualquier TV
  6. Construye un Reloj Maestro LED Personalizado con Alarma – Visible desde 12 Metros
  7. Find Me: Localizador Inteligente de Objetos con Arduino y Bluetooth
  8. Energía eólica: Conversión del movimiento del aire en electricidad limpia
  9. Impacto de la Reducción de Subsidios en la Industria de Baterías de Potencia de China
  10. Medición de la disipación de potencia en resistores: experimento práctico con la ley de Joule
  11. Fuentes de alimentación: CA y CC explicadas