So funktioniert der TCRT5000 mit ESPeasy als Pulse Counter

Die ESPeasy Plattform ist eine einfache und sehr preisgünstige Lösung, um verschiedene Sensoren, Taster und andere Signalquellen ins Smart Home zu bringen. Möchte man einen Ferraris Stromzähler oder andere Zähler auslesen, bietet sich die TCRT5000 IR-Lichtschranke an. Leider macht die aber oft Probleme, für die ich eine einfache Lösung habe.
Bitte beachte: Dieser Beitrag ist mehr als 3 Jahre alt. Manche Links, Preise, Produkte und Aussagen sind vielleicht nicht mehr aktuell!

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.

Das TCRT-5000 Modul

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.

Melde dich zu meinem Newsletter an!

Du kannst dich jederzeit abmelden und ich verspreche: Kein Spam!

Der Versuchsaufbau auf einem Breadboard

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.

74HC14 - 6 Schmitt-Trigger in einem Gehäuse
74HC14 – 6 Schmitt-Trigger in einem Gehäuse

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:

Meine Einstellungen für den Pulse Counter in ESPeasy

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.

Der Verbrauch wird in Symcon berechnet (Modul: Energiezähler Impuls)

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 18.03.2024 / Affiliate Links / Bilder von der Amazon Product Advertising API

Melde dich zu meinem Newsletter an!

Du kannst dich jederzeit abmelden und ich verspreche: Kein Spam!


Die mit Sternchen (*) gekennzeichneten Verweise sind sogenannte Provision-Links. Als Amazon-Partner verdiene ich an qualifizierten Verkäufen.Wenn du auf so einen Verweislink klickst und über diesen Link einkaufst, bekomme ich von deinem Einkauf eine Provision. Für dich verändert sich der Preis nicht und du unterstützt damit meine Arbeit. Preisänderungen und Irrtümer vorbehalten.

