Aus Raspberry Pi Geek 06/2022

Stromverbrauch messen mit Hardkernels SmartPower 3 (Seite 3)

In Zeile 5 liest Pandas die Eingabedatei ein. Dabei agiert es sehr robust, unvollständige Zeilen bringen das Programm nicht aus dem Tritt. Die Zeilen 7 bis 9 vergeben Namen für die Spalten. Nach dem Zeitstempel ts folgen die Messwerte auf der Eingangsseite, danach die für die beiden Kanäle.

Listing 2

Datenanalyse (Ausschnitte)

import sys, pathlib
import pandas as pd
infile = sys.argv[1]
data = pd.read_csv(infile,header=None,sep=',')
data.columns = ['ts','I_V','I_C','I_P','I_on',
  'CH0_V','CH0_C','CH0_P','CH0_on','CH0_Int',
  'CH1_V','CH1_C','CH1_P','CH1_on','CH1_Int','cs1','cs2']
data['ts']    -= data['ts'][0]
data['ts']    *= 0.001
data['CH0_V'] *= 0.001
data['CH1_V'] *= 0.001
data['CH0_P'] *= 0.001
data['CH1_P'] *= 0.001
t = data['ts']
esum0 = (t.diff()*data['CH0_P']).cumsum()
esum1 = (t.diff()*data['CH1_P']).cumsum()
# print basic statistics (assume sampling is constant for avg)
print("\nmeasurement-duration: %5.1f sec" % t.max())
print("\n------- channel 0 ----------")
print("  min current %6.3f mA" % data['CH0_C'].min())
print("  avg current %6.3f mA" % data[data.CH0_on!=0].CH0_C.mean())
print("  max current %6.3f mA" % data['CH0_C'].max())
print("\n  min voltage %6.3f V" % data['CH0_V'].min())
print("  avg voltage %6.3f V" % data[data.CH0_on!=0].CH0_V.mean())
print("  max voltage %6.3f V" % data['CH0_V'].max())
print("\n  min power %6.3f W" % data['CH0_P'].min())
print("  avg power %6.3f W" % data[data.CH0_on!=0].CH0_P.mean())
print("  max power %6.3f W" % data['CH0_P'].max())
total = esum0.max()/3600
print("  tot energy %6.3f Wh" % total)
print("----------------------------\n")

Die Zeilen 11 bis 16 normalisieren und skalieren die Daten. Pandas operiert immer auf Tabellen oder Spalten. Das ist sehr praktisch, damit entfällt die Programmierung vieler Schleifen. In den Zeilen 18 bis 20 berechnet das Programm den Verbrauch. Die Variable t dient nur als Abkürzung; t.diff() gibt die Differenz zum Vorgänger aus, also die Intervalllänge. Diese wird mit der Leistung multipliziert. Das Ergebnis summiert dann die Variable cumsum() (kumulierte Summe) auf. Analog funktionieren die anderen Auswertungen ab Zeile 26. Einzige Feinheit dabei ist die Durchschnittsberechnung nur für Zeilen, bei denen der Kanal tatsächlich an war (Zeilen 27 und 31).

Visualisieren lassen sich die Daten mit dem Projekt Py-Datamon [7] des Autors. Der Python-Datenmonitor liest Daten aus einer Datei oder live über eine Pipe und stellt sie kontinuierlich dar. Abbildung 5 zeigt, dass der Zero 2W schon wieder herunterfährt, wenn der Zero W gerade den Boot-Vorgang abschliesst und mit der Arbeit beginnt.

Abbildung 5: Zero W und Zero 2W im Vergleich, erstellt mit dem Python-Datenmonitor Py-Datamon des Autors.

Abbildung 5: Zero W und Zero 2W im Vergleich, erstellt mit dem Python-Datenmonitor Py-Datamon des Autors.

Die maximale Stromstärke und damit die abgerufene Leistung am Anfang liegt beim Zero 2W deutlich höher als bei der ersten Generation, übersteigt aber nicht die USB-2-Spezifikation von 500 mA. Die Arbeit (Leistung mal Zeit), also der eigentliche Stromverbrauch, fällt aber trotzdem in Summe niedriger aus, wie die unterste Zeile der Grafik zeigt. Das Ergebnis lässt sich allerdings nicht verallgemeinern. Kann der RasPi die Aufgabe nicht parallel auf mehrere Kerne verteilen, dann arbeitet der Zero 2W zwar immer noch schneller als sein Vorgänger, aber nicht so extrem wie es Abbildung 5 suggeriert.

Vielleicht lohnt es sich dann, den Neuling nur mit einer CPU zu starten? Spoiler: Ist das System nicht optimiert, dann lohnt sich das nicht – mit vier CPUs durchläuft der Zero 2W schlicht den Boot-Prozess schneller. Der SmartPower 3 hilft bei der Vermessung solcher alternativen Szenarien.

Fazit

Das durchdachte und funktionale Messgerät SmartPower 3 erfüllt alle Erwartungen, die der Autor an ein solches Gerät der dritten Generation stellt. Hardkernel setzt konsequent auf freie Hard- und Software, was die Fehlersuche und Weiterentwicklung erleichtert.

Das nur angerissene Beispiel mit dem Zero 2W zeigt den sinnvollen Einsatzzweck. Dank des breiten Spannungsbereichs lassen sich aber auch andere Geräte des IT-Parks damit vermessen. Den Bastler schmerzt es wenig, wenn er dafür das passende Kabel erst selbst konfektionieren muss.

Aber auch unabhängig von den Messfunktionen leistet das SmartPower 3 als sehr kleines Zweikanal-Labornetzteil für die stabile Stromversorgung gut Dienste, vorausgesetzt, dass der Spannungsbereich ausreicht und Sie die Strombegrenzung nicht benötigen. (tle/jlu)

Der Autor

Bernhard Bablok arbeitet bei der Allianz Technology SE als SAP-HR-Entwickler. Wenn er nicht Musik hört oder mit dem Rad respektive zu Fuß unterwegs ist, beschäftigt er sich mit Themen rund um Linux, Programmierung und Kleincomputer. Sie erreichen ihn unter mailto:[email protected].

Infos

  1. Pi-Zero-Messmodul: Bernhard Bablok, Lothar Hiller, “Laboreinsatz”, RPG 06/2018, S. 54, https://www.raspi-geek.de/40630
  2. Projekt Pi-VA-Meter: https://github.com/bablokb/pi-vameter
  3. Hardkernel SmartPower 3 bei Pollin: http://ttps://www.pollin.de/p/odroid-smart-power-3-811406
  4. Netzteil für Hardkernel SmartPower 3 bei Pollin: https://www.pollin.de/detail/index/sArticle/97791
  5. Wiki zum SmartPower 3: https://wiki.odroid.com/accessory/power_supply_battery/smartpower3
  6. Quellcode und aktuelle Firmware zum SmartPower 3: https://github.com/hardkernel/smartpower3
  7. Python-Datenmonitor: https://github.com/bablokb/py-datamon
DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 6 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
RASPBERRY PI GEEK KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Raspberry Pi Geek bei Google Play Readly Logo
Nach oben