ESPeasy ist neben Tasmota die komfortabelste Plattform auf Basis des ESP8266 oder ESP32. Diese ziemlich leistungsfähigen 32-bit Mikrocontroller findet man in Sonoff Schaltern, WLAN-Steckdosen oder kann sie einfach als Wemos Module günstig beziehen. Die Sonoff-Geräte oder auch die genannten WLAN-Steckdosen, kann man mit dieser alternativen Firmware ausstatten und hat dann viel mehr Möglichkeiten, als mit der Firmware der Hersteller. Zudem ist man sicher, dass das WLAN-Gerät nicht nach China funkt.
Bei uns arbeiten mittlerweile etliche dieser Geräte und liefern Daten von 1-Wire Temperatursensoren (18D20), Luftfeuchtigkeit, Wandtemperatur im Keller und vieles mehr. Mit einer TCRT5000 IR-Lichtschranken, kann man auch die rotierende Scheibe eines Ferraris Stromzählers auslesen – so zumindest die Theorie.
Bouncing: Der TCRT5000 liefert unsaubere Signale
Eigentlich sollte es genügen, den TCRT5000 mit dem D0-Ausgang an einen Eingang des ESP8266 anzuschließen. Im Einstellungsmenü von ESPeasy kann man dann auswählen, auf welcher Signal-Flanke (bei steigender oder fallender Flanke) zählen soll und welche Entprellzeit (Bouncing) man möchte.

Zum Verständnis: Als Prellen oder Bouncing bezeichnet man einen Effekt, der bei Tastern entsteht. Beim Schließen eines mechanischen Tasters, „prellen“ die Kontakte häufig aufeinander, sodass sich der geschlossene Zustand erst nach einigen Millisekunden einstellt. Dazwischen springen die Kontakte aufeinander und erzeugen gleich eine Reihe an offenen und geschlossenen Zuständen. Eine nachgeschaltete Elektronik kann dann statt einem Ereignis, fälschlicherweise mehrere Ereignisse registrieren und sich entsprechend chaotisch verhalten.

Genau das passiert auch bei der TCRT5000 Lichtschranke. Wenn die rotierende Scheibe des Zählers vom reflektierenden silbernen Zustand auf den roten Balken wechselt, signalisiert das der TCRT5000 nicht sicher. Nun soll der Algorithmus des ESPeasy einspringen und das Signal per Software sauber rechnen. Es gibt mehrere Foreneinträge, die der ESPeasy Software falsches Verhalten vorwerfen, denn diese zählt statt einem Impuls beim Wechsel der Zustände, mindestens zwei Ereignisse – egal welche Entprellzeit man einstellt. Damit kann man aber keinen Verbrauch ermitteln. Ein weiteres Problem ist, dass ESPeasy damit nicht die Zeit misst, bis der rote Balken wieder erscheint, sondern nur die Zeit, während der rote Balken zu sehen ist. Auch damit kann man die Verbrauchsmessung vergessen.
Das Problem mit Hardware gelöst: Schmitt-Trigger
Ich habe hier auch einiges ausprobiert und bin wieder einmal zur Erkenntnis gekommen, dass man nicht immer alles mit Software erschlagen kann. In meinem Bauteileschrank lagen einige 74HC14 IC’s. Darin befinden sich 6 invertierende Schmitt-Trigger. Die Funktion werde ich hier nicht im Detail erklären. Nur soviel: Ein Schmitt-Trigger vergleicht zwei Spannungen und liefert je nach Eingangspegel und Schaltschwelle, einen klar definierten Ausgangszustand. Damit wird aus einem undefinierten Eingangssignal, ein schön klares Ausgangssignal.
Ich habe einmal das Ausgangssignal des TCRT5000 vor und nach dem Schmitt-Trigger mit meinem Digilent Analog Discovery 2 gemessen:

Man sieht hier sehr schön, wie die IR-Lichtschranke (gelbe Kurve), ein unpräzises Signal liefert. Nach dem Schmitt-Trigger (blaue Kurve) wird daraus ein klar definierter Rechteck-Impuls. Da der 74HC14 ein invertierender Schmitt-Trigger ist, hat sich das Ausgangssignal auch noch umgedreht, sodass auch das zweite Problem behoben wurde. ESPeasy kann nun die Zeit zwischen dem roten Balken messen.

