Optimierte Stromversorgungslösungen für Arduino-Projekte
Komponenten und Materialien
| Adafruit PowerBoost Charger Shield | 1 |
| Wiederaufladbarer LiPo-Akku (3,7–4,2 V) | 1 |
| Arduino UNO | 1 |
Über dieses Projekt
Arduino-Projekte brauchen typischerweise kein spezielles Powermanagement: Strom an → Boot → Job → Strom aus → Stopp. Im Gegensatz zum Raspberry Pi kein Risiko für SD-Karten-Korruption.
Doch für manche Anwendungen wünscht man sich überwachtes, gesteuertes Herunterfahren statt hartem Abschalten.
Beispiel: Entferntes Sensorsystem loggt Temperaturdaten. Fällt der Akku unbeaufsichtigt aus, stoppen Logs einfach. War es leerer Akku, Software- oder Hardwarefehler? Nicht sofort erkennbar.
Ebenso bei portablen Systemen: Akkustand und Ladebedarf im Blick zu haben, ist hilfreich.
Dieses Projekt stellt mehrere Ansätze zum Arduino-Powermanagement vor – Schaltungen, Software, Beschreibungen. Vom einfachen Ein/Aus-Taster bis zum Datenloggingsystem mit Akkustatus für unbeaufsichtigte Umgebungsüberwachung.
Sie können Teilsysteme nach Bedarf auswählen. Ich beschreibe sie in steigender Komplexität – unerwünschte Teile im Code einfach auskommentieren.
Basiert auf Ideen der LiPoPi- und Pi-Power-Projekte (ähnliche Funktion für Raspberry Pi).
Überblick
Das System bietet:
- Ein-/Ausschalten per Taster
- Akku-Spannungsüberwachung per Arduino ADC
- Abschaltung bei Unterspannung
- Aufzeichnung von Akkuspannung und Abschaltmeldung auf Datei
- Akku-Statusanzeige per Rot/Grün-LED
Jedes Feature fügt zwei Funktionen hinzu: arduinoPowerSetup() und arduinoPowerMonitor() – ergänzt zu Standard-setup() und loop().
Adafruit PowerBoost Shield
System nutzt wiederaufladbaren LiPo-Akku und Adafruit PowerBoost Charger Shield – lädt Akku und boostet Ausgang auf 5V.
Adafruit bietet drei Versionen: zwei Breakout-Boards und ein Arduino Shield. Hier hauptsächlich Shield, aber Breakouts werden später besprochen.
Shield-Vorbereitung (Adafruit Guide):
- Stacking-Headerleisten anlöten
- Nicht den mitgelieferten Schalter anlöten
- Draht (4 Zoll, 22 AWG, Massivdraht) an Enable-Pin löten
- Lötpads für Analogpin A0 auf Unterseite brücken
Ein-/Ausschalt-Schaltung per Taster
Grundschaltung: Tastendruck schaltet System an, weiterer Tastendruck (drücken & loslassen) schaltet aus – wie beim Smartphone.
Bei gedrücktem Taster auf ausgeschaltetem System: PowerBoost aktiv → versorgt Arduino → Boot → Programmstart.
Bei erneutem Drücken & Loslassen: Arduino deaktiviert PowerBoost → keine Stromversorgung → Arduino fährt runter.
Details: Adafruit Power On/Off. Schaltplan:

Hinweis: Diese Schaltung ist optional für den Rest des Projekts. Der mitgelieferte Schalter am PowerBoost funktioniert auch – Unterschied: Basis-Schalter schaltet hart ab, ohne Log-Nachricht.
Akku-Spannung überwachen
Arduino hat 6 ADCs an Analogpins 0–5 → Spannungsmessung einfach. PowerBoost Shield ermöglicht Verbindung der Akkuspannung (Vbat) an einen ADC durch Brücken der Lötpads (siehe Shield-Seite). Hier: Analogpin 0.
LiPo-Spannung: ~4,25 V (voll) bis ~3,7 V (leer). ADC wandelt 0–5 V in 0–1023 um, ausgelesen per analogRead().
Code-Snippet für Spannung und relativer Ladestand (min/max Akkuspannung):
float maxVoltage = 4.25;
float minVoltage = 3.75;
arduinoPowerVoltage = float(analogRead(arduinoPowerVoltagePin)) / 1024.0 * 5.0;
float fractionalVoltage = (arduinoPowerVoltage - minVoltage) / (maxVoltage - minVoltage);
LiPo-Entladung nicht linear, aber nah genug für Schätzung der Restlaufzeit via fractionalVoltage.
Kommunikation an Nutzer: Alphanumerisches Display möglich, nächster Abschnitt loggt auf SD-Karte. Aber oft Overkill.
Einfacher: RGB-LED, Farbe = Akkustand:
- Grün → > 50 %
- Gelb → 20–50 %
- Rot → < 20 % → Laden!
Umsetzung: RGB-LED (Common Anode) + 2× 1kΩ Widerstände zum Schaltplan hinzufügen, Code in arduinoPowerMonitor() ergänzen.

