Inhaltsverzeichnis
Mit dem NodeMCU Board ESP8266 Impulse zählen - Durchfluß messen
Einführung siehe ⇒ Erste Schritte mit dem ESP8266 / NodeMCU Board mit Lua
Technik
Der Sensor verwendet den Hall Effekt um die Drehzahl eines Rades zu bestimmen.
Flowmeter anschließen
- Schwarz ⇒ GND
- Rot ⇒ 3,3V
- Gelb ⇒ D1 ⇒ Daten
Impulse auswerten
Der Meter wird an GPIO Port 1 angeschlossen, der Impuls wird ausgewertet und eine zuvor auf den Pin registrierte Funktion wird aufgerufen.
D0 wird nicht unterstützt für Interrupts!
Impulse pro Minute und Sekunde zählen:
-- Welcher GPIO Port trigger_pin=1 -- Zähler min_time=0 pulszaehler=0 pulszaehler_min=0 ------------------------------------------- -- Was soll aufgerufen werden function intPin1(level, internalCountMs) pulszaehler=pulszaehler+1 end ------------------------------------------- -- Trigger Mode setzen gpio.mode(trigger_pin,gpio.INT) ------------------------------------------- -- Interrupt Handler definieren -- für fallende flanke gpio.trig(trigger_pin, "down", intPin1) ------------------------------------------- -- je Sekunde den aktuellen Status ausgeben sectimer =tmr.create() sectimer:register(1000, tmr.ALARM_AUTO, function() if min_time == 59 then min_time=0 print(string.format('Stand nach einer Minute :: %05i ', pulszaehler_min )) pulszaehler_min=0 -- hier wird der gezählte Werte nun an die Datenbank übergeben -- send data aufrufen -- möglichst in einen neuen Thread !! else min_time=min_time+1 end pulszaehler_min=pulszaehler_min+pulszaehler print(string.format('Stand in dieser %02i Sekunde :: %05i :: Sum :: %05i',min_time, pulszaehler,pulszaehler_min) ) pulszaehler=0 end) sectimer:start() ------------------------
So etwas ist evtl. besser mit /Lua-RTOS umsetzbar ⇒ https://github.com/whitecatboard/Lua-RTOS-ESP32 , da ja hier eigentlich mehrer Threads notwendig sind um die Daten zu versenden und gleichzeitig richtig zu zählen.
Quellen
Real time OS Lua-RTOS for ESP32
Durchfluss Messen
Lieferanten:
Spezifikation ⇒ https://docs.google.com/file/d/0B9hyK_DA6VIiSWNRZ29sdG1UOVU/edit?pli=1