6. Energieverbrauchsmessung¶
6.1. Einleitung¶
In den vorherigen Projekten (Projekt 1, Projekt 2, Projekt 3, Projekt 4, & Projekt 5) nutzten wir bereits einen Raspberry Pi Zero 2W, um verschiedene neue Technologien kennen zu lernen. Diese Funktionalitäten sollen mit diesem Projekt um eine Energieverbrauchsmessung mit Berechnung der Restkapazität und Laufzeit erweitert werden. Hierzu werden die Messungen aus den letzten Projekten wiederverwendet um die Restkapazität und Laufzeit zu berechnen, sowie diese anschließend über eine Explorationskurve darzustellen
6.2. Grundlagen¶
6.2.1. Energieverbrauch und Batteriekapazität¶
Die elektrische Energie ( E ) (in Wh) ergibt sich aus der Integration der Leistung ( P = U ⋅ I ) über die Zeit:
Die verbleibende Batteriekapazität kann über die aktuelle Spannung als Prozentsatz der Nennspannung abgeschätzt werden:
Die Restlaufzeit ergibt sich aus der noch verfügbaren Energie und dem durchschnittlichen Verbrauch:
6.3. Planung¶
Für die Umsetzung der Restkapazitäts- und Laufzeitschätzung wurden verschiedene Ansätze evaluiert und diskutiert. Die unterschiedlichen Ansätze bieten jeweils sehr sichtbare Vor- und Nachteile, die im Folgenden kurz dargestellt werden.
Der erste und einfachste Ansatz wäre, die Spannung der Batterie als direkte Referenz für die Restkapazität zu verwenden. Bei einer konstanten Last würde dieser Ansatz zu einem akzeptablen Ergebnis führen, besonders bei geringerer Stromstärke. Bei einer solchen Entladung würde die Spannungskurve zuerst recht linear, zum Ende hin jedoch exponentiell abfallen. Nicht nur der exponentielle Verlauf würde zu einer ungenauen Schätzung führen, sondern auch die Tatsache, dass die Spannung der Batterie je nach Last und Temperatur stark schwankt. Eine exponentielle Kurve wäre in der Realität also nicht gegeben - die Spannung würde bei Entfernen der Last sogar wieder ansteigen. (Quelle batterie kurve, regeneration)
Der zweite Ansatz ist die Verwendung der Leistungsmessung. Durch die kontinuierliche Messung der Spannung und Stromstärke kann die Leistung berechnet und auf den Entladezeitraum integriert werden. Die resultierende Energie kann dann mit der zu erwartenden Gesamtkapazität der Batterie verglichen werden, um die Restkapazität zu schätzen. Ebenso kann die gemessene Leistung direkt für die Schätzung der Restlaufzeit verwendet werden. Für diesen Ansatz muss jedoch die Kapazität der Batterie bekannt sein. Dies ist recht problematisch, da vor allem bei Bleigelbatterien die Nennkapazität stark von der tatsächlich verfügbaren Kapazität abweicht. Es wird empfohlen, die Batterie nicht weiter als 10.5V zu entladen, dementsprechend ist die Ausbeute niedriger.
Der dritte Ansatz, der letztendlich auch umgesetzt wurde, kombiniert die beiden vorherigen Ideen. Die Kapazität der Batterie wird durch eine Erfassung der Kapazität über einen gesamten Entladezyklus ermittelt. Um einen geeigneten Start- und Endzeitpunkt des Entladezyklus zu finden, wird die Spannung der Batterie und die Stromstärke des Verbrauchers verwendet.
Ein Entladezyklus beginnt, wenn die Stromstärke über 0.08A steigt und die Spannung der Batterie unter 13V liegt. So soll sichergestellt werden, dass tatsächlich aus der Batterie gezogen, nicht in die Batterie hineingeladen wird. Ab diesem Zeitpunkt wird die gesamte Leistung aufgezeichnet.
Ein Entladezyklus endet, wenn die Batterie erstmals wieder auf über 13V steigt. An diesem Punkt ist davon auszugehen, dass die Batterie aufgeladen wird bzw. aufgeladen wurde.
Die Schätzung der Restlaufzeit basiert auf dem zweiten Ansatz. Es wird der Durchschnitt der gesamten Leistungsaufnahme über den Entladezyklus berechnet und anhand dessen abgeschätzt, zu welchem Zeitpunkt die zuvor kalibrierte Gesamtleistung erreicht wird.
Es existieren auch komplexere Ansätze, wie die Interpolation der Spannungskurve mit anschließender Extrapolation, um den Zeitpunkt zu berechnen, an dem die Kurve unter 10.5V fällt. Diese Ansätze sind jedoch für den begrenzen Zeitraum zu komplex umzusetzen. Ein deutlicher Vorteil eines solchen Ansatzes ist, dass Schwankungen in der Spannung weniger Einfluss auf die Schätzung haben, jedoch wird die Interpolation schnell zu aufwändig.
6.4. Durchführung¶
6.4.1. Prozess¶
Messung der elektrischen Größen:
Der Raspberry Pi misst jede Sekunde die Spannung der Batterie und Stromstärke des angeschlossenen Verbrauchers. Diese Werte werden weiterhin in der Datenbank gespeichert, um den Verlauf zu visualisieren.Erkennung des Verbrauchsbeginns:
Der Startpunkt des Energieverbrauchs wird erkannt, sobald der gemessene Strom über 0.08A liegt und die Batterie zuvor eine Spannung > 13V hatte. Letzteres soll sicherstellen, dass die Batterie aufgeladen wurde und nicht bereits teilweise entladen ist.Berechnung der prozentualen Batterieladung:
Die geschätzte Batterieladung wird aus der letzten Kalibrierung und dem aktuell gemessenen Verbrauch berechnet. Ein zuvor getesteter Ansatz, die Batteriespannung für die Schätzung der Restkapazität zu verwenden, wurde wie oben bereits erwähnt, verworfen, da die Spannung bei Entladung je nach Last und Temperatur stark schwankt und somit nicht die Kapazität wiederspiegelt.Integration des Energieverbrauchs:
Bei jedem Messintervall wird die Leistung berechnet und mit der Zeitdifferenz multipliziert, um die verbrauchte Energie zu bestimmen:\[\Delta E = U \cdot I \cdot \Delta t\]Die aufsummierte Energie ergibt den Gesamtverbrauch.
Berechnung der mittleren Leistungsaufnahme:
Für die Schätzung wird der durchschnitt der Leistungsaufnahme während des Verbrauchszeitraums verwendet. So kann eine gewisse Schwankung der Leistung ausgeglichen werden.Schätzung der Restlaufzeit:
Aus dem aktuellen Ladezustand und dem mittleren Verbrauch wird die verbleibende Zeit bis zur vollständigen Entladung abgeschätzt:\[t_{\text{rest}} = \frac{E_{\text{verbleibend}}}{P_{\text{mittel}}}\]
6.4.2. Software¶
6.4.2.1. Anpassung der Datenbank¶
Für die Erfassung der Kalibrierungsdaten wird eine neue Tabelle in der Datenbank angelegt. In dieser wird neben dem Zeitstempel die gesamte Kapazität der Batterie in Wh gespeichert.
CREATE TABLE IF NOT EXISTS
battery_calibration (
id SERIAL PRIMARY KEY,
timestamp TIMESTAMPTZ NOT NULL,
total_wh DOUBLE PRECISION NOT NULL DEFAULT 0
);
6.4.2.2. Anpassung des Skripts¶
Das Skript wurde um die oben beschriebene Funktionalität erweitert. Für die Erkennung eines Entladezyklus wird ein Schwellwert der Leistungsaufnahme definiert. Um zu vermeiden, dass Rauschen in den Messwerten zu einem falschen Startpunkt führen, wird dieser Schwellwert auf 0.08A gesetzt.
Sobald ein neuer Entladezyklus erkannt wird, beginnt das Skript, die Leistungsaufnahme nach jeder Messung zu berechnen und die verbrauchte Energie aufzusummieren.
Wenn zuvor eine Kalibrierung durchgeführt wurde (und dementsprechend ein Datensatz in der battery_calibration-Tabelle existiert), wird die verbleibende Batteriekapazität in Prozent und die Restlaufzeit berechnet. Diese Werte werden im Skript ausgegeben und ebenfalls bei jeder Messung aktualisiert.
Die Erkennung, wann ein Entladezyklus vollständig abgeschlossen ist, erfolgt über die Spannung der Batterie. Nach einigen Tests erwies es sich am zuverlässigsten, wenn das Anschließen eines Ladegeräts als Ende des Entladezyklus verwendet wird. Das Ladegerät erhöht die Spannung der Batterie schnell auf über 13V, was als Schwellwert hierfür definiert wurde. Sobald dieser Wert überschritten ist, wird die gesamte verbrauchte Leistung in der battery_calibration-Tabelle gespeichert und der Entladezyklus zurückgesetzt.