Die Schaltung ist sehr einfach: Der Eingang eines der 6 Schmitt-Trigger, wird mit einem 100 nF Kondensator gegen Masse versehen und wird mit dem D0-Ausgang des TCRT5000 verbunden. Der Ausgang des Schmitt-Triggers geht an den gewünschten Pin des ESP8266 (in meinem Fall D5/GPIO. Pin 7 des ICs kommt auf Masse und Pin 14 an die 3,3 Volt des ESP8266.

Die 5 nicht benötigten Eingänge des 74HC14 sollte man auf Masse legen, damit sie nicht zu schwingen beginnen (nicht im Schaltplan enthalten).
Wichtig ist, dass ihr den HC-Typ des 7414 (74HC14) einsetzt, denn nur der kommt mit den 3,3 Volt des ESP8266 klar.
Mit dieser kleinen Hardware-Modifikation funktioniert nun auch die Erfassung von Zählerständen einwandfrei. Aber auch andere Anwendungsfälle, in denen der TCRT5000 zum Einsatz kommt, profitieren von einem sauberen Schaltverhalten des Moduls.
Meine Einstellungen in ESPeasy sehen so aus:

Natürlich ist das Auslesen des Stromverbrauchs anhand der Zählerscheibe nicht sehr präzise. Mein Zähler macht pro Kilowattstunde 75 Umdrehungen. Bei hohen Verbräuchen sind die Zeitabstände pro Umdrehung entsprechend kurz und die Genauigkeit höher. Genau umgekehrt verhält es sich bei sehr geringen Verbräuchen.

Allerdings gibt die Methode zumindest einen ungefähren Überblick und man kann Nutzungszeiten und Zeiträume miteinander vergleichen.
UPDATE: Da viele nach dem 3D-gedruckten Halter fragen: Der ist nicht von mir, kann aber bei Thingiverse heruntergeladen werden: Ferraris-Stromzähler Pulse Counter (TCRT5000) by Shojo – Thingiverse
Letzte Aktualisierung am 15.07.2025 / Affiliate Links / Bilder von der Amazon Product Advertising API
Es gibt zum LM393 eine Application note, dass man am non-Intering Eingang keine Kondensatoren haben sollte, weil man damit auch eine schnelle Reaktion der Rückkopplung für die Hysterese filtert. Das gilt genauso für den Ausgang. Und das TCRT5000 Modul entspricht nicht ganz der klassischen Comperator_Hysterese Schaltung. Dazu müsste der + Eingang anders beschaltet werden. Also unterm Strich, ist die hier vorgestellte Lösung vermutlich die beste Variante. Bei der Wahl des Kondensators muss man vermutlich noch aufpassen, dass ein sehr hoher Stromverbrauch die Zeitverzögerung dadurch nicht überrennt.
Hallo,
ich habe den TCRT5000 mal testweise mit einem Wemos D1 mini verbunden. Wenn ich mit dem Finger oder einem Stift vor der Lichtschranke entlag fahre, zählt der Aufbau auch die Impulse.
Jedoch funktioniert das Ganze nicht vor der Scheibe des Stromzählers. Sobald sich der Sensor der Scheibe nähert, schaltet die Lichtschranke und ist belegt – dabei ist es egal, wie empfindlich ich den Sensor über das Poti einstelle. Auch habe ich unterschiedliche Winkel zum Glas versucht, ohne Erfolg. Wie habt ihr das Problem mit der Glasscheibe gelöst?
Ging bei mir auf Anhieb. Streulicht sollte man vermeiden, damit der Kontrast größer wird. Es könnte aber natürlich auch vom Zählermodell abhängen, wenn die Glasscheibe etwa weiter von der Scheibe entfernt liegt.
Hi,
Ich habe genau dasselbe Problem bei meinem Zähler. Hast du zufällig eine Lösung dafür gefunden?
Nein, bis jetzt habe ich keine Lösung gefunden. Keiner meiner drei Sensoren funktioniert durch die Scheibe. Evtl. liegt es an den Sensoren von AZ-Delivery.
Ich glaube nicht, dass das an den Sensoren liegt. Die fallen alle vom gleichen Band in China und die Herstellerbezeichnungen wechseln zuhauf. Habt ihr mal mit dem Oszi direkt am Ausgang des Sensors gemessen?
Leider habe ich privat kein Oszi, könnte jedoch den Sensor im Betrieb sicherlich mal beim Kollegen ans Oszi hängen. Könntest du mir bitte sagen, was ich da genau messen sollte?
Ob ein vernünftiger Impuls mit zu sehen ist, wenn man die Lichtschranke abdeckt und frei gibt (mit dem Finger abdecken, wedeln etc.). Dieser Impuls muss dann als richtig schön definiertes Rechteck aus der Schaltung kommen.Im Beitrag ist alles Notwendige Beschrieben.
Noch ein Wort zum Thema allgemein: Das sind Projekte, für die man einfach Grundlagen der Elektrotechnik, Bauteilkunde, Fehlersuche und eine gewisse Grundausstattung mitbringen muss, damit sie nicht in Frust ausarten. Es sind keine Plug and Play Lösungen für jedermann. Der Fehler könnte überall liegen und dazu bedarf es die oben genannten Kenntnisse.