Warum ein Mikrocontroller-basiertes Power Meter bauen?

Die Stromrechnungen für Privathaushalte steigen weiter, und zu verstehen, wo genau Strom verbraucht wird, ist der erste Schritt zur Reduzierung von Abfall. Kommerzielle Energiemonitore kosten oft Hunderte von Dollar und haben keine Flexibilität, um mit benutzerdefinierten Hausautomationsystemen zu interagieren. Ein auf Mikrocontroller basierender Stromzähler bietet eine kostengünstige Alternative, die Sie auf Ihre spezifischen Bedürfnisse zuschneiden können. Durch die Messung von Spannung, Strom und die Berechnung der realen Leistung liefern diese Geräte umsetzbare Erkenntnisse, die Ihnen helfen, Lasten zu verschieben, fehlerhafte Geräte zu identifizieren und langfristige Trends zu verfolgen. Dieser Leitfaden führt durch die Hardwareauswahl, das Schaltungsdesign, die Firmwareentwicklung und die Kalibrierungsschritte, die erforderlich sind, um einen zuverlässigen, genauen Stromzähler zu bauen Arduino, ESP32 oder ähnliche Plattform.

Kernkomponenten: Was Sie brauchen und warum

Jedes Leistungsmessgerät hängt von einigen kritischen Komponenten ab. Die Auswahl von Qualitätsteilen beeinflusst direkt Genauigkeit, Sicherheit und Benutzerfreundlichkeit. Im Folgenden werden die einzelnen Elemente aufgegliedert, gemeinsame Optionen diskutiert und erklärt, wie sie zusammenarbeiten.

Microcontroller (MCU) – Das Gehirn

Der Mikrocontroller tastet analoge Signale ab, führt Berechnungen durch und übernimmt die Kommunikation. Für die Energieüberwachung zu Hause ist der ESP32 eine gute Wahl, da er WiFi und Bluetooth integriert, mit 3,3 V läuft und eine Dual-Core-Verarbeitung bietet. Wenn Sie Einfachheit bevorzugen, funktioniert ein Arduino Uno (5 V Logik) gut für das Prototyping, erfordert jedoch einen externen WiFi-Schild für die Konnektivität. Zu den wichtigsten Spezifikationen gehören die ADC-Auflösung (10 Bit ist üblich, aber 12 Bit oder höher verbessert die Präzision), die Abtastrate (idealerweise > 1 kHz für genaue RMS-Berechnungen) und die Anzahl der analogen Eingänge (mindestens zwei: einer für Spannung, einer für Strom).

Spannungssensorik

Die erste Herausforderung ist die sichere Messung der Netzspannung (normalerweise 110–240 VAC). Der direkte Anschluss des ADC des Mikrocontrollers wäre gefährlich und illegal. Der sicherste Ansatz verwendet einen Potentialtransformator oder einen Präzisionsspannungsteiler gefolgt von einem Isolationsverstärker. Eine gängige DIY-Methode verwendet einen 230V-zu-9V AC-Abwärtstransformator, wobei die Sekundärseite in einen resistiven Teiler eingespeist wird, um die Spitzenspannung auf ~1V zu skalieren, dann um die Hälfte der ADC-Referenz (z. B. 1,65V für ein 3,3V-System) versetzt werden. Für Split-Phase-Systeme (US 240V/120V) benötigen Sie möglicherweise zwei Spannungssensoren. Stellen Sie sicher, dass Ihre Schaltung eine ordnungsgemäße Verschmelzung und Isolation enthält, um Stoßgefahren zu vermeiden.

Aktuelle Sensing

