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.

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.

Der kostenlose nachbelichtet Newsletter für dich

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.

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.

Wie hat dir diese Art Beitrag (nicht das Produkt!!) gefallen? Ich freue mich über deine Bewertung!

1 gar nicht (warum nicht?)2 Geht so ...3 ganz interessant4 Toller Artikel5 Sehr gut! Mehr davon! (3 andere Leser bewerteten ihn mit: 5,00 von 5 Sternen)
Loading...

Ähnliche Beiträge lesen:

4 Gedanken zu “So funktioniert der TCRT5000 mit ESPeasy als Pulse Counter”

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

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