Hallo Zusammen,
hab mich mal mit dem Thema “Stromzähler auslesen per Blink-LED” beschäftigt.
Meine Zähler sind die Hager EHZ361… diese haben eine blinkende LED - 10.000x blinken = 1 KW/h…
Meine Idee war nun, mit einem Arduino Uno, die Impulse per Phototransistor zu zählen… da die LED “gelb” blinkt, habe ich nach einem Sensor mit breitem Spektrum gesucht (möglichst im Bereich 560-580nm).
Bei Conrad habe ich den Taos TSL250R für 5,22 € gefunden.
Pin1 an GND
Pin2 an 5V+
Pin3 an Analog1
Code auf Basis des Beispiel “AnalogInput” geladen und ergänzt: siehe unten
Es funktioniert…
Was noch zu tun ist:
- Es gibt wohl eine Abweichung von 5-10% - Arduino zeigt eine zu hohe Leistung an. Das kann ich mir bisher nicht erkären
- Integration Ethernet Webserver
- Integration SD-Karte
- Integration Bluetooth
Hat jemand Erfahrungen mit anderen Sensoren?
#include <LiquidCrystal.h>
int sensorPin = A1; // ANALOG Sensor 1 (zweites Loch
int ledPin = 13; // Kontroll LED auf dem Uno
int sensorValue = 0; // Sensorwert
int sec = 0; // Zeit zwischen den Blinks
int millisalt; // Zeit des letzten Blinks
int count; // Zähler der Blinks
int fehler = 0; // Fehlersuche = 1 → mehr Ausgaben
int watt = 0; // aktuelle Leistung in WattLiquidCrystal lcd(8, 9, 4, 5, 6, 7); // evtl an eigenes Display anpassen
void setup() {
Serial.begin(9600);
lcd.begin(16, 2);
pinMode(ledPin, OUTPUT);
}void loop() {
sensorValue = analogRead(sensorPin); // Lese Sensor
if (fehler == 1) Serial.println (sensorValue);
// if Schleife wenn der Sensor schneller als die LED ist, Wert 700 evtl anpassen an den Maximalwert Sensor
if (sensorValue > 700)
{
sec = (millis()- millisalt);
if (sec > 70)
{
digitalWrite(ledPin, HIGH); //LED an wenn Zähler LED an ist
count ++;Serial.print ("Zeit: ");
Serial.print (millis()); // Zeit seit StartSerial.print(" Blinks:");
Serial.print (count); // Blinks seit StartSerial.print (" Zeit zw Blinks:");
Serial.print (sec); // Zeit zwischen den Blinks
Serial.print (" Sensorwert:");
Serial.print (sensorValue); // Sensorwertwatt = (360000/sec); // Umrechnung Zeit zwischen Blinks in Watt 10000 Blinks = 1KW/h
Serial.print (" Leistung:");
Serial.println (watt);lcd.setCursor(0, 0);
lcd.print (" “);
lcd.setCursor(0, 0);
lcd.print(watt);
lcd.setCursor(5, 0);
lcd.print(” Watt");
lcd.setCursor(0, 1);
if (fehler == 1) lcd.print ("Sensor: “);
if (fehler == 1) lcd.print(sensorValue);
if (fehler == 1) lcd.print(” ");
lcd.print("W: “);
lcd.print((count/10));
lcd.print (” Min: ");
lcd.print((millis()/1000/60));
}
millisalt = millis(); //speichere alten Zeitwert
}else
{
digitalWrite(ledPin, LOW); //LED aus wenn Zähler LED aus ist
}}