Titelbild - Stromzähler

Arduino Projekt 1: Stromzähler auslesen

Veröffentlicht von

Stromzähler auslesen

Der Stromzähler spielt in jedem Haushalt eine wichtige Rolle. Er ist der gemeine Hund, der unseren Stromverbrauch an den Versorger petzt. Deshalb sollte man ihn an die digitale Leine nehmen und den Stromverbrauch auswerten. So kann man Verbrauchsspitzen erkennen und gezielt die Stromfresser erkennen.

Doch leider sind noch immer in vielen Haushalten die Ferraris Stromzähler verbaut, die keine digitale Möglichkeit des Auslesens haben.

Also müssen wir uns mit einem Photosensor behelfen, dass ist das gleiche Prinzip einer Lichtschranke.

Die Idee hinter dem Projekt

Das Prinzip ist relativ einfach, das Licht einer Infrarot LED wird durch die Zählerscheibe reflektiert und dann von einem Phototransistor gemessen. Durch den roten Bereich der Zählerscheibe ändert sich die Intensität des reflektierten Lichtes. Dieses wird erkannt und als eine ganze Umdrehung der Zählerscheibe gezählt.

Bei meinem Stromzähler entsprechen 75 Umdrehungen einer Kilowattstunde.

Stromzähler

Die Lichtschranke

Diese Bauteile habe ich für die Lichtschranke benötigt:

Lichtschranke Schaltplan (13 Downloads)

Die IR LED wird direkt mit einem digitalen PIN verbunden, der 120Ω Widerstand dient zur Begrenzung des Stroms an der LED. Der 2,2kΩ Widerstand wandelt den Strom am Phototransistor in Spannung um, diese kann dann am Analogen PIN gemessen werden.

Die LED dient als Statusanzeige, sobald der rote Bereich vor dem Sensor ist, leuchtet diese auf.

Der Arduino Sketch

Hier ist der Sketch für den Arduino.

Am Anfang werden die Pins für die LEDs und den Transistor und ein paar Zählvariablen definiert.

Im Loop wird der Wert des Sensors einmal mit aktiver IR LED und einmal inaktiver IR LED gemessen und der zweite Wert wird vom ersten abgezogen. Dies reduziert die Messfehler, die durch Streulicht entstehen. Diesen Wert vergleicht das Sketch dann mit dem TRIGGER_LEVEL. Der TRIGGER_LEVEL gibt den Schwellenwert an, ab wann der rote Bereich der Zählscheibe erkennbar ist.

Im weiteren Sketch wird dann noch gezählt wie oft der Trigger erreicht wurde, bei 75 mal hat der Stromzähler eine Kilowattstunde gemessen. An der Stelle „Serial.println( „1 kWh“ );“ kann der Programmcode eingefügt werden, welcher ausgeführt werden soll wenn die Kilowattstunde gezählt wurde.

/*********************************
 * 
 * Project: Wiedimatic - DIY Home Automation - Project 1
 * Title: read an electric meter with the use of a light barrier
 * 
 * Author: http://robinw.de
 * 
 * Feel free to use this sketch in your Arduino projects. 
 * Please refer to my blog http://robinw.de if you want to use it on your website. 
 * 
 */

// Variables
const int PHOTO_PIN = A5; // Analog input pin of the photo transistor
const int IR_PIN = 2; // Digital output pin of the IR LED
const int LED_PIN = 3; // Pin of the signal led
const int TRIGGER_LEVEL = 50; // If the sensor value ist below this the trigger wil be activated
const int METER_ROUNDS = 75; // 75 rounds = 1 kWh

int roundsCounting = 0; // The actual counting of meter rounds
int sensorOff = 0; // Value of the photo transistor, when IR LED is off
int sensorOn = 0; // Value of the photo transistor, when IR LED is on

boolean COUNTED = false; // is the actual trigger counted?

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

void loop() {
  // Get the senor value when the IR LED is off
  digitalWrite(IR_PIN, LOW);
  delay(10);
  sensorOff = analogRead(PHOTO_PIN);           

  // Get the senor value when the IR LED is on
  digitalWrite(IR_PIN, HIGH);
  delay(10);
  sensorOn = analogRead(PHOTO_PIN);

  // Get the difference of the values
  int trigger = sensorOn - sensorOff;
  Serial.println( trigger ); // comment out this line when your TRIGGER_LEVEL is calibrated

  if (trigger < TRIGGER_LEVEL) {
    digitalWrite( LED_PIN, HIGH);
    if ( !COUNTED ) {
      roundsCounting++;
      COUNTED = true;
      if ( roundsCounting == METER_ROUNDS ) {
        Serial.println( "1 kWh" );
        roundsCounting = 0;
      }
    }
  }
  else {
    digitalWrite( LED_PIN, LOW);
    COUNTED = false;
  }
}
Stromzähler auslesen (10 Downloads)

Den Sketch kalibrieren

Es können zwei Variablen für den Sensor kalibriert werden.

Zum ersten die Variable METER_ROUNDS, sie gibt an wieviel Umdrehungen der Zählerscheibe für eine Kilowattstunde stehen. Der Wert kann am Stromzähler abgelesen werden.

Der weitere Wert ist TRIGGER_LEVEL, um diesen Wert kalibrieren, habe ich den Sensor vor die Zählerscheibe gehalten und die Werte im seriellen Monitor abgelesen. Der Wert im silbernen Bereich der Zählerscheibe war zwischen 11 und 19. Als der rote Bereich gemessen wurde, veränderte sich der Wert auf 80 bis 90. Also habe ich als TRIGGER_LEVEL 50 eingetragen.

Sensor für Stromzähler

Kommentar hinterlassen