34 Kommentare

  1. 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.

  2. Danke für die nette Beschreibung, habe gerade alles bestellt. Möchten Sie auch die 3D-Datei des Halters teilen?

  3. Hallo, guter Artikel. Ich habe allerdings etwas gebraucht um zu verstehen, dass ESPEasy die Zeit in ms in der Variable „Verbrauch“ liefert und wie man daraus den aktuellen Verbrauch in kW berechnet. Bei mir ist das 3600/(0.075 * Vebrauch)

    Allerdings bekomme ich in größeren Abständen ziemlich hohe Peaks (siehe Screenshot). Diese sind aber so hoch, dass sie nicht richtig sein können. D.h. hin und wieder scheint ESPEasy zu kurze Zeiten abzuliefern. Hast du eine Idee woran das liegen könnte?

    • Die Geschichte ist mehr ein „Schätzeisen“. je weniger du verbrauchst, desto langsamer dreht sich die Scheibe und desto ungenauer wird die Messung.

      • Das verstehe ich. Aber ich erhalte über den Tag verteilt immer mal wieder kurze Spikes, die bis 80kW gehen. Das kann nicht sein. Ich vermute das ist ein Bug in ESPEasy. Ich habe mal geschaut, ob man das mit Tasmota auch machen kann, habe aber keine Möglichkeit gefunden damit die Zeit zwischen Pulsen zu messen.

        • Bei mir hat der Kondensator allein nicht ausgereicht. Ich habe noch ein Widerstand von 200K (100K haben nicht gereicht, wahrscheinlich prellt mein TCRT5000 länger) hinzugefügt. So hat es dann funktioniert. Bei wen es dennoch nicht funktioniert, sollte sich mal mit OP Amps mit pos. Feedback beschäftigen.

          Danke an nachbelichtet, du hast mich dazu gebracht mich mit dem Thema Elektronik vertiefter zu beschäftigen.

          Gruß Denis

    • Hallo, ein großes Danke für diese Anleitung. Auf dem Schreibtisch funktioniert die Schaltung einwandfrei. Jetzt muss sie in den Schaltschrank. Jedoch verstehe ich die Mathematik hinter der Formel von starob nicht. Welche Zeit wird gemessen? Von Rising zu rising oder von rising zu falling?

    • Naja, wir arbeiten mit 5 Volt, also irgendwas darüber. Da es Keramik und Folienkondensatoren ohnehin kaum unter 40 Volt gibt, nimmt man halt sowas. Kannst auch einen mit 1000 Volt nehmen, der ist dann eben sehr groß und unnötig.

      Man sagt, dass die Spannungsfestigkeit etwa 50 % höher sein soll, als die höchste zu erwartende Gleich- oder Wechselspannung. Da wir nicht über 5 Volt hinauskommen, wäre das ein Kondensator, der mind. 7,5 Volt aushält. Da es diesen Wert nicht gibt, nimmt man den nächsten Wert, der verfügbar ist und da geht es eben bei etwa 40 Volt los – oder man nimmt den, der gerade in der Bastelkiste zu finden ist.

      • wenn ich das so richtig verstanden habe, GND alle zum d1 mini, vcc an der TCRT5000 aber bei den elko habe ich 10v 100uf wo ist da + – sonst TCRT5000 d0 an 74HC14 1 und dazwischen den elko und elko an GND
        ich frage lieber nach habe nur ein versuch
        danke für die Hilfe soweit

        • Vor solchen Bastelarbeiten bitte erst einmal mit den Grundlagen der Elektronik beschäftigen z. B. hier: https://www.elektronik-kompendium.de)! Das ist z. B. kein Elko mit 100 µF (Mikrofarad), sondern ein Keramik- oder auch Folienkondensator mit 100 nF (Nanofarad). Er hat also eine 1000x geringere Kapazität. Würdest du deinen Elko nutzen, würde es nicht funktionieren. Deshalb auch keine weiteren Tipps, da das fahrlässig wäre.

          Hier kann nichts weiter passieren, außer dass du ggf. deine Bauteile verbrätst oder deinen Rechner abschießt. Erfahrungsgemäß wagen sich aber viele Laien an Dinge, die sie aus Unkenntnis gar nicht überblicken können. Deshalb immer schön unter SELV bleiben und wenn man das nicht kennt, komplett die Finger davon lassen!

        • schön wäre es gewesen wenn es genau stehen würde aber naja
          sind ja nicht die einzigen wo uf gebraucht werden

  4. Hallo,

    Ich habe zur externen Elektronik noch einen alternativen Vorschlag.
    Ich habe eine vertikale Schlitzblende mit Klebeband an der Glasscheibe des Zähler angebracht und meinen Sensor um 90° gedreht montiert.
    Bei mir läuft das jetzt ohne Mehrfachpulse am Pi mit 3.3V.
    Ich vermute, dass die Lichtschranke Probleme hat, wenn das zu detektierende Objekt (Markierung auf der drehenden Scheibe) sich zeitlich zuerst Sender oder Empfänger nähert… streng genommen sogar auf einer Kreisbahn. Durch die 90° Drehung kommt die Markierung gleichzeitig an beiden vorbei.

    Wer Probleme mit Mehrfachpulsen hat würde ich empfehlen zunächst das zu testen bevor man zum Löter greift. Ist ja schnell ausprobiert.

    Nur zur Info: In Fhem habe ich beim GPIO folgende Attribute gesetzt
    Interrupt: Rising
    active_low: no
    debounce_in_ms: 50

    Schönen Gruß
    Torsten

  5. Hallo!

    Ich habe das hab mal nachgebaut (nachdem ich ne semigut funktionierende Lösung hatte. Habe das alles so zusammen geschustert wie beschrieben. Problem ist: er zählt nicht das on off Signal sondern zählt je nach Schnelligkeit des Rades 10-50 mal.
    Ideen?

  6. Ich bekomm es nicht hin 🙁
    Im Versuchsaufbau also nicht am Zähler montier funktioniert es aber sobald ich es am Stromzähler montiere zählt er nicht mehr.
    Die LED am sensor geht immer brav aus wenn das rote Feld vorbeiwandert.

    bin verzweifelt wer eine IDEE bitte.

  7. Hallo.
    Vielen Dank für die Anleitung und die Möglichkeit, dass der PulseCounter besser funktioniert als er es ohne diese Modifikation tut (so ist er kaum nutzbar).

    Leider kenne ich mich nicht ganz so mit Elektrik aus und ich frage mich gerade, woran ich an dem Kondensator erkenne, wie er angeschlossen werden muss. Er hat doch eine Richtung, wie er angeschlossen werden soll, oder ist das egal ? Bei Dioden gibt es ja das kurze und das lange Beinchen um das zu unterscheiden. Bei dem Kondensator sehe ich nichts.

    Danke für die Hilfe

    • Bei solchen keramischen Kondensatoren, Folienkondensatoren etc. gibt es keine Polung. Die gibt es nur bei Elektrolykondensatoren (Elkos) und Tantalkondensatoren. Hier ist der negative Anschluss mit einem Strich oder Minus-Zeichen gekennzeichnet und der positive Anschluss mit einem +-Zeichen.

  8. …dann könnte man noch den 2. OP am chip als Schmitt-Trigger beschalten, wobei ich aber mit der SMD Bauform so meine Probleme hatte. Die „großen“ Widerstände am Chip auf dem Board verlöten endete mit einen Unterbruch einer Verbindung.

  9. Hallo,
    die Hysterese lässt sich noch einfacher ralisieren:
    Am Board des TCRT5000 ist ein LM393 beschaltet. Einfach einen Widerstand als Rückkopplung einbauen. Widerstand ca. 100kOhm zwischen Ausgang und +Eingang verbinden. Netterweise ist +OP auf „A0“ herausgeführt.
    Somit: zwischen „D0“ und „A0“ einen 100kOhm Widerstand anlöten und der oamp arbeitet mit einer Hysterese.

    PS: Vorhandenes 10k Poti gegen ordentliches Trimmpoti austauschen hilft enorm beim kalibrieren

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert