ESP8266 Ferraris Stromzähler Auswertung
17. Juli, 2017 in: 3D Drucker, ElektronikUm einmal einen Überblick über den Energieverbrauch des Hauses zu bekommen wollte ich meinen Stromzähler digital auswerten. Leider ist dieser noch ein alter Ferraris-Zähler ohne S0-Schnittstelle und kann somit nicht einfach ausgewertet werden. Nach kurzer Recherche im Internet stellte sich heraus, dass dieses Problem schon sehr viele findige Bastler über Reflex-Lichtschranken gelöst haben. Ein gesamtes fertiges Projekt für den ESP8266 konnte ich direkt nicht finden, daher musste ich mir doch die Mühe selbst machen 🙂
Da ich derzeit zeitlich etwas eingeschränkt bin, wollte ich nicht zu viel Zeit mit Versuchen und Layouterstellung verbraten und habe stattdessen auf fertige Module gesetzt. Für die Lichtschranke kommt ein TCRT5000 Module zum Einsatz in Kombination mit einem WeMos D1 Mini. Für das Lichtschranken Module habe ich schnell ein Modell erstellt und mit dem 3D Drucker ausgedruckt, glücklicherweise passte direkt das erste Modell ziemlich gut, sodass ich kein weiteres drucken musste. Das Module wird in das Plastikteil mit einer kleinen M3er Schraube fixiert und mit Klebeband am Zähler selbst angebracht.
Das TCRT5000 Modul kann mit 3-5V versorgt werden und hat je einen digitalen und einen analogen Ausgang. Der digitale Ausgang entspricht dem Ausgang eines Komparators, der direkt mit dem Analogsignal gespeist wird. Die Vergleichsspannung ist komfortabel per Potentiometer einstellbar. Um die richtige Vergleichsspannung einzustellen, kann es hilfreich sein mit dem Oszilloskop den Signalverlauf des Analogsignals aufzuzeichnen. Nachfolgend das Ergebnis nach dem Einstellen der gewünschen Spannung am Potentiometer.
Kanal 1 (gelb) entspricht dem Analogsignal während des Umlaufs, erscheint die rote Markierung steigt die Spannung leicht an und lässt dadurch den Komparator umschalten, das Signal an Kanal 2 (blau) verändert sich. Das digitale Signal kann sehr einfach für die anschließende Auswertung in der Software genutzt werden. Da das Signal in meiner Oszi Aufzeichnung ganz leicht geprellt hat, habe ich eine einfache Entprellung in Software integriert. Die Abtastung des Signals erfolgt ohne „feste“ Zeitbasis, es hat direkt so funktioniert, daher habe ich bisher aus Bequemlichkeit darauf verzichtet die Software nochmal zu überarbeiten.
Auf dem Zähler ist angegeben, dass pro 96 Umläufe der Scheibe 1kWh verbraucht wurde. Diese Angabe wird in der Software genutzt um die Leistung im letzten Durchlauf auszurechnen. Dazu wird die Zeit in Millisekunden eines jeden Umlaufs gemessen und in eine Leistung umgerechnet, das Ergebnis wird an ein PHP Skript auf meinem Webspace übergeben, welches die Daten in die Datenbank schiebt. Anschließend wird das ganze wieder durch ein PHP Skript aus der Datenbank ausgelesen und aufbereitet in einem Diagramm dargestellt.
Im oberen Diagramm sieht man schön das Peak bei 08:45 Uhr, das ist die Kaffeepadmaschine 😎
Hallo, sehr interessanter Beitrag. Kann das Sensor-Modul direkt an den ESP8266 angeschlossen werden? Hast du eine fertige Bibliothek dazu verwendet oder eventuell den Quelltext freigegeben?
Das erste Skript schreibt vermutlich einfach nur einen Timestamp mit einem inkrementierten Zähler in die Datenbank? Was machst du bei 404 Fehlern z.B. wegen Reconnect, oder sind die Fehler zu vernachlässigen?
Hallo Dirk,
ja das Modul ist quasi direkt an den ESP8266 angeschlossen, es handelt sich um einen 5V TTL Pegel, der einfach mit einem Spannungsteiler aus zwei Widerständen an einem GPIO vom ESP8266 hängt.
Der ESP8266 berechnet direkt lokal aus der gemessenen Zeit pro Umlauf die aktuelle Leistung und übergibt diese an das Skript. Der Zeitstempel kommt von der Datenbank selbst dann. Die Datenbank und der Webserver laufen lokal auf meinem NAS (Synology) und sind dadurch quasi „immer“ zu erreichen. Allerdings hatte ich auch vorher als beides noch auf externem Webspace lag keinerlei Probleme bezüglich dem täglichen Reconnect. Dieser wird meistens ja Nachts vollzogen und zu dieser Uhrzeit ist die Leistungsaufnahme geringer, was längere Pausen zwischen den Pulsen zur Folge hat, was das Problem evtl. etwas weiter abschwächt.
Den Quellcode habe ich nicht veröffentlicht und auch neben den Arduino Standardbibliotheken/ESP8266 nichts verwendet. Ich könnte dir den Code bei Bedarf zur Verfügung stellen, allerdings ist dieser vermutlich nicht sehr hübsch und noch weniger mit Kommentaren dokumentiert ????
Hallo,
finde dein Projekt toll! Könntest Du mir kurz den Sourcecode zu senden `?
Hallo,
ich würde mich auch über den Code als Basis für mich freuen.
Vielen Dank 🙂