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.

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.

0 0 bewerten
Article Rating

Letzte Aktualisierung am 14.07.2020 / Affiliate Links / Bilder von der Amazon Product Advertising API

Der kostenlose nachbelichtet-Newsletter für dich

Kommentare abonnieren
Benachrichtige mich bei
21 Comments
neueste
älteste meiste Bewertungen
Inline Feedbacks
Alle Kommentare ansehen

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?

Verbrauch.jpg

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.

Wie viel v soll der Kondensator haben

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

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

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… Weiterlesen »

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?

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.

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

Super. Vielen Dank für die Information

Durch diesen kleinen Hardware-Hack funktioniert die Stromablesung endlich vernünftig. Vielen Dank für den Artikel

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

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

21
0
Mich würde deine Meinung interessieren! x
()
x