Hinweis: In der Praxis nutze ich 3,3 V für LEDs.
Hinweis: Messspannung kann stark „osczillieren“ (Gründe unklar). Nahe Farbwechselgrenzen flackert LED hin/her – nervig. Abhilfe: 0,1 µF Kondensator zwischen Analogpin A0 und GND.

Breadboard-Layout zeigt nicht Akku/Arduino. Sketch arduino_2_voltage_led implementiert Ein/Aus + LED-Spannungsanzeige. Code setzt Grün/Rot auf LOW für AN, HIGH für AUS.
Debug: Serial-Aufrufe im Code einkommentieren → Serial Monitor in IDE → echte und relative Akkuspannung sehen. Erster Messwert oft fehlerhaft.
Akku-Spannung auf SD-Karte loggen
LED-Anzeige gut für portable Systeme, wo Details egal sind – nur „wann laden?“.
Bei autarken Sensorsystemen (z. B. Garten) möchte man Akkuspannung mit Sensordaten loggen → Stromverbrauch über Zeit nachvollziehen.
Hier: Adafruit Data Logging Shield → CSV-Datei auf SD-Karte mit Timestamps. Adafruit Guide zu SD- und RTC-Library vorher verstehen.
Schaltung unverändert – LED als Sofortfeedback behalten (optional).
Wichtig: Abschaltmeldung loggen → erkennen, ob gewollt oder Fehler. Spannungsmonitoring: Bei Unterschreitung Mindestspannung sauber herunterfahren, Meldung davor loggen.
Sketch: arduino_3_voltage_logging. Enthält Hilfsroutinen für formatierte Timestamps, Hack: rote LED blinkt bei fehlender SD-Karte (passiert mir ständig).
Gesamter Stapel: Arduino UNO + Data Logging Shield + PowerBoost Shield + Breadboard:

Spannungsdaten
Akku-Spannung über ~20 Stunden – allmählicher Abfall. Nicht perfekt linear, aber für Restkapazitätsschätzung ausreichend.

0,1 µF Kondensator an A0 gegen GND hilft stark: Violette Kurve (mit Kondensator) vs. Blau (ohne) – deutlich geglättet.

Umweltdaten auf SD-Karte loggen
Nächste Erweiterung: Autarker Umweltsensor für Garten – Temperatur, Bodenfeuchte, etc.
Arduino in abgedichteter Box, unbeaufsichtigt für längere Zeit. Neben Akkuende: Feuchtigkeit im Gehäuse prüfen, Extreme Temperaturen vermeiden (Systemschaden).
Günstig & einfach: DHT22 Sensor (Temperatur + Luftfeuchte). Adafruit Tutorial.
In Beispielcode: Digitalpin 5 statt Pin 2 (Pin 2 für Power-Off-Button-Interrupt belegt).
Code: arduino_4_voltage_temp_humidity_logging. Nach Breadboard-Test auf Adafruit Proto Shield verlötet. DHT22 recht groß, aber billig. Alternativen: Breakouts von Adafruit, SparkFun.
Stromsparen in Arduino-Projekten
Nächste Stufe: Stromverbrauch senken, Akkulaufzeit verlängern.
Ausgangspunkt: Exzellentes Adafruit Tutorial „Low Power Datalogging“ von Tony DiCola.
Code
GitHub Repositories
Herstellungsprozess
- Leistungsverlust in Widerständen messen: Praktisches Experiment mit Jouleschem Gesetz
- Spannungsquellen: AC und DC erklärt
- Bulldozer-Technologie: Design, Fertigung und zukünftige Innovationen
- Batterien: Von Voltas Säule zu modernen Lithium-Zellen
- Bluetooth-gesteuerter Arduino-Spybot bauen – Überwachungsroboter mit IP-Kamera
- FlickMote: Gestensteuerung per Ultraschall & IR für Smart Home (Arduino 101)
- DIY Arduino TV-B-Gone: Universelle TV-Aus-Fernbedienung
- Einen eigenen LED-Master-Clock mit Alarm bauen – aus 12 Metern Entfernung ablesbar
- Windkraft: Umwandlung von Luftbewegung in sauberen Strom
- Auswirkungen von Subventionskürzungen auf Chinas Leistungsbatterieindustrie