Samstag, 22. Oktober 2016

Ferrariszähler abtasten - ein Experiment

Mit ein paar Widerständen zwei LEDs und einem Phototransistor durch eine Scheibe aus gebührenden Abstand zuverlässig die nur Millimeter starke, rotierende Scheibe abtasten und dabei einen roten Punkt erkennen? Kann das funktionieren? Ich habe es nach dieser Anleitung ausprobiert und tatsächlich - es funktioniert! Dank eines Arduino nano und einer cleveren Software.

Der schnelle Aufbau

In einen kleinen Plastestreifen von 15 x 50 mm habe ich ziemlich mittig zwei 3 mm Löcher im Abstand von 5mm gebohrt. Diese dienen als Aufnahme für IR LED und Phototransistor. Mit einem 4 adrigen ungeschirmten Kabel, knapp 1 meter lang, habe ich beide Elemente über einen 4 poligen Pfostenverbinder mit dem Breadboard verbunden.
Auf dem Breadboard ist der Arduino nano mit den Widerständen und der Status LED platziert. Also alles in wenigen Minuten zusammengebaut.
Den Sketch habe ich direkt vom Github heruntergeladen und mit der Arduino IDE auf den nano aufgespielt.
Nun wird es spannend: wird die Schaltung funktionieren?
Der serielle Monitor der IDE lässt uns einen ganz schnellen Test machen. Der nano meldet sich mit der aktuellen Einstellung
Trigger levels: 50 100
Mit einem großen C schaltet er in den Command Mode und meldet sich mit einem Prompt >
Mit einem großen D zeigt er anschließend fortlaufen die Messwerte.
Mit einem Stück weißen Papier oder einem glänzenden Gegenstand als Reflektor kann sollten die Messwerte irgendwie zwischen 5 und 200 schwanken.
Ok, das funktioniert, jetzt muss der Sensor eingestellt werden.

Montage und Einrichtung

Ich habe den Strich für die Bohrungen gleich in die Oberfläche geritzt, diesen Strich verwende ich jetzt um den Sensor möglicht exakt mit der Ferraris Scheibe auszurichten. Die im Bild gezeigte Methode mit Panzertape verändert ihre Lage innerhalb weniger Stunden! Also nur als schnelle Probe geeignet!
Der Sensor wird mit dem Breadboard verbunden und der nano mit meinem im Schaltschrank vorhandenen Raspberry. Um die Messwerte mitzuschreiben um später die Triggerschwellen festzulegen verwende ich minicom.
sudo apt-get update && sudo apt-get install minicom

Mit minicom kenne ich mich erstmal gar nicht aus, aber das Programm ist interaktiv bedienbar:
minicom -s

startet minicom im Setup Mode. Wir müssen folgendes einstellen:

  • Serial port setup
    • Serial Device /dev/ttyUSB1
    • Bps/Par/Bits 9600 8N1
    • Hardware Flowcontrol No
  • Exit
Jetzt mit C und D in die kontinuierliche Datenausgabe versetzen, die Messwerte scrollen durch. Wenn nicht die Einstellung überprüfen!
Mit CTRL-A und Z öffnen wir den Hilfemodus öffnen, von diesem kann man das Programm auch weiter bedienen. L öffnet den Capture Modus, wir müssen bloß noch den Dateinamen bestätigen und schon zeichnet minicom die Messwerte auf, per default ins aktuelle Verzeichnis mit dem Namen minicom.cap. Wir müssen jetzt ein 3-4 Runden der Ferrarisscheibe aufzeichnen. 
Mit CTRL-A (Z) und L kann der Capturemodus anschließend mit close und damit die Datei geschlossen werden.

Mit WinScp kann man die Datei auf den PC kopieren, in minicom.txt umbenennen und anschließend in Excel oder Google Tabellen importieren (beide weigern sich eine Datei mit der Endung .cap zu importieren!?).
Jetzt markiert man die Spalte mit den Werten und fügt über das Menü / Einfügen / Diagramm eine Kurve ein.
Die Kurve kann man etwas aufzoomen und ganz leicht die beiden Trigger Punkte bestimmen. Im Anzeigemodus des Diagramms der Google Tabelle kann man mit der Maus die einzelnen Punkte anzeigen lassen.
Beispielauswahl 130 175

Zurück zu minicom und wieder mit C in den Command Modus wechseln. Jetzt geben wir mit S 130 175 die Triggerschwellen ein. Nun wechseln wir wieder in den Trigger Mode mit T.
Fertig!

Ich habe jetzt einfach den Ausgang mit der Status LED (D12) mit einem Pin meines ArduCounter nano verbunden ein neues Pin definiert und schon habe ich den Zähler in FHEM eingebunden. 
Mein Zähler liefert 75 Impulse pro kWh (Zählerkonstante). 
Der Zählerwert (kWh) ergibt sich damit aus: Impulsanzahl/75 
Für die Momentanleistung braucht man die Impulsdauer (Zeit für 1 Umdrehung) damit kann man daraus allgemein ableiten:
Leistung im Watt = 3.600.000 / (Zählerkonstante * Anzahl der Sekunden für eine Umdrehung)
Damit steht in meinem Beispiel eine Runde für 48.000 Ws 
Momentanleistung (Watt) = 48000/Impulsdauer (sec)

Ideen zur endgültigen Umsetzung

Der eigentliche Sensor ist störunempfindlich, man kann ihn also wirklich vom Arduino absetzen und damit einen kleine Sensor machen der einfach mit Klebepads auf der Zählerfront befestigt wird.
Neben der hier gezeigten einfachen Variante der Kopplung mit dem ArduCounter, will ich versuchen alles in einem Arduino unterzubringen. Mal sehen ob mir das gelingt.


1 Kommentar:

  1. Hallo Otto, das ist ja mal wieder spannend! Ich werde das mal nachbauen und mit einem Funk Temperatursensor mit externem Anschluss (TFA 30.3143.IT; ca. 10 EUR) verheiraten. Der externe Anschluss des TFA kann als "universeller" Eingang verwendet werden. Damit greife ich das Signal von D12 ab und kann somit die Impulse per 868MHz Funk zu FHEM übertragen. Mal sehen, ob das gelingt. Den Nano habe ich gerade vorbereitet... VG ThomasP

    AntwortenLöschen