Stromzählung mit Arduino
ACHTUNG: dieser Artikel ist schon ziemlich veraltet! Bitte nach neuen Artikeln suchen!
Nachdem wir im letzten Abrechnungszeitraum eine deutlich zu hohe Stromrechnung hatten, möchte ich nun unseren Stromverbrauch etwas im Auge behalten.
Ich habe gerade bei Watterott folgende Dinge bestellt:
- Arduino Duemilanove
- QTR-1A Abstandssensor
- RF Link Sender – 434MHz
- RF Link 2400bps Empfänger – 434MHz
- Arduino Gehäuse
Ich plane einen Arduino im Stromverteilerschrank zu platzieren und mit dem Abstandssensor versuchen, die silberne drehende Scheibe im Stromzähler zu beobachten und die Daten per RF Sender an einen zweiten Arduino zu übertragen. Eine direkte Verbindung zwischen den beiden, z.B. per Ethernet geht leider nicht, da im Schaltschrank kein Netzwerk ist.
Wenn die Daten im zweiten Arduino ankommen, werde ich sie dort zählen und per RRD-Tool in Grafiken darstellen. Damit sind die Grafiken per Browser abrufbar. Die Erzeugung der RRD-Grafiken erledigt meine Synology Diskstation. Siehe dazu auch das Temperatur-Messprojekt.
Die silberne Scheibe dreht sich 75 mal pro Kilowatt-Stunde – das sollte also eigentlich eine genügend genaue Ablesung ermöglichen. Ich hoffe somit etwas genauer feststellen zu können, zu welchen Zeiten welche Menge Strom verbraucht wird.
Falls das mit der Scheibe nicht funktioniert wird evtl. Versuch 2 so aussehen, dass ich einen Stromzähler mit S0-Anschluss in den Schrank einbauen lassen werde. Dieser S0-Bus – nicht zu verwechseln mit dem ISDN S0-Bus – liefert 800 Impule pro Kilowatt-Stunde. Die Übertragung würde dann analog Plan 1 erfolgen.
Ich erwarte die Lieferung in den nächsten Tagen und hoffe, am Wochenende schon mehr sagen zu können.
24.02.2011: Die Lieferung ist angekommen und ich habe die ersten Experimente gemacht.
Versuch 1:
Zuerst habe ich versucht, die Sende- und Empfangsmodule zum Laufen zu bringen. Leider war das nicht wirklich erfolgreich. Das Empfangsmodul liefert die ganze Zeit über komische Werte an seinem Output. Wenn ich am Sendemodul die Datenleitung zwischen 0 und 1 wechsel, dann kommt auch kurz beim Empfänger was anderes an – aber nicht auf Dauer. Ich werde nun versuchen, ein Oszilloskop zu besorgen, um das mal richtig zu messen.
Versuch 2:
Der Reflexsensor. Als SMD-Ding auf eine winzigen Platine ziemlich schwierig zu handhaben. Ich habe das Teil also an einen Analog-Port vom Arduino gehängt und er liefert auch schöne Werte. Ich habe dann den Sensor auf unseren Stromzähler geklebt und versucht, die drehende Scheibe “zu sehen”. Nachdem ich das Licht ausgemacht habe, konnte ich sogar Werteänderungen sehen, wenn das rote Stück der Drehscheibe vorbeikommt. Das war also im Prinzip schon mal positiv…
Nun müsste ich ein kleines Gehäuse bauen, um das Licht von aussen abzuschirmen und den Sensor gut auf die Scheibe zu richten. Dann noch eine Flanken-Erkennung programmieren, die den Anfang und das Ende des roten Bereiches erkennt und dann könnte der Arduino schon mal zählen. Wenn dann die Funkverbindung noch klappt, könnte ich die Werte an den anderen Arduino funken.
25.02.2011: Der Tag des Erfolges…
Dank einem Arbeitkollegen hatte ich heute ein Oszilloskop zur Verfügung (Bild 3) – Danke Gerhard! Nach kleinen Anfangsschwierigkeiten mit dem Gerät – man sollte nicht versuchen, Gleichspannung zu “sehen”, wenn das nur Wechselspannungen anzeigen kann… – ging es dann endlich.
Ich habe nun meine beiden Arduinos (Bild 3 +4) im Einsatz, da ich einem alleine nicht getraut habe – wer weiss, wie die so Daten fliessen – am Ende einfach nur “so” statt per Funk…
Ich habe also zuerst mal einen Arduino mit ca. 1 KHz zum “Blinken” gebracht und das als Input für den Sender genommen. Den Output des Empfängers habe ich an den Oskar angeschlossen – und hatte ein prima Rechtecksignal!
Dann als nächstes aus dem Internet die VirtualWire-Bibliothek geladen, den einen Arduino als “Receiver”, den anderen als “Sender” und ich hatte ein “hello” auf dem Empfänger! Perfekt!
Dann war es ein leichtes, den Reflexsensor noch dazu zu packen und die Werte auf 0-256 zu normieren und dem Sender zu übergeben. Und die Werte kommen brav am Empfänger an (siehe Bild 5).
12.03.2011: Es läuft und läuft und läuft…
Und so schaut es nun aus:
Der Peek ab 22:00 ist der Wasserboiler, um 5 Uhr nochmal, um 10:00 der Backofen – nur der “Ruhestrom” in der Nacht bei 500 Watt ist etwas hoch – da muss ich noch mal suchen, was hier Strom verbraucht…
Leider sind die Werte bei wenig Verbrauch sehr sprunghaft. Aktuell berechne ich schon Mittelwerte über 5 Minuten und übergebe die an das RRD-Tool zum Speichern.
Bilder nach dem Break…
Bild 1: Stromzähler mit Sensor aufgeklebt
Bild 2: Reflexsensor und Arduino
Bild 3: Oszilloskop mit Empfänger-Arduino
Bild 4: Sender-Arduino mit Reflexsensor
Bild 5: Serielle Konsole am Empfänger Arduino