Stromverbrauch messen Teil 1

Endlich komme ich mal wieder dazu ein paar Zeilen zu schreiben. Ich möchte hier den Fortschritt meines aktuellen Arduino-Projekts festhalten. Es geht um die Messung des häuslichen Stromverbrauchs.

Der Plan – Stromverbrauch messen mit Ferraris

Ein Reflexkoppler soll verwendet werden, um die Umdrehungen der Messscheibe (Ferrarisscheibe; siehe Wikipedia zu Stromzählern) meines Stromzählers zu erkennen. Somit will ich den aktuellen Stromverbrauch messen und zugänglich machen.

Die Ferrarisscheibe besitzt eine rote Markierung. Laut Aufschrift des Zählers läuft diese genau 75 mal pro Kilowattstunde durch das Sichtfeld. Mit dem Reflexkoppler muss also nur erkannt werden, wann auf der Scheibe der Wechsel zwischen Silber und Rot stattfindet. Dann misst man dann die Zeit seit der letzten Sichtung. Mit einfachem Dreisatz kommen wir hiervon auf den Stromverbrauch in kWh während der letzten Umdrehung.

Der Messwert soll jeweils per HTTP-Request an einen Server übertragen werden. Auf dem Server speichert ein simples PHP-Skript den Wert. Ein weiteres Skript bereitet dann im Nachgang die Werte auf und setzt sie in einen hübschen Graph, sodass wir ungewöhnliche Schwankungen im Stromverbrauch schnell erkennen können.

Bauteile

Folgende Bauteile werden benötigt:

  • Arduino Uno
  • Ethernet-Shield
  • Reflexkoppler CNY70
  • Widerstand 150 Ohm
  • Widerstand 10 kOhm

Alle Teile sind problemlos im Versandhandel erhältlich, ich habe den Arduino und das Ethernet-Shield bei Watterott und die restlichen Bauteile bei ELV bestellt.

Erster Kontakt mit dem CNY70

Der CNY70 besteht aus einer IR-Diode und einem Phototransistor, der das von der IR-Diode ausgestrahlte Licht wieder auffängt und je nach gemessener Helligkeit einen Strom fließen lässt. Die Verwendung der IR-Diode ist dabei optional, ohne sie funktioniert der Phototransistor als reiner Helligkeitssensor.

Hält man den CNY70 so, dass einen die beiden “Augen” anschauen und die Beschriftung nach rechts zeigt, dann ist links die IR-Diode. Sie schimmert Hellblau. Auf der rechten Seite befindet sich der Phototransistor, er ist Dunkelblau bis Schwarz.

Die IR-Diode wird wie üblich mit einen Widerstand (150 Ohm) in Reihe geschalten. Da wir die Diode später an- und ausschalten wollen, kommt sie an einen IO-Port des Arduino. Der zweite Pin wird mit dem Widerstand und dieser wiederum mit GND verbunden.

Der Phototransistor wird auf den 5V-Ausgang des Arduino geschalten. Auf der anderen Seite greifen wir unseren Messwert ab und leiten ihn an einen IO-Port des Arduino, wobei wir über den 10kOhm Widerstand gegen GND schalten.

Die komplette Schaltung sieht dann so aus:

Arduino mit angeschlossenem CNY70, mit dem wir den Stromverbrauch messen wollen

Um erste Erfahrungen und vor allem Messwerte zu sammeln habe ich einen kleinen Sketch gebastelt, der den Messwert über den Serial Monitor ausgibt.

Erster Sketch

Der Sketch liest mit analogRead() den Wert am Eingangspin und liefert den Wert über Serial.print(). Da es mich interessiert hat, was für Werte man erhält, wenn man die IR-Diode aus- oder einschaltet, werden jeweils zwei Messungen durchgeführt, einmal mit eingeschalteter IR-Diode und bei abgeschaltener IR-Diode.

int readpin = A1;
int irpin = 2;
int a = 0; 
int b = 0;


 void setup()
{
  Serial.begin(9600);
  pinMode(irpin, OUTPUT);
}

void loop()
{
  digitalWrite(irpin, HIGH);
  a = analogRead(readpin);    // 0 bis 1023
  digitalWrite(irpin, LOW);
  b = analogRead(readpin);

  Serial.print("Aktiv: ");
  Serial.print(a);
  Serial.print(" Passiv: ");
  Serial.print(b);
  Serial.println();
  delay(1000);
}

Damit lassen sich nun erste Werte auslesen. In den nächsten Tagen will ich einen Sketch bauen, der einen Webserver implementiert und mir die Werte wie oben, jedoch über das Netzwerk, liefert. Damit kann ich dann hoffentlich am Stromzähler erste sinnvolle Messungen machen. Zuletzt soll dann der Netzwerk-Client-Sketch kommen, der jeweils den gemessenen Stromverbrauch an einen Server meldet.

Comments are closed.