Für die Strommessung sind Split-Core-Stromwandler (CTs) ideal, weil sie sich ohne Unterbrechung des Betriebs um eine spannungsführende Leitung klemmen. Die SCT-013-Familie ist beliebt: Die 30A/1V-Variante gibt 0-1V AC proportional zum Strom aus, den ein ADC nach DC-Vorspannung lesen kann. Hall-Sensoren wie die ACS712 oder ACS758 bieten DC/AC-Messungen in einem kompakten IC-Paket, erfordern jedoch das Schneiden des Stromkreises und das Einsetzen des Sensors. CTs sind nicht-invasiv und werden für feste Installationen bevorzugt. Wählen Sie einen CT mit einer Strombewertung, die leicht über Ihrer maximalen erwarteten Last liegt (z. B. 100A für einen Ganzhausmonitor).

Analog-Digital-Konvertierung (ADC)

Der eingebaute ADC des Mikrocontrollers ist für Basiszähler ausreichend, aber seine begrenzte Auflösung (10 Bit auf Arduino, 12 Bit auf ESP32) und Rauschuntergrund können Fehler verursachen. Für eine höhere Genauigkeit sollten Sie einen externen ADC wie den MCP3208 (12-Bit, SPI) oder ADS1115 (16-Bit, I2C) in Betracht ziehen. Der ADS1115 ist besonders beliebt, da er programmierbare Verstärkung (bis zu ±256 mV) und geringes Rauschen bietet, was eine genaue Messung kleiner Signale ermöglicht. Verwenden Sie Differenzeingänge für den Stromsensor, um Gleichtaktrauschen zu unterdrücken.

Display und Konnektivität

Ein lokales Display (OLED 128×64, TFT oder Zeichen-LCD) zeigt die Echtzeitleistung in Watt, Kilowattstunden und Kosten an. Für den Fernzugriff können Sie mit WiFi (ESP32 integriert) oder einem externen ESP-01-Modul Daten an MQTT, ThingsBoard oder einen einfachen Webserver senden. Bluetooth BLE ist eine Option für mobile Anwendungen mit geringer Reichweite. Stellen Sie sicher, dass Ihre Konnektivität den Stromverbrauch nicht so weit erhöht, dass Energieeinsparungen zunichte gemacht werden.

Schaltungsdesign und Sicherheitsüberlegungen

Vor der Montage der Schaltung auf Papier. Die Spannungs- und Strommesspfade müssen vollständig voneinander und von der Niederspannungs-MCU-Seite getrennt sein. Verwenden Sie eine 5V- oder 3,3V-regulierte Versorgung, die von einem kleinen Wandadapter und nicht vom Netz stammt. Alle Verbindungen zum Netz sollten in einer isolierten Box eingeschlossen und für die erwartete Spannung und den erwarteten Strom ausgelegt sein. Arbeiten Sie niemals an Stromkreisen, es sei denn, Sie sind qualifiziert. Integrieren Sie eine Sicherung auf der Primärseite eines Transformators und halten Sie die Leiterbahnen kurz, um die Geräuschkopplung zu reduzieren.

Eine typische Schaltung für einen Einphasenzähler:

  • Spannungskanal: Step-Down-Transformator (z. B. 9V AC-Ausgang) → Spannungsteiler zum Reduzieren auf 1V Peak → DC Offset (Vcc/2) → RC-Filter (100Ω/10μF) → ADC-Eingang.
  • Aktueller Kanal: CT (z.B. SCT‐013 mit eingebautem Lastwiderstand) → DC-Offset (Vcc/2) → RC-Filter → ADC-Eingang.
  • Stromversorgung: 5V oder 3,3V, die von einer USB-Strombank oder einem dedizierten Adapter aus gesteuert werden.

Fügen Sie einen 10kΩ-Trimpot hinzu, um den DC-Offset genau auf die Hälfte der ADC-Referenz einzustellen. Dies stellt sicher, dass die AC-Wellenform zentriert ist und der Mikrocontroller sowohl positive als auch negative Hälften lesen kann.

Firmware: Sampling, RMS-Berechnung und Power Computation

Die Firmware muss beide Kanäle synchron abtasten, echte RMS-Werte (für nicht sinusförmige Lasten wie Schaltnetzteile) berechnen und Wirkleistung, Scheinleistung und Leistungsfaktor ableiten.

Probenahmestrategie

Für ein 50/60 Hz-Netz mindestens 64 Punkte pro Zyklus (z. B. 3840 Samples/Sekunde für 60 Hz) abtasten, um Oberwellen bis zum 15. zu erfassen. Eine höhere Abtastrate (2-4 kHz) verbessert die Genauigkeit. Verwenden Sie einen Timer-Interrupt oder die Funktion , um Intervalle konsistent zu halten. Sammeln Sie 20-40 volle Zyklen (etwa 0,33-0,67 Sekunden), bevor Sie RMS berechnen, um das Rauschen zu mitteln.

Berechnung von Spannung und Strom RMS

Verwenden Sie die folgende Formel für jeden Kanal:

sum_squared = 0;
for (int i = 0; i < N; i++) {
 read = analogRead(pin);
 // Remove DC offset
 sample = read - DC_OFFSET;
 sum_squared += sample * sample;
}
rms = sqrt(sum_squared / N) * (ADC_VREF / ADC_RESOLUTION) * SCALE_FACTOR;

Die FLT:2 konvertiert den ADC-Messwert (roher digitaler Wert) zurück in Volt oder Ampere. Bestimmen Sie es experimentell: speisen Sie eine bekannte Referenz (z. B. 10V AC) und passen Sie den Faktor an, bis der RMS-Messwert mit einem echten RMS-Multimeter übereinstimmt.

Leistungsberechnung

Die sichtbare Leistung (S = V rms × I rms) ist einfach, die Wirkleistung (P) erfordert jedoch eine sofortige Multiplikation und Mittelung:

sum_active = 0;
for (int i = 0; i < N; i++) {
 v = (analogRead(V_PIN) - V_OFFSET) * V_SCALE;
 i = (analogRead(I_PIN) - I_OFFSET) * I_SCALE;
 sum_active += v * i;
}
active_power = sum_active / N;

Leistungsfaktor = active power / apparent power. Für rein resistive Lasten, PF ≈ 1,0; für induktive Lasten (Motoren) fällt PF unter 1,0, und eine echte Messung der Wirkleistung ist für eine genaue Abrechnung unerlässlich.

Energieakkumulation (kWh)

Um den Energieverbrauch zu verfolgen, integrieren Sie die Wirkleistung im Laufe der Zeit:

uint32_t lastMillis = 0;
float energy_Wh = 0;
void loop() {
 if (millis() - lastMillis >= 1000) { // every second
 float power_watts = compute_active_power();
 energy_Wh += power_watts * (1.0 / 3600.0);
 lastMillis = millis();
 }
}

Speichern Sie den kumulierten Wert im EEPROM- oder RTC-Speicher, damit er die Leistungsverluste übersteht. Für ein ganzes Hauszähler erwarten Sie je nach Nutzung Werte im Bereich von 500 bis 2000 Wh pro Stunde.

Kalibrierung: Das Geheimnis vertrauenswürdiger Daten

Ohne Kalibrierung können Ihre Messwerte um 10-20% oder mehr ausfallen.

  • Zero-Kalibrierung: Lesen Sie ohne Last den DC-Offset für jeden Kanal und passen Sie die Firmware-Konstanten an, bis das RMS so nahe wie möglich an Null liegt (normalerweise <0.1 W).
  • Gain-Kalibrierung für Spannung: Wenden Sie eine bekannte stabile Spannung an (z. B. einen 12V-Acc-Adapter, der mit einem Multimeter gemessen wird) und passen Sie den Spannungsskalafaktor an, bis das Messgerät übereinstimmt.
  • Gain-Kalibrierung für Strom: Schließen Sie eine bekannte Widerstandslast (z. B. eine 100-W-Glühlampe) an und passen Sie den Strom-Skalierungsfaktor an. Ein kalibriertes echtes RMS-Klemmmessgerät ist hier von unschätzbarem Wert.

Notieren Sie die endgültigen Kalibrierkonstanten im Quellcode oder speichern Sie sie in einem nichtflüchtigen Speicher, damit Sie die Feinabstimmung durchführen können, ohne die Firmware erneut zu blinken.

Datenprotokollierung und Visualisierung

Rohe Zahlen auf einem seriellen Monitor sind nicht benutzerfreundlich. Fügen Sie ein lokales Display hinzu, um Echtzeit-Leistung, tägliche Energie und geschätzte Kosten anzuzeigen. Für die Fernüberwachung senden Sie Daten über WiFi an Plattformen wie EmonCMS, ThingsBoard oder ein benutzerdefiniertes Node-RED-Dashboard. Der ESP32 macht dies trivial - verbinden Sie sich einfach mit Ihrem Heimnetzwerk und veröffentlichen Sie JSON über MQTT. Wenn Sie eine selbst gehostete Lösung bevorzugen, schreiben Sie einen einfachen Webserver auf die MCU, der eine leichte HTML-Seite mit Chart.js-Graphen bedient.

Für die Langzeitprotokollierung schreibt ein SD-Kartenmodul CSV-Dateien. Dies ist nützlich, wenn WiFi unzuverlässig ist oder für die Offline-Analyse. Stellen Sie sicher, dass die Karte ordnungsgemäß formatiert ist und die SD-Bibliothek sicher initialisiert wird, um eine Dateikorruption zu vermeiden.

Mehr als eine Phase: Dreiphasen- und Polyphasensysteme

Häuser mit dreiphasiger Leistung (in Europa und größeren US-Häusern üblich) benötigen drei Spannungs- und drei Stromkanäle. Sie können eine MCU mit genügend analogen Eingängen verwenden (z. B. ESP32 hat zwei ADCs mit 16 Pins, aber das analoge Rauschen steigt bei Verwendung mehrerer Kanäle). Ein besserer Ansatz ist die Verwendung von zwei oder mehr MCUs, die über I2C oder serielle kommunizieren, oder ein externer Multiplexer wie der CD74HC4067. Kalibrieren Sie jede Phase unabhängig voneinander und addieren Sie die aktiven Leistungen.

Zeitsynchronisation

Für eine genaue Wirkleistung pro Phase, Abtasten Sie alle Spannungs- und Strompaare in einem einzigen Burst (innerhalb von Mikrosekunden), um Phasenbeziehungen zu erhalten. Wenn Sie Kanäle sequentiell (wie bei einem Multiplexer) abtasten, führt die Zeitverschiebung einen Phasenfehler ein, der mit höheren Frequenzen zunimmt. Dedizierte ADCs mit gleichzeitigem Abtasten und Halten (wie der AD7606) lösen dies, aber addieren Kosten. Ein praktischer Workaround besteht darin, am Nulldurchgang der Spannungswellenform für jede Phase zu proben.

Erweiterte Funktionen zum Erweitern Ihres Meters

Sobald das grundlegende Leistungsmessgerät funktioniert, sollten Sie diese Verbesserungen hinzufügen:

  • Power Factor Correction Alerts: Wenn PF unter 0,8 fällt, markieren Sie den Benutzer, um mögliche reaktive Lasten zu untersuchen.
  • Geräteidentifikation: Durch die Analyse harmonischer Signaturen (mithilfe von FFT) können Sie zwischen einem Kühlschrank, einer Mikrowelle und einer Waschmaschine unterscheiden. Dies ist ein aktiver Forschungsbereich, der jedoch mit einem ESP32 und genügend RAM möglich ist.
  • Solarerzeugungsüberwachung: Fügen Sie einen zweiten Stromtransformator auf der Solareinspeiseleitung (bidirektionale CT) hinzu, um den Nettoexport / -import zu messen.
  • Auto-Kalibrierung: Verwenden Sie ein Relais, um einen bekannten Referenzwiderstand für die Selbstkalibrierung während Ruhezeiten einzuschalten.
  • Überstromabschaltung: Schließen Sie ein Festkörperrelais an, um Lasten zu trennen, wenn der Verbrauch einen Schwellenwert überschreitet (z. B. um ein Auslösen des Unterbrechers zu verhindern).

Vergleich mit kommerziellen Energiemonitoren

Kommerzielle Produkte wie Sense, Emporia Vue oder Shelly EM bieten ausgefeilte Apps, Cloud-Integration und UL‐listed-Sicherheit. Sie sperren Sie jedoch in ein proprietäres Ökosystem und erfordern oft ein monatliches Abonnement für historische Daten. Ein DIY-Messgerät bietet Ihnen das volle Eigentum an Daten, keine wiederkehrenden Kosten und die Möglichkeit, mit jedem Smart-Home-Standard (Home Assistant, OpenHAB) zu kommunizieren. Der Kompromiss ist Zeitinvestitionen und die Notwendigkeit, lokale elektrische Codes zu erfüllen. Für eine dauerhafte Installation sollten Sie einen lizenzierten Elektriker konsultieren.

Ressourcen und weitere Lektüre

Für ein tieferes Verständnis, konsultieren Sie die folgenden Ressourcen:

Alles zusammenbringen: Eine praktische Build-Checkliste

Um Ihnen den Einstieg zu erleichtern, finden Sie hier eine Schritt-für-Schritt-Checkliste für ein einphasiges, ESP32-basiertes Messgerät:

  1. Wählen und bestellen Sie Komponenten: ESP32 DevKitC, SCT‐013‐000 (100A/50mA), 230V‐9V AC-Transformator, 1kΩ- und 10kΩ-Widerstände, 10μF/25V-Kondensatoren, Perfboard, Gehäuse.
  2. Die Spannungs- und Stromteilerschaltungen werden zuerst an einer Steckdose montiert, und mit einem Multimeter wird der DC-Offset auf Vcc/2 genau überprüft.
  3. Schreibe eine einfache Skizze, die rohe ADC-Werte druckt, übe eine bekannte Wechselspannung (durch den Transformator) an und verifizierung der Wellenform auf einem seriellen Plotter.
  4. RMS-Berechnung mit einer Mittelung von über 50 Zyklen implementieren, Messwert mit einem Multimeter vergleichen.
  5. Testen Sie mit einer 100-W-Lampe (sollte ~0,43A auf 230V lesen).
  6. Spannungs- und Stromabtastung in einer Schleife zusammenfassen, Wirkleistung berechnen, mit einer Widerstandslast prüfen (Wirkleistung ≈ Scheinleistung).
  7. Hinzufügen von WiFi-Verbindung und MQTT-Publishing. Verwenden Sie ein Tool wie MQTT Explorer, um den Datenfluss zu überprüfen.
  8. Design und 3D-Druck eines Gehäuses, das die Luftzufuhr sicherstellt und einen versehentlichen Kontakt mit der Netzverdrahtung verhindert. Installieren Sie die endgültige Version in der Schalttafel (mit abgeschaltetem Hauptschalter).
  9. Führen Sie das Messgerät 24 Stunden lang durch und vergleichen Sie die tägliche Energiemenge mit Ihrer Stromrechnung, um die Genauigkeit innerhalb von 2-5 % zu bestätigen.

Der Bau eines Mikrocontroller-basierten Stromzählers ist ein lohnendes Projekt, das sofortige praktische Vorteile bietet. Mit sorgfältigem Design und Kalibrierung liefert Ihr selbstgebauter Monitor jahrelang zuverlässige Energiedaten, die Ihnen helfen, Abfall zu reduzieren und Geld zu sparen.