Schlagwort-Archive: Internet-of-Things

MQTT-Zirkulationssteuerung

Der Source Code zu diesem Projekt kann in unserem Web Shop erworben werden.

Key Features:

  • Schnelle Reaktionsgeschwindigkeit durch DS18B20 Temperatursensoren
  • Kompakte Bauform ©Sonoff DH 10/16 Schaltmodul
  • Landing Portal für die WIFI und MQTT Konfiguration
  • Einsparung von Heiz- und elektrischer Energie
  • Kurze Amortisationszeit
  • Maximaler Komfort bei der Warmwasserbereitstellung
  • Minimale Pumpenlaufzeiten, geringer Verschleiß
  • Optionaler Rücklaufsensor für eine noch bessere Effizienz
  • Leichte Integration in eine vorhandene Automatisierung durch MQTT-Client Funktion
  • Weboberfläche zur optimalen Parametrierung auch ohne MQTT
  • Wachsender Funktionsumfang durch Firmware OTA-Updates direkt vom Hersteller

Allgemeines:
Die Zirkulationspumpe in ihrer Trinkwasseranlage sorgt dafür, dass auch an weit entfernten Entnahmestellen jederzeit warmes Wasser zur Verfügung steht, ohne das vorher minutenlang Wasser ungenutzt im Abfluss verschwindet.
Dies geschieht durch eine ständige Zirkulation von heißem Wassers zwischen dem Warmwasserspeicher und der letzten Entnahmestelle ihrer Trinkwasseranlage, was letztendlich zu hohe Wärmeverlusten des Warmwasserspeichers führt. Abgesehen von diesen Wärmeverlusten, wird zusätzlich auch ständig elektrischer Energie für den Betrieb der Zirkulationspumpe benötigt, was über die gesamte Lebensdauer der Anlage mit hohen Kosten zu Buche schlägt.

Um diese Verluste möglichst gering zu halten, ist die üblichste und günstigste Lösung, eine einfache Zeitschaltuhr mit Tagesprogramm. Die Zeitschaltuhr wird in den Stromkreis zwischen Steckdose und Zirkulationspupe geschaltet, um außerhalb der üblichen Entnahmezeiträume die Zirkulationspumpe vom Stromnetz zu trennen.

Der Nachteil bei dieser Lösung liegt jedoch darin, dass bei einem anderen Nutzungsverhalten die Pumpe aus ist und kein warmes Wasser zur Verfügung stellt oder die Pumpe läuft zu Zeiten, obwohl gar kein warmes Wasser benötigt wird. In beiden Fällen geht viel Energie verloren und eine komfortable Bereitstellung von warmem Wasser ist nicht gegeben.

Die Lösung:
Im hier vorgestellten Projekt soll nun gezeigt werden, wie diese Problematik mit einem handelsüblichen ©Sonoff TH10/16 (10/16A) WLAN-Schaltmodul und einem daran angeschlossenen DS18B20 Temperaturfühler einfach und schnell gelöst werden kann.

Das TH10/16-Modul ist eins der wenigen Module der Firma ©Sonoff, das über ein kleines Schaltnetzteil verfügen und nicht wie viele der anderen Module über einen Kapazitives Netzteil. Der große Vorteil hierbei ist hier die Galvanischetrennung zwischen dem 230V Stromnetz und der daran angeschlossenen Elektronik. So ist es möglich über eine kleine vierpolige 2,5 mm Klinkenbuchse Sensoren direkt mit den IO-Pins des ESP8266 Mikrokontroller zu verbinden, ohne dass Netzspannung an den Sensoren anliegt.

Das TH10/16 Modul inklusive eines DS18B20 Temperatursensors kostet kaum mehr als eine elektronische Zeitschaltuhr, bringt aber ein Maximum an Energieeinsparung und das ohne einen Eingriff in die bestehende Hausinstallation vornehmen zu müssen.
Das Modul kann direkt bei Amazon mit kurzen Lieferzeiten bestellt werden.

Das Funktionsprinzip:
Die grundlegende Funktionsweise basiert auf der Erfassung eines Temperaturanstiegs an der Entnahmeleitung des Warmwasserspeichers.

Produktlink für eine einfache und effektive  Sensorbefestigung

Der Wasserhahn fungiert hierbei quasi als Fernbedienung.
Wird für einen kurzen Moment Warmwasser entnommen, z.B. beim Zähneputzen. Registriert der Temperaturfühler an der Entnahmeleitung diesen Temperaturanstieg, die Zirkulationspumpe augenblicklich angefordert und läuft für die Zeitdauer der eingestellten Laufzeit.
Schon kurze Zeit später, steht warmes Wasser am Wasserhahn zur Verfügung.
Um eine schnelle Reaktionszeit zu gewährleisten, sollte der Sensor der Entnahmeleitung möglichst nahe am Warmwasserspeicher angebracht werden, damit das System möglichst schnell auf eine Entnahme und den damit verbundenen Temperaturanstieg reagieren kann.
An den ©Sonnoff kann optional ein weiterer DS18B20 Sensor angeschlossen werden, der die Rücklauftemperatur erfasst. Ist ein zweiter Sensor angeschlossen, wird dieser automatisch von der Firmware erkannt und es erscheinen weitere Eingabefelder in den Einstellungen.
Hier kann dann unter anderem die Rücklauftemperatur eingetragen, bei der die Zirkulationspumpe wieder vorzeitig abgeschaltet werden kann.

Wird kurze Zeit nach einer Zirkulationspumenanforderung eine weitere Entnahme erkannt, greift die Wartezeit. Sie verhindert ein mehrmaliges Einschalten nach einer kürzlichen Entnahmen. Da sich bereits heißes Wasser in den Leitungen befindet, dass sich nur langsam wieder abkühlt.
Die Pumpenlaufzeit sowie die Wartezeit nach einer Zirkulation können über entsprechende Parametrierung in den Einstellungen optimal an die Gegebenheiten angepasst werden.

Findet über einen langen Zeitraum keine Entnahme statt, kann es durch das stehende Wasser in den Rohrleitungen zu einer Verkeimungen kommen (Urlaubszeiträume, Wochenendhäuser usw.).
Um einer Verkeimung vorzubeugen und ein Höchstmaß an Hygiene zu gewährleisten, startet nach einer definierbaren Zeitpanne automatisch eine Hygienezirkulation. Diese wird in regelmäßigen Zeitabständen wiederholt, wenn zwischenzeitlich keine Entnahmen stattgefunden haben.

In eine später geplanten  Firmware Versionen ist eine vorausschauende Zirkulationsanforderung geplant. Soll diese Funktion genutzt werden, wird der oben beschriebene zweite DS18B20 Sensor in der Rücklaufleitung benötigt!

Funktion: Wenn ein regelmäßiges Verbrauchsverhalten erkannt wird, werden diese Zeiträume erlernt und die Zirkulation startet bereits im Voraus, um unnötigen Wartezeiten zu minimieren. Hingegen soll während längerer Abwesenheit die Vorausschauenden Zirkulationsläufe automatisch unterbunden werden. Mit der ersten Entnahme nach dieser Pause, startet dann die Vorausschauende Zirkulation wieder automatisch. Sollten sich Verbrauchsverhalten geändert haben, werden die veralteten Informationen automatisch gelöscht und Stück für Stück durch die neu erlernten Informationen ersetzt.

Hardware:
Die Hardware der Zirkulationssteuerung besteht aus einem ©Sonoff TH10/16 mit einem oder optional zwei DS18B20 1-Wire Temperatursensoren. Die beiden Zahlen 10/16 bezieht sich auf die Schaltleistung des Moduls.
Wir raten zum ©Sonoff TH16, er ist kaum teurer als der TH10, bietet jedoch wesentlich mehr Komfort beim Anschluss der Versorgungsspannung und der Pumpe durch seine Klemmanschlüsse. Außerdem bietet er eine ausreichende Reserve bei der Schaltleistung, was die Lebensdauer des Relaisschaltkontaktes ebenfalls wesentlich verlängert.

Die Sensoren werden über eine vier polige 2,5 mm Klinkenbuchse angeschlossen. Über diese Buchse werden zwei GPIO’S und die Versorgungsspannung herausgeführt.

Steckerbelegung ©Sonoff TH10/16

Der Stecker ist ein vierpoliger 2,5mm Klinkenstecker, über den die 1-Wire Temperatursensoren vom Typ DS18B20 mit dem Modul verbunden werden (DQ – GPIO 14, +3,3V und GND). Beim Anschluss von zwei Temperatursensoren, werden diese parallel an die entsprechenden Anschlusspins angeschlossen.
Die Temperatursensoren am Warmwasservorlauf bzw. am Zirkulationsrücklaufrohr, erkennen kleinste Temperaturänderungen und steuern so das Laufverhalten der Zirkulationspumpe.

Da der ©Sonoff nur eine 2,5mm 4-Pin Eingangsbuchse besitzt, gibt  es für den Anschluss von zwei Sensor zwei einfach Lösungen. Man schneidet die angespritzten Steker (soweit vorhanden) ab und verbindet die jeweils gleichen Adern miteinand. Nun kann man entweder einen Lötbaren Stecker verwenden, an den die Adern entsprechend der oben beschrieben Anschlussbelegung angelötet werden. Eine Zweite, lötfreie Lösung bietet die Verwendung eines sogenannten Terminal Adapters Klinke 2,5mm 4-Polig mit Schraubklemmen.
Einen entsprechenden Produktlink finden Sie hier:

Aderfarbcode der DS18B20 Sensoren
DS18B20 Sensoren können zwei Adrig oder auch drei Adrig angeschlossen werden.
Bei einem zweiadrigen Anschluss betreibt man den Sensor im sogenannten parasitären Modus, die benötigte Versorgungsspannung wird über die Sensorleitung eingespeist und über einen kleinen Kondensator im inneren des Sensors gespeichert.

Signal
Beschreibung Klemme des Adapters
GND
(sw/gn)
GND V
Data
(gelb/weis)
DQ – GPIO 14 L
VDD
(rot)
+3,3V Versorgungs-spannung     |
—–
  —

Jeder DS18B20 Temperatursensor besitzt seine eigenen, einzigartigen 64-bit Seriennummer, was den Betrieb mehrere Sensoren an nur einer Datenleitung zu zulässt.

Hardwareanpassung des ©Sonoff
An dieser Stelle wird ausdrücklich darauf hingewiesen, dass für alle im Folgenden beschrieben Arbeitsschritte, wie der Austausch des Flashspeichers, die Programmierung einer neuen Firmware, dass ©Sonoff Modul komplett von der 230V Netzspannung getrennt sein muss.
Ansonsten besteht Lebensgefahr durch einen elektrischen Schlag!

Der Flashspeicher, der mit dem das ©Sonoff TH Modul ausgeliefert wird, ist ein Winbond 25Q08FV, der mit einer Größe von 8MBit (1MByte) für diese Anwendung und die „Over the Air“ OTA-Update Funktion etwas zu knapp bemessen ist. Da bei einem OTA Update die Hälfte des Flash Speichers als Ladespeicher benötigt wird. Deshalb wird er durch einen Winbond 25Q32FV mit 32MBit (4MByte) im SOP-8 Gehäuse ausgetauscht, den Sie in unserem Webshop erhalten.

Um erstmalig eine eigene Firmware auf dem ©Sonoff zu installieren, sind auf der Platine bereits alle benötigen Pins herausgeführt.
Für den Flashvorgang wir eine USB-Seriell Modul mit einer VSS von  3,3V benötigt. Vor dem Anschluss des Moduls ist auf die richtige Einstellung der Versorgungsspannung zu achten. Bei vielen dieser Module kann die Versorgungsspannung VSS zwischen 3.3V und 5V umgeschaltet werden. Eine zu hohe Versorgungsspannung fürhrt zur sofortigen Zerstörung des ©Sonoff Moduls.

Der Source Code zu diesem Projekt kann in unserem Web Shop erworben werden.

Möchten Sie den Austausch des Flashspeichers und-/ oder die Programmierung der Firmware nicht selbst durchführen,  übernehmen wir das gere für Sie.
Sie können dies als Dienstleistung direkt in unserem Webshop beauftragen.

Einrichten der WIFI Verbindung:
Um die Zirkulationssteuerung  in das lokale Netzwerk zu integrieren, wird Anfangs ein eigener AP geöffnet. Verbindet man sich mit diesem AP und öffnet anschließend im Webbrowser die IP-Adresse 192.168.4.1 gelangt man in das Konfigurationsportal der Zirkulationssteuerung.
Hier können dann alle notwendigen Einstellungen für das lokale Netzwerk (SSID, Kennwort) und die die Verbindung zum MQTT-Broker (Server IP, Benutzername, Kennwort und Port) vorgenommen werden.
Konnte anschließend mit den eingegebenen Informationen eine Verbindung zum lokalen Netzwerk hergestellt werden, sind alle Daten und Konfigurationen der Steuerung, neben dem MQTT-Broker auch über das integriertes Web-Interface erreichbar.

Ansicht im IO-Broker:

Die Ansicht zeigt alle verfügbaren Parameter der Zirkulationssteuerung.

Beschreibung der Notes

Note Name Beschreibung Lesen / Schreiben
INFO/Hostname Bezeichnung des Moduls Read
INFO/IPAdress Aktuelle IP-Adresse Read
INFO/Modul WLAN-Modul Read
INFO/RestartReason Beschreibung des letzten Neustart Ereignisses Read
INFO/Version Aktuelle Firmware Version Read
SETTINGS/BackflowTemp Rücklauftemperatur Abschaltwert (°C) Read / Write
SETTINGS/CHECKUPDATE Neustes Firmware Update laden (set true) Read / Write
SETTINGS/GradientIntTime Garatientenzeit ab ersten erkannten Temperaturanstieg
(sek.)
Read / Write
SETTINGS/LegionellaWaitTime Hygienezirkulationszeit
(Std.)
Read / Write
SETTINGS/PumpRunTime Pumpenlaufzeit (min.) Read / Write
SETTINGS/RelaisDirection Wirkrichtung des Realis Read / Write
SETTINGS/StartPump Pumpe manuell starten (set true) Read / Write
SETTINGS/StopPump Pumpe manuell stop
(set true)
Read / Write
SETTINGS/TempGradient Temperaturgradient innerhalb der (°C)
GradientIntTime
Read / Write
BackflowTemperatur Rücklauf Temperatur DS18B20 (°C) Read
PreflowTemperature Vorlauf Temperatur DS18B20 (°C) Read
PumpRequest Zirkulationspume aktiv
(on/off)
Read
RelPinState Status Relais Pin
(high/low)
Read
RemainingLegionellaTime Abgelaufene Hygiene Zirkulations Wartezeit
(Std.)
Read
RemainingPumpRunTime Abgelaufene Zirkulationszeit
(Min.)
Read
RemainingPumpWaitTime Abgelaufene Wartezeit
(Min.)
Read
Uptime Zeit seit dem letzten Neustart Read
Vcc Prozessor Core Spannung Read

Ansicht im Webbrowser:

Analog zur Ansicht im Broker stehen alle Parameter auch im Webbrowser Interface zur Verfügung.

 

MQTT- Kapazitiver Regensensor

Kapazitiver Regensensor MQTT
Kapazitiver Regensensor MQTT
Kapazitiver_Regensensor_MQTT.zip
2.9 MiB
59 Downloads
Details

Der Source Code für dieses Projekt kann in unserem Web Shop erworben werden.

Allgemeines

Anfang 2021, wurde von uns eine IoT-Wetterstation für eine Projekt in Südtirol entwickelt. Ein Teil der Aufgabenstellung bestand darin, einen kapazitiv arbeitenden Regensensor zu integrieren.
Nach Abschluss der Entwicklung, blieben aus dem Prototyping noch einige der Sensor Platinen übrig, daras entstand dann dieses Projekt.
Um dem interessierten Kunden das Funktionsprinzip näher zu bringen und eine Anleitung für den grundlegenden Aufbau eines kapazitiven Regensensors anzubieten, wurde der folgenden Artikel auf unserem Blog dazu veröffentlicht: Kapazitiver Regensensor.

Da die Anfragen für einen solchen Sensor sehr groß waren, haben wir uns entschlossen ein kleine Auswerte Platine zu entwickeln, die mit einem ESP8266 (WEMOS D1 mini) ausgestattet ist und die Sensordaten per Webserver und MQTT zur Verfügung stellt.
Zusätzlich befindet sich auf der Auswerte Platine ein potentialfreier Relais Schaltkontakt, der es erlaubt bei einer Regenerkennung auch direkt einen externen Schaltvorgang auszulösen. Um z.B. eine Markise ein zu fahren.

Aufbau Hardware

Das Regensensor Modul besteh aus drei Einzel Komponenten

  • Kapazitive Sensorplatine
    Die Funktionsweise der Sensorplatine wird bereits im Beitrag Kapazitiver Regensensor ausführlich beschrieben, weshalb wir hier nicht mehr näher darauf eingehen werden.
  • Auswerteeinheit
    Die Platine der Auswerteeinheit bildet das Gegenstück zur Sensorplatine. Die beiden Platinen besitzen dieselben Abmessungen, was bei der Befestigung z.B. in einem geeigneten Gehäuse wie einer Verteilerdose von großem Vorteil ist. Die Bohrlöcher für die Befestigung der Auswerteeinheit werden somit komplett von der aufgeklebten Sensorplatine überdeckt und bietet so einen perfekten Korrosionsschutz.
    Auf der Platine befindet sich ein DS18B20 Temperatursensor, der durch seine Position die Gehäuseinnentemperatur und gleichzeitig die Temperatur kurz unterhalb der Sensorplatine erfasst. Auf diese Weise kann in den Wintermonaten verhindert werden, dass sich Forst auf dem Sensor bilden kann. Bei einem Regenereignis wird die Sensorheizung ebenfalls automatisch aktiviert, um ein schnelleres Abtrocknen der Sensoroberfläche und somit eine schnellere Reaktionszeit des Sensors nach einem Regenereignisses sicher zu stellen. Die Maximale Sensor Temperatur wird über den Temperatursensor geregelt, das spart Energie und erhöht die Lebensdauer des Regensensors.
    Befindet sich kein Feuchtigkeit, Eis oder Kondensat auf der Sensoroberfläche, das durch die Erwärmung verdampfen kann, kommt es auch nicht zu einer Abkühlung durch Verdunstung und der Sensor würde sich immer mehr aufheizen.
    Diese Regelung arbeitet mittels PWM (Pulsweitenmodulation), mit einer Frequenz von ca. 100Hz. Wurde Regen detektiert, findet im Temperaturbereich von 35 – 50°C eine stetige Regelung statt.
    Unterschreitet die Temperatur 4 °C, wird die Sensor Heizung ebenfalls aktiviert um Frostbildung auf der Sensoroberfläche zu verhindern. Hierbei wird ebenfalls die Leistung der Sensorheizung in Abhängig der gemessenen Temperatur geregelt. Der Regelbereich liegt hier bei zwischen 4°C und -6°C, was dann einer Heizleistung von 100 % entspricht.
    Um eine Betauung der Sensoroberfläche zu verhindern, .z.B. bei Morgentau oder Nebelbildung, wird die die kompensierte Sensorkapazität als Messgröße herangezogen. Überschreitet diese einen Wert von 5 pF, wird die Sensorheizung mit einer Leistung von 20 % betrieben, um diesen Effekt zu eliminieren. Die Maximale Sensorheizleistung kann über MQTT oder das Webfrondend in einem Bereich von 1 – 100% eingestellt und somit begrenz werden. Die Spannungsversorgung der Sensorheizung wird über eine 500mA selbstrückstellende Sicherung geschützt. Der WMOS D1 mini besitzt eine eigene selbstrückstellende Sicherung. Die Spannungsversorgung erfolgt nicht über die Micro USB-Buchse, sondern über die zwei auf der Platine herausgeführten Lötpunkte *5V und GND. Nähere Informationen hierzu erhalten Sie in der Dokumentation, die sie oben im Beitrag kostenlos herunterladen können.

ACHTUNG:
Auf der Platine ist kein Verpolungsschutz vorhanden! Ein falscher Anschluss der Spannungsversorgung führt zu einer Zerstörung der elektronischen Bauteile.
Das Netzteil benötigt eine stabilisierte Ausgangsspannung von 5V= und  mindestens 1A  Ausgangs Strom, um die Auswerteeinheit und die Sensor Heizung sicher zu betreiben.

  • Auf der Platine der Auswerteeinheit befindet sich auch noch der hochgenaue Langzeit Timer 7555, der hier als 3V Variante bestückt ist und die Kapazitätsfrequenzumsetzung durchführt. Als letztes Bauteil ist nun noch das Read Relais zu nennen, dass einen potentialfreien Ausgangskontakt zur Verfügung stellt und bei einem Regenereignis ein externes Schaltsignal zur Verfügung stellt.
    Der ungenutzte Raum der Platine wurde mit einem 2,54mm Lochraster versehen, das noch genügend Raum für eigenen Erweiterungen und Ideen bietet.
  • WEMOS D1 mini pro
    Das Schaltungsdesigne  des WEMOS D1 mini Board der Auswerteeinheit musste ebenfalls modifiziert werden (Nähere Informationen hierzu finden Sie in der Technischen Beschreibung).
    Es besitz 4 MB Flash, was ausreichend Platz für zukünftige Erweiterungen oder eigenen Ideeen bereithält. Das Modul wird mit der aktuellen Firmware ausgeliefert, kann aber jeder Zeit über ein Internetverbindung OTA auf die neueste Firmware Versionen upgedatet werden.
    Alle Anschlüsse des WEMOS sind nochmals separat auf dem Lochraster (Stiftleiste 2,54mm) herausgeführt.

Aufbau der Firmware

Um das Regensensormodul in das lokale Netzwerk zu integrieren, wird Anfangs ein eigener AP geöffnet. Verbindet man sich mit diesem AP und öffnet man anschließend im Webbrowser die IP-Adresse 192.168.4.1 gelangt man in das Konfigurationsportal des Regensensor Moduls.
Hier können dann alle notwendigen Einstellungen für das lokale Netzwerk (SSID, Kennwort) und die die Verbindung zum MQTT-Broker (Server IP, Benutzername, Kennwort und Port) vorgenommen werden.
Konnte anschließend mit den eingegebenen Informationen eine Verbindung zum lokalen Netzwerk hergestellt werden, sind alle Daten und Konfigurationen des Sensors wie Einschaltschwellen, die Schalthysterese usw. neben dem MQTT-Broker auch über das integriertes Web-Interface erreichbar.

Die Kapazität des Sensors steht als Rohwert vom Sensor zur Verfügung. Für die Auswertung der Schaltschwelle, wird der kompensierte (kalibrierte) Sensorwert herangezogen.
Um nicht mit dem absoluten Kapazitätswert des Sensors arbeiten zu müssen, kann der Sensorwert bei Trockenheit selbst definiert werden. Hierfür wird eine Kalibrierung durchgeführt. So dass der Kompensierte Sensorwert dann bei Trockenwetter null hat.
Wandert der Wert um 10 pF in den negativen Bereich führt das Sensormodul einen automatischen Nullabgleich durch.

Übertragung der Werte per MQTT

Wird der Regensensor neu gestartet, werden alle Topics der Settings subscribed und anschließend alle Topics einmalig published.
Danach wird die publishing Routine in der Firmware fix alle 10 Sekunden aufgerufen und dabei nur die Werte published, die eine Änderung seit dem letzten publishing Zyklus erfahren haben.
Dies geschieht um den Traffic möglichst gering zu halten.

Hier eine Übersicht der benötigten Werteänderung für eine erneute MQTT Übertragung:

  • curtemperature               >= 1.0 °C
  • curfrequency                    >= 50.0 Hz
  • curcapacity                        >= 3.0 pF
  • compcapacity                    >= 3.0 pF
  • calcapacity                         >=1.0 pF
  • precipitation                      >= 0.01 l/m2
  • windspeed                         >= 0.5 m/s
  • heatsinkpower                 >= 0.01
  • rain                                      true/false;
  • Uptime / Core Vcc           in jedem Zyklus

Die CurCapacity und damit auch Comp.Cap. schwankt natürlich auch ohne Regen immer ein wenig, abhängig von der Luftfeuchtigkeit, Nebel oder ähnlichem. Deshalb wurde für die Auswertung der Regenerkennung ein Schwellwert definiert.

Berechnung der Niederschlagsmenge

Eine neue, aber noch experimentelle Funktion ist eine Berechnung der Niederschlagsmenge anhand der Sensorkapazität und der Dauer des Regenereignisses. Hierfür wird der Wert der kalibrierten Sensorkapazität alle 30 Sekunden erfasst und in ein Array gespeichert. nach 15 Minuten, wird aus diesen Werten der Mittelwert gebildet. Die Summe der vier Viertelstundenwerten ergibt dann den Stundenwert, der nach der folgenden Funktion in eine Niederschlagsmenge (l/m2) umgerechnet wird und als 24 Stundenwerte ebenfalls in ein Array mit den Tageswerten geschrieben wird.

Diese Funktion berechnet sich nach der Formel:

float y = 3e-06 * sq(x) – 0.0004 * x + 0.0004;

Windgeschwindigkeitsmessung mit einem Anemometer

Ab Version 1.05 besteht die Möglichkeit ein Anemometer für die Ermittlung der Windgeschwindigkeit an die Auswerteeinheit anzuschließen. Der neue Sensor wird nach dem ersten Impuls automatisch von der Firmware erkannt, anschließend werden weitere Konfigurations- und Anzeigewerte per MQTT und im Web Frontend zur Verfügung gestellt.

Das Anemometer muss über einen potentialfreien Ausgangskontakt verfügen (Sensor mit Reed Ausgangskontakt). Die Erweiterung des Auswertemoduls um diese Funktion gestaltet sich recht einfach, es werden lediglich die folgenden Bauteile benötigt.

  • Ein Widerstand 10 KOhm 1/4 W, print
  • Ein Keramikkondensator 100 nF, print
  • Ggf. eine Schraubklemme 2-polig, Raster 5,08 mm für den Sensoranschluss.

Das folgende Bild zeigt die einfache Schaltung, die für den  Anschluss eines Anemometers an der Auswerteeinheit nachgerüstet werden muss. Die beiden Verbindungsleitungen des Anemometers werden einmal mit den 3.3V und dem GPIO 14 (D5) des WEMOS D1 mini verbunden. Am GPIO14 (D5) wird dann nur noch der Widerstand (10K) und der Keramikkondensator (100nF) gegen Masse angeschlossen.

Es werden viele verschieden Anemometer mit Reed Schaltkontakten im Handel angeboten. Diese unterscheiden sich nicht nur durch verschieden Bauformen (Diameter) sondern auch durch die Anzahl der Impulse pro Umdrehung.

Deshalb stehen nach dem Anschluss eines Anemometers zwei weitere Eingabeparameter im MQTT-Broker und dem Web Frontend zur Verfügung, die eine individuelle Konfiguration des eingesetzten Anemometers zulassen. Der erste Parameter gibt die Anzahl der Impulse pro Umdrehung an. Wieviel Impulse pro Umdrehung der Sensor liefert, kann leicht mit einem einfachen Multimeter oder einem Durchgangsprüfer ermittelt werden, indem  man das Windrad einmal um seine eigene Achse dreht und das Schließen des Kontaktes abzählt.
Der zweite Parameter gibt die Windgeschwindigkeit in km/h, wenn sich das Windrad innerhalb einer Sekunde einmal um die eigene Achse dreht. Lesen Sie hierfür in den Angaben des Herstellers nach.

Verwendet werden kann z.B. ein Anemometer der Firma TOOGOO mit der Typenbezeichnung „WH-SP-WS01 Anemometer“.
Für dieses Anemometer sind die Konfigurationseinstellungen bereits in der Firmware eingetragen.

  • Pulse/Umdrehung = 1 Puls
  • Geschwindigkeit in km/h bei 1U/s = 2,4 km/h

Ansicht im IO-Broker:

Die Ansicht zeigt alle verfügbaren Parameter des Sensormoduls.

Beschreibung der Notes

Note Name Beschreibung Lesen / Schreiben
INFO/Hostname Bezeichnung des Moduls Read
INFO/IPAdress Aktuelle IP-Adresse Read
INFO/Modul WLAN-Modul Read
INFO/RestartReason Beschreibung des letzten Neustart Ereignisses Read
INFO/Version Aktuelle Firmware Version Read
SETTINGS/Calibrate Sensorkalibrierung (set true) Read / Write
SETTINGS/CheckUpdate Neustes Firmware Update laden (set true) Read / Write
SETTINGS/HeatsinkMaxPower
(ab Version x.04)
Maximale Sensor Heizleistung  (%) Read / Write
SETTINGS/HystCapacity Schalthysterese Kapazitätswert (pF) Read / Write
SETTINGS/RelaisDirection Wirkrichtung (direct / inverse) Read / Write
SETTINGS/TrshCapacity Schaltschwelle für die Regenerkennung (pF) Read / Write
SETTINGS/WSPulsNumber (optional)
Pulse/Umdrehung
P/U
Read / Write
SETTINGS/WSWindSpeed (optional) Geschwindigkeit in (km/h bei 1U/s) Read / Write
Alive
(ab Version x.05)
Online Status des Moduls (true/false) Read
CalCapacity Kapazitäts- Kompensationswert (pF) Read
CompCapacity Relativer (kompensierter Kapazitätswert (pF) Read
CurCapacity Aktuelle Sensor Kapazität (absolut Wert (pF) Read
CurFrequency Aktuelle Sensorfrequenz (Hz) Read
HeatiSinkPower
(ab Version x.04)
Aktuelle Leistung der Sensorheizung (%) Read
Precipitation
(ab Version x.05)
Niederschalgsmenge l/m2 (experimentell) Read
Rain Status der Regenerkennung (true/false) Read
RainState Status der Regenerkennung (Textform)
CompCapacity > TrshCapacity
= „dry“
CompCapacity < 150 = „light rain“
CompCapacity < 350 = „moderate rain “
CompCapacity < 700 = „normaly rain“
> 700= „heavy rain“
Read
Temperature DS18B20 Gehäuse/Sensor Temperatursensor Wert (°C) Read
Uptime Zeit seit dem letzten Neustart Read
Vcc Prozessor Core Spannung Read
WindSpeed
(optional)
Windgeschwindigkeit (m/s) Read

Einfaches Blockly Skript für den IO-Broker

In diesem Abschnitt soll Beispielhaft die Integration einer Markisen Ansteuerung mit einem Blockly Skript für den IO-Broker gezeigt werden.
Die Variable „Rain-Trigger“ ist eine User definierte boolesche Variable im Broker und dient hier als Trigger für das Umschalten zwischen den Zuständen der Regenerkennung und der Regenende Erkennung.

In diesem Skript wird bei einer Regenerkennung ein kurzer „Close“ Befehl an einen Shelly 2.5 Rollladenschalter gesendet, eine Bedienung durch den Nutzer bleibt somit jederzeit weiterhin möglich.

Shelly 2.5 Rollladenschalter bei Amazon

Ansicht im Webbrowser:

Analog zur Ansicht im Broker stehen alle Parameter auch im Webbrowser Interface zur Verfügung.

Montage Vorschlag:

Das Regensensor Modul sollte in einem Winkel von ca. 30° mountiert werden, damit der auftreffende Regen die Sensoroberfläche nur benetzt und abfließen kann.  Das Modul lässt sich leicht in eine Hensel Verteilerdose (ohne Klemmen) mit den Abmessungen 104 mm x 104 mm, vom Typ DK 0200 G / IP66 einbauen.

Abzweigdose DK 0200 G / IP66 bei Amazon

Hinweis:
Die oben genannte Abzweigdose besitzt keine Einführungen oder Würgenippel. Die Einführungsöffnungen sind mit einer Gummimembrane ausgestattet, die leicht durchstochen werden kann und das Kabel anschließend wieder Wasserdicht umschließt.

Im ersten Schritt werden die Befestigungslöcher für vier Distanzhülsen M3x8mm auf der Deckel Oberseite angezeichnet und mit einem 3,2mm Bohrer gebohrt.
Dann werden die Löcher mit einem Senker soweit angesenkt, dass die M3x4mm Senkkopfschrauben plan in den Senkungen verschwinden.

Anschließend wird mit einem Fräser oder einem Forstner Bohrer ein ca. 25 mm großes Loch für den Sensorstecker und den DS18B20 Sensor ausgemessen und gebohrt.

Nun werden die Distanzhülsen M3x6mm auf der Innenseite des Deckels befestigt und die Auswerteeinheit so montiert, dass die Buchsen Leiste und der Sensor im Sensorbohrloch platziert sind.

Danach kann der Sensor mit Silikon auf den Deckel aufgeklebt werden.

Achten sie beim Aufbringen des Sensors darauf, dass die Stiftleiste richtig in der zehn Poligen Buchsen Leiste steckt, so dass nach dem aufbringen der Sensorplatine auch alle vier Senkkopfschrauben verdeckt werden.

Versionsverlauf:

Intended:

  • Hard.Firmware Version 2.06
    Integration einer LUX-Messung mit einem VEML7700 (I2C).

Released:

  • 28.08.2021 Alle HW Versionen
    Firmware Version X.05
    Integration eines Anemometers zur ermittlung der Windgeschwindigkeit.
    Precipitation Wert (Experimentelle Niederschlagsmenge) Errechnung über viertelstunden Mittelwerte der Comp. Kapazität in l/m2, in MQTT und im Web Browser eingerichtet. Niederschlags Chart Demeoversion 24h.
    LWT / Alive – Last Will Testament Onlinestatus des Sensormoduls in MQTT integriert. Reduzierung des MQTT Datenverkehrs.
  • 29.07.2021 Alle HW Versionen
    Firmware Version 04
    – Sensor Temperatursteuerung, Regelung der Leistung per PWM
    und Option zur Begrenzung der maximalen Heizleistung.
    – Temperaturregelung der Sensorheizung für Frostschutz und
    Maximaltemperatur.
    – Betauungsschutzfunktion ab einer Kompensierten
    Sensorkapazität von 5 PF, Heitleistung Sensorheizung auf 20%
  • 16.07.2021: Alle HW Versionen
    Firmware Version 03
    – Überarbeitung im Dialog Update, Reset und Restart im
    Webfrontend vorgenommen.
    – Regen Status als Klartextausgabe.
  • 03.07.2021: Alle HW Versionen
    Firmware Version 02
    – Anzeige von Einheiten für den MQTT – Broker erweitert.
  • 04.06.2021: Alle HW Versionen
    Firmware Version 01
    – In dieser Version wurde eine Fehlerbeseitigung im
    Webfrontend vorgenommen, es betrifft die Umschaltung
    der Wirkrichtung des potentialfreien Relais Ausgangs.

Controllino Erweiterung für 8 x 1-Wire Sensoren oder Analogeigänge

Allgemeines

Die SPS Module mit der Bezeichnung „CONTROLLINO“ sind frei programmierbare Arduino™ Standard und Arduino™ Software kompatible SPS Steuerung für den privaten und industriellen Gebrauch nach Norm EN 61010-2-201.
Der CONTROLLINO dient als elektronische Steuereinheit und ist auf ein Maximum an Kompatibilität ausgelegt.

Das Gerät verfügt nicht nur über alle gängigen Anschlüsse, sondern kann auch komplett von Grund auf programmiert werden.

Das CONTROLLINO kann auf Basis der Arduino™ IDE in der Programmiersprache C programmiert werden. Hierbei handelt es sich um eine Open Source Entwicklungsumgebung.

Zudem gibt es sehr viele Bibliotheken die das Programmieren vereinfachen.

Viele der angebotenen CONTROLLINO Module besitzen zu den bereits vorhandenen Klemmanschlüssen zusätzliche Pinheader Anschlüsse, die als 36-pol. Wannensteckerleisten ausgeführt sind und somit alle relevanten Anschlüsse des Microkontrollers als TTL-Kompatible Anschlüsse zur Verfügung stellen.

Die auf diesen Steckerleisten herausgeführten I/O’s besitzen einen ESD-Schutz und befinden sich hinter dem aktivem Spannungsteiler des CONTROLLINO und sind deshalb 5V TTL kompatibel, was eine Grundvoraussetzung für die Anbindung von Erweiterungen ist.

Genau hier setzt das „CONTROLLINO Sensorslot Modul 1-Wire“ an.

Um weitere externe Sensoren wie z.B. 1-Wire Temperatursensoeren oder Eingänge an die Controllino SPS’en anschließen zu können, wurde dieses Modul entwickelt. Es erlaubt den Anschluß von bis zu acht exteren 5V kompatiblen Eingängen, die über den X1-Pinheader Anschluss des Controllino herausgeführt sind.
Werden 1-Wire Sensoren angeschlossen, können diese über eine entsprechende DIP-Schalter Einstellung dem A0-Eingang des Controllino zugewiesen werden.

Die Zuschaltung eines exteren Pull-Up Widerstandes und die Auswahl des Widerstandswertes ist eben so über einen DIP-Codierschalter möglich.

Alle übrigen Eingangänge, die nicht für den Anschluss von 1-Wire Sensoren ausgewählt wurden, stehen weiterhin als 5V Digital- Analogeingänge zur Verfügung.

Controlino Sensorslot Modul 1-Wire V1.0
Controlino Sensorslot Modul 1-Wire V1.0
Controlino-Sensorslot-Modul-1-Wire-V1.0.pdf
Version: 1.00
924.2 KiB
143 Downloads
Details
Controllino Sensorslot Exaple
Controllino Sensorslot Exaple
Controllino_Sensorslot_Exaple.zip
1.1 KiB
46 Downloads
Details

Key Features

  • Die Spannungsversorgung erfolgt direkt über den Systembus des CONTROLLINO
  • Selbstrückstellende Sicherung zum Schutz des angeschlossenen CONTROLLINO
  • Anschluss von bis zu acht 1-Wire Sensoren
  • Flexibel durch diverse Bestückungs- und Anschlussvarianten (Wannenstecker oder Schraubklemmen)
  • Power LED für eine erleichterte Fehlersuche
  • Konfiguration der Sensoranschlüsse und des Pull-Up Widerstands über DIP-Schalter
  • Überspannungsschutz für jeden Sensorslot
  • Kurzschlussfeste 5V Sensorversorgung für jeden Sensorslot
  • Einfacher Anschluss an das CONTROLLINO Modul durch eine Flachbandkabelsteckverbindung
  • Mehrfachnutzung des Pinheaders möglich durch Anschluss eines Flachbandkabels mit mehreren Buchsenstecker.
  • Einfache Hutschienen Montage durch Hutschienen Railgehäuse
  • Sehr kompakte Bauform
  • Vielseitig verwendbar auch für andere Anwendungen

IOT – Wetterstation

Allgemeines

Für die Erfassung und Verteilung aktueller lokaler Wetterdaten wurde im Zuge eines Kundenauftrags diese IoT-Wetterstation mit integrierter Ethernet Schnittstelle auf Basis eines ESP32 entwickelt.

Alternativ kann auch auf die Anbindung über die Ethernet Schnittstelle verzichtet werden und die Daten könnten stattdessen per WLAN Verbindung über den Mikrokontroller ESP32 versendet werden.

Sie erfasst die folgenden Wetterdaten und sendet diese zyklisch per UDP-Broadcast über den Port 8888 in das lokale Netzwerk. Auch hier wäre der Versand per MQTT an einen Broker denkbar.

Wetterdaten:
  • Aktuelle Windgeschwindigkeit
  • Aktuelle Windrichtung (0 – 360 °)
  • Windrichtungswert als Windrichtungsindex
  • Aktuelle Außen- und Modultemperatur
  • Aktuelle Daten vom Kapazitiven Regensensor
  • Aktuellen LUX Wert, RAW Index und den Weiß Wert.
  • Regen Bit der Regenerkennung
  • Dämmerungsbit der Dämmerungserkennung
  • Windmax Bit der Windmax. Erkennung

Hardwareaufbau

Die Platine der Wetterstation hat eine Abmessung von 80 x 120 mm.
Sie besitzt Schraubklemmen zum Verbinden der Eingangssignale und eine RJ45 Buchse zum Anschluss der Netzwerkverbindung über Ethernet, unten rechts im Bild.

IoT-Wetterstation Platine
IoT-Wetterstation Lux- und Kapazitiver Regensensor

Die Platine der verfügt über folgende Anschlüsse:

  • Einen Programmieranschluss für Firmware Updates
  • Einen RJ45 Netzwerkanschluss
  • Schraubanschlüsse für die Sensoren

Die ersten beiden Klemmanschlüsse dienen dem Anschluss der Versorgungsspannung, diese kann in einem Bereich von 7 – 27 V= liegen.

Der nächste Anschluss wurde für einen potentialfreien Eingangskontakt vorgesehen, an den z.B. ein Regenmengenmesser mit Read Kontakt angeschlossen werden könnte (optional).

Der nächste Klemmenblock stellen zwei stabilisierte Ausgangsspannung 3.3V und 5.0 V zur Verfügung. Hiermit können Beispielsweise externe Sensoren mit Spannung versorgt werden. Die nächsten beiden Klemmen GND und 1-Wire dienen zum Anschluss von externen 1-Wire Sensoren. In diesem Projekt wird hierrüber Außentemperatur mit einem 1-Wire Sensors vom Typ DS18B20 gemessen.

Die Letzten Klemmen sind Anschlussklemmen für zwei analogen Eingangskanäle. Diese könne je nach Bedarf wahlweise 0 – 10 V oder 0 – 20 mA Eingangssignale verarbeiten.

Am ersten Analogeingang U-in1 und GND kann z.B. der Sensor zur Messung der Windgeschwindigkeit und am zweiten Analogeingang U-in2 und GND der Sensor für die Windrichtung angeschlossen werden.

Eine Kalibration der Messbereiche für die beiden Analogeneingänge U-in / I-in, erfolgt für jeden Kanal getrennt, mit je zwei Spindelpotentiometer.

Hierbei wird zuerst der Spannungseingang abgeglichen und das entsprechende Spindelpotentiometer zunächst gegen den Uhrzeiger auf seine linke Endposition gestellt.

Nach dem Anlegen einer Spannung von 10.0 V wird das Spindelpotentiometer solange verstellt, bis am entsprechenden Ausgangspin, Kanal 1 = Pin1 und Kanal 2 = Pin 7, des LM358 eine Ausgangsspannung von 3.0 V gemessen wird.

Anschließend wird der Spannungseingang getrennt und derselbe Vorgang mit dem Stromeingang durchgeführt. So können beide Eingangskanäle auf ihren Endbereich kalibriert werden.

Kanal 1:

  1. I – Abgleich 3.0V = 20 mA, CH1 Pin1 am LM358M
  2. U – Abgleich 3.0V = 10 V, CH1 Pin1 am LM358M

Kanal 2:

  1. I – Abgleich 3.0V = 20 mA, CH2 Pin 7 am LM358M
  2. U – Abgleich 3.0V = 10 V, CH2 Pin 7 am LM358M

Alle Eingänge der Wetterstation sind gegen ESD geschützt, Die beiden Analogeingänge haben zusätzlich noch einen Verpolungsschutz und eine Einganswert Limitierung um bei einem zu hohen Spannungs- bzw. Stromwerts am Eingang den Mikrokontroller nicht zu zerstören.

Der Regensensor basiert auf einer Kapazitätsmessung.

Siehe hierzu:
Kapazitiver Regensensor mit einem ESP8266 / Arduino

Die ermittelte Kapazität wird über einen NE555 in ein digitales Frequenzsignal gewandelt und an den Mikrokontroller weitergeleitet, der dann die Berechnung und Auswertung übernimmt.

Es sind zwei Temperaturmessung vorhanden, die über den 1-Wire Bus erfasst und ausgewertet werden. Als Sensoren werden DS18B20 eingesetzt, der erste befindet sich direkt auf der Platine als TO-3 und dient zur Ermittlung der Gehäuseinnentemperatur, der zweite Sensor ist ein Wasserdichter Edelstahlsensor der in drei Leiter Technik über die Klemmen des 1-Wire Eingangs angeschlossen ist und die Außentemperatur misst.

Zur Erfassung des LUX, RAW und Weißwerts wurde eine VEML7700 des Hersteller Vishay verbaut. Dieser ist über eine I2C Schnittstelle an den Mikrokontroller angebunden und kann mit einer entsprechenden Parametrierung Lux Werte bis zu 150 Klx genau messen.

Das Herzstück der Schaltung ist ein ESP32 Mikrokontroller mit 4 MB Flashspeicher der Firma Espressif. Dieser Kontroller verfügt über ein WLAN und Bluetooth Radio, das jedoch in diesem Projekt nicht zum Einsatz kommt, da der Datenaustausch über Ethernet erfolgt.

Als Schnittstelle zum Ethernet ist ein USR-ES01 Modul mit W5500 Chipsatz vorhanden, die Anbindung an den Mikrokontroller erfolgt per SPI-Bus.

Die Spannungsversorgung für die Wetterstation könnte z.B. auch direkt über das Netzwerkkabel, per Power Over Ethernet kurz PoE erfolgen. Hierfür könnte ein PoE-Splitter, der eine stabilisierte Gleichspannung von 12V aus dem Signalkabel ausschleust, in das Gehäuse der Wetterstation eingebracht werden. Auf diese Weise könnte dann auch die Spannungsversorgung für den Wind- und Windrichtungssensor erfolgen.

Firmware Update

Um ein neues Firmware Update in den ESP32 Mikrokontroller zu laden, verfügt die Platine über einen zweireihigen, acht poligen Steckverbinder, an den der passende USB-Programmieradapter angesteckt werden kann, um eine neue Firmware in den Mikrokontroller der Wetterstation zu übertragen.

Bei einer Verbindung per WLAN, könnte ein Update aber auch per OTA (Over the air) erfolgen. Diese Option seht leider bei einer Anbindung per Ethernet nicht zur Verfügung.

Der USB-Programmieradapter muss dabei so aufgesteckt werden, dass er von der Grundplatine weg zeigt. Ein Vertauschen oder falsches aufstecken führt zur sofortigen Zerstörung der Wetterstation!

Das Herunterladen einer neuen Firmware darf deshalb nur von einer entsprechend eingewiesenen Person oder einem Fachmann durchgeführt werden!

Für den Programmiervorgang muss die Spannungsversorgung zur Wetterstation unterbrochen sein und die Netzwerkverbindung getrennt werden! Des Weiteren kann es beim Flashvorgang zu Problemen kommen, wenn an den analogen Eingangskanälen noch Sensoren angeklemmt sind. Deshalb wird auch hier empfohlen dies vor dem Flashvorgang zu entfernen!

Pressure Sensor

Technische Beschreibung Pressure Sensor
Technische Beschreibung Pressure Sensor
Technische-Beschreibung-Pressure-Sensor.pdf
1.4 MiB
57 Downloads
Details

Key Features:

  • Weiter Eingangsspannungsbereich von 8 – 27V
  • Konfiguration aller Modulparameter direkt am Pressure Sensor Modul möglich
  • OLED-Display für die Anzeige der Messwerte und der Menüfunktionen
  • Bedienung über einen Drehwahlschalter oder einen Taster
  • Drei konfigurierbare potentialfreie Ausgangskontakte für das Über- und Unterschreiten einer einstellbaren Druckschwelle, sowie eines Sensorfehlers
  • Für jedes Relais kann die Ruhelage NO (normally open) oder NC (normally closed) separat festgelegt werden
  • Werte- und Fehleranzeige im Sensor Sensordisplay
  • Werte- und Fehleranzeige über die Blynk App und ein Web Interface zugänglich
  • Messwerte- und Statusmeldungen im Textformat über integrierte Micro USB-Schnittstelle (seriell Port)
  • Vielseitige auch für beliebige andere Druckmessaufgabe eingesetzt Messung
  • Zwei verschiedene Messmethoden, Messung des absoluten oder des relativen Drucks
  • Manuelle und automatische Kalibrierung bei der relativen Druckmessung
  • Spezielle Funktion für Druckschlauchmessungen, automatischen Differenzdruckabgleich
  • Teilbares System, dass aus einem wechselbaren Drucksensor, dem eigentlichen Auswertemodul
  • Menügeführte kundenspezifisch Sensoranpassung.
  • Aktualisierung der Firmware mittels OTA

Allgemeines

Die hier beschriebene Druckmessung entstand aus dem Projekt Timekeeper, dass auf Anfrage für eine Zeitmessung zu Trainingszwecke für eine Gleichmäßigkeitsprüfung durchgeführt wurde.
Als der Timekeeper beim Auftraggeber im Einsatz war, stellte sich heraus, dass das justieren der Lichtschranken gerade bei Sonnenschein eine mühselige Unterfangen darstellt.

Außerdem hängt die Genauigkeit der Erfassung hierbei auch immer von der Justierung der Lichtschranken ab. Da je nach Höhe und Winkel der Start- und Ziellichtschranke, diese bei verschieden Fahrzeugen unterschiedlich ausgelöst werden können. Diese Fehler bewegen sich zwar meist nur in Millisekunden Bereichen, können aber durchaus die Wertungsergebnisse beeinflussen.

So wurde die Idee geboren, einen alternative Messmethode zu testen. Es sollte eine Druckschlauchmessung aufgebaut werden, die quer über die Fahrbahn gelegt werden kann, umso eine Messmethode zu erhalten, die direkt an den Rädern des Fahrzeugs misst. Also Unabhängig von der Form und Bauart der Karosserie.

Es wurde ein PVC-Schlauch, der an einem Ende geschlossen war, an eine Handelsübliche Druckmessung angeschlossen und der Potentialfreie Ausgangskontakt mit dem entsprechenden Initiator Eingang des Timekeeper Moduls verbunden.

Die ersten Tests lieferten bereits sehr viel versprechend Ergebnisse und bewiesen, dass der grundsätzliche Testaufbau funktionierte.

Nach dem die ersten Erfahrungen mit verschiedene Schlauchmaterialien, Druckaufnehmer und den in der Praxis auftretenden Störeinflüssen gesammelt wurden. War schnell klar, dass eine handelsübliche Druckmessung die Anforderungen an diese Aufgabe nur bedingt erfüllen kann.

Der Nachteil eines solchen Messverfahrens ist eine vergleichsweise ungenaue Messung, da die Kunststoffschläuche ein gewisses Eigenleben haben, das zum Beispiel zu temperaturabhängigen Kriecheffekten und Offsetproblemen führt.

Es musste also eine speziell auf diese Art der Anwendung zuggeschnittene Lösung entwickelt werden.

Spezielle Funktion für die Schlauchdruckmessung

Das Hauptproblem stellt nicht die Messung an sich dar, sondern die Umgebungsbedingungen. Den der Druck im inneren des Schlauches ist natürlich in erster Linie abhängig von der Umgebungstemperatur.

Stellen wir uns folgendes vor, der Messaufbau wird am frühen Morgen installiert und getestet. Die Auslöseschwelle beim Überfahren des Schlauchs wird auf ein optimales Auslöseverhalten für die Art und Länge des Schlauchs programmiert.

Der Tag beginnt mit einem relativ kühlen Vormittag, entwickelt sich aber gegen die Mittagszeit zu einem sehr sonnigen Tag.
Am Nachmittag entstehen am Himmel größere vorbeiziehende Wolkenfelder.

So könnte ein normaler Sommer Tag aussehen … was passiert aber nun mit dem Druck im Sensorschlauch?

In der Früh wurde die Messung kalibriert und optimal eingestellt.
Am Vormittag steigt der Druck im Schlauchsensor jedoch stetig an. Im Extremfall sogar bis über die programmierte Auslöseschwelle.

Am Nachmittag wechselt der Druck im Schlauch im Verhältnis der vorbeiziehenden Wolkenfelder hin und her.
All dies hat Einfluss auf das Auslöseverhalten und die Genauigkeit der Messung und kann sogar zu Fehlauslösungen führen.

Genau für diesen Anwendungsfall wurde eine spezielle Zusatzfunktion in diese Druckmessung integriert.

Diese überwacht ständig den Druck im Sensorschlauch, steigt bzw. fällt der Druck (Delta P) über- oder unter einen programmierbaren Schwellwert und bleibt für eine definierbare Zeit (t) außerhalb der definierten Grenze, wird eine (AC) automatische Nullpunkt Kalibration des Relativdruckwertes durchgeführt.

Aufgabenstellung:

Es sollte eine Druckmessung mit einem weiten Eingangsspannungsbereich von 8 – 27V entwickelt werden.
Damit ein Betrieb mit einem Bleiakku (12V KFZ-Batterie), einem externen Netzteil oder eine direkte Versorgung aus dem Timekeeper Modul möglich ist. Dieser wird üblicherweise mit 24V gespeist.

Die Konfiguration der Modulparameter sollte direkt am Pressure Sensor Modul möglich sein. Für die Anzeige sollte ein kleines OLED-Display für die Anzeige der Messwerte und der Menüfunktionen vorhanden sein. Die Bedienung erfolgt dabei über einen Drehwahlschalter bzw. alternativ über einen Taster, der die Navigation und Auswahl der Menü Punkte erlaubt.

Das Modul sollte über drei konfigurierbare, potentialfreie Ausgangskontakte verfügen. Welche das Über- und Unterschreiten einer einstellbaren Druckschwelle, sowie einen Sensorfehler ausgeben können. Für jedes dieser drei Relais kann die Ruhelage NO (normally open) oder NC (normally closed) separat festgelegt werden.

Optional zur Werte- und Fehleranzeige am Sensor Modul, sollten diese Informationen auch über die Blynk App und ein Web Interface zugänglich sein.

Über die integrierte Micro USB-Schnittstelle sollen nach Aktivierung dieser Funktion im Menu, die Messwerte sowie die Statusmeldungen im Textformat ausgegeben werden. Damit diese für eine externe Weiterverarbeitung genutzt werden können.

Bei der Entwicklung der Messung sollte Wert daraufgelegt werden, dass diese sehr vielseitig, auch für beliebige andere Druckmessaufgabe eingesetzt werden kann.
Es sollen zwei verschiedene Messarten möglich sein, Messung des Absoluten Drucks sowie die Messung des Relativen Drucks.

Die Messung des Relativen Drucks sollte auch manuell Kalibriert werden können.

Für den Einsatz in Verbindung mit einer Druckschlauchmessung, muss eine spezielle Funktion implementiert werden, die bei Bedarf einen automatischen Differenzdruckabgleich durchführen kann. Dieser soll immer dann durchgeführt werden, wenn der Druck einen definierbaren Schwellwert (P) für eine definierbare Zeit (t) über- bzw. unterschreitet.

Das Pressure Sensor Modul sollte ein Teilbares System werden, das aus einem wechselbaren Drucksensor, dem eigentlichen Auswertemodul und einem schnell wechselbaren Schlauchsystem besteht.

Auf diese Weis ist es leicht möglich das Sensorsystem je nach Anforderung kundenspezifisch anzupassen.

In einem weiterer Entwicklungsschritt, soll die Firmware um eine eigenständige Zeitnahme Funktionalität erweitert werden.
Die Zeitmessung beginnt mit dem ersten Überfahren des Schlauchsensors und endet mit dem zweiten Überfahren.
Damit die Zeitmessung nicht sofort nach dem Überfahren mir den Hinterreifen wieder beendet wird, soll eine Verzögerungszeit zwischen der Start- und Endzeiterfassung eingegeben werden können, um dies zu verhindern.

Der Drucksensor:

Der verwendete Drucksensor ist ein analog arbeitender Sensor.
Er besitzt ein robustes Edelstahlgehäuse in dem sich ein präziser Druckkeramiksensor befindet. Die Vorverarbeitung des Messwerts übernimmt ein integrierter Mikrocontroller.
Der Sensor besitzt eine lange Lebensdauer bei einer geringen Langzeitdrift.

Die Verbindung zur Auswerteelektronik wird über eine dreipolige wasserdichte PACK-Steckverbindung hergestellt.
Die Versorgungsspannung des Sensors beträgt 5V ± 0,25V
Die Sensoren gibt es mit verschiedenen Druchmessbereichen, die jeweils im Menü des Pressure Sensors ausgewählt werden können.

Sensortypen: 5 psi, 15 psi, 30 psi, 60 psi, 100 psi, 150 psi, 200 psi

Technische Daten der Drucksensoren
Technische Daten der Drucksensoren
Technische-Daten-Drucksensoren.pdf
142.0 KiB
40 Downloads
Details

Der Analogausgang arbeitet in einem Spannungsbereich von 0,5V – 4,5V linear zum Skalendruck. Der Zerstörungsdruck liegt beim 3-fachen Skalendruck.
Da der Sensorwert über ein Analogsignal im Bereich von 0,5V – 4,5V übertragen wird, ist es leicht möglich, beim einem Über- bzw. Unterschreiten dieser Werte, eine Drahtbruch bzw. Kurzschluss Auswertung vorzunehmen.

Farbcode der Sensoranschlussdrähte:

  • Analogausgang 0,5-4,5V                   Grün
  • +5V (VDD)                                                 Schwarz
  • Masse (GND)                                            Rot

Anschlussbelegung Hardware

Anschlussbelegung V1.00

REL. MIN      Potentialfreier Kontakt für eine min. Druck
REL. MAX    Potentialfreier Kontakt für eine max. Druck
REL. ERR      Potentialfreier Kontakt für eine Sensorstörung
SENS.             Sensor analog Eingang max. 0-5V
GND               Ground (Minus)
+5V                 Spannungsversorgung 5V Sensor
+3,3V             Spannungsversorgung 3,3V Sensor
+8-27V-       Spannungsversorgung Pressure Sensor Modul

Versionsverlauf:

Intended:

  • Integration einer direkten Zeitmessung mit Blynk APP und Web-Interface

Released:

  • 03.05.2021: Version X.01 (für alle Hardware Versionen)
    – Ergebnisliste im Webserver
    – Ergebnistabelle im Webserver als CSV exportierbar
    – Anzeige der Ergebnisse in der Blynk App.
    – Konfiguration verschiedener Drucksensoren von 5 psi – 200 psi
    PressureSensor V101
    PressureSensor V101
    PressureSensor_V101.png
    Version: 1.01
    2.9 KiB
    57 Downloads
    Details
  • 15.12.2020: Version 1.00
    – Druckmessung relativ / absolut
    – Autocalibration
    – Sensorfehlererkennung Relaisausgang NC/NO
    – Seriale Ausgabe der Werte über USB,
    – Min/Max Wert Relaisausgänge NC/NO
    – Webbrowser Darstellung
    – Blynk Applikation
PressureSensor V1.00
PressureSensor V1.00
PressureSensor_V100.png
Version: 1.00
10.7 KiB
50 Downloads
Details

Kapazitiver Regensensor Funktionsweise

Zum Blogbeitrag MQTT-Regensensor Modul

Allgemeines:

Im Internet wird eine Vielzahl von verschiedenen Regensensoren angeboten. Die meisten davon kommen aus Fernost und arbeiten nach dem Resistance Prinzip.

Trifft ein Regentropfen auf die nicht isolierten Kontakte des Sensors, werden die nebeneinanderliegenden kammförmigen Kontakte durch den Regen verbunden, was letztendlich zu einer Reduzierung des Sensorwiderstandes führt.

Diese Widerstandsänderung ist abhängig vom Verschmutzungsgrad des Regenwassers, sowie der bereits eingetretenen Oxidation des Regensensors.

Über eine Komparator Schaltung kann hierbei meist der Schaltpegel eingestellt werden, bei dem Regen detektiert wird und der dann ein digitales Ausgangssignal setzt.

Manche Sensoren stellen zusätzlich zu diesem Digitalausgang noch ein Analogsignal zur Verfügung, was eine Lösung für eine zeitweilige Kalibrierung des Sensors durch die Software erlauben würde.

Das große Problem bei dieser Messmethode ist es, dass selbst bei Sensoren mit vergoldeten Kontaktoberflächen immer parasitäre Ströme fließen.

Da praktisch immer ein kleiner Gleichstrom an beiden Polen des Sensors anliegt, führt dies unabhängig von der Qualität des Sensors zu einem elektrochemischen Prozess und damit über kurz oder lang zu einer schrittweisen Zerstörung des Sensors.

Eine bessere Lösung stellt dieser Sensor dar, da er auf einem anderen Prinzip, dem kapazitiven Prinzip beruht.

Das Funktionsprinzip bei einem kapazitiven Sensor ist dem oben vorgestellten Messverfahren durchaus ähnlich. Es unterscheitet sich jedoch in einem wesentlichen Punkt, bei Regen wird hier keine leitende Verbindung hergestellt. Durch die Wassertropfen auf der Oberfläche wird lediglich die Kapazität des Sensors verändert, das Wasser wirkt als Dielektrikum.

Der Vorteil bei diesem Lösungsansatz liegt darin, dass keine blanken Leiterbahnoberflächen der Witterung ausgesetzt sind und dadurch auch kein elektrochemischer Prozess ausgelöst wird, der den Sensor auf Dauer irreversibel beschädigt. Alle leitenden Teile sind durch eine Lackschutzschicht vor Witterungseinflüssen geschützt.

Die Kapazität des Sensors beträgt im trockenen Zustand ca. 170pF. Tritt eine Betauung ein oder trifft Regen auf den Sensor, steigt die Kapazität an. Durch das ermittelte Delta C, lässt sich sogar eine Aussage über die Art des Regens und dessen Intensität treffen. Ist es Neblig oder es handelt sich um einen feinen Nieselregen, der die Sensoroberfläche benetzt, bilden sich viele kleine Wasser Tröpfchen auf dem Sensor, was wiederrum zu einem großen Delta C führt.
Bei einem Durchschnittlichen Regen Ereignis sind es vorwiegend größere Tropfen, die zu einem großen Teil sofort wieder abrutschen, so ergibt sich ein kleineres Delta C.

Um schnell festzustellen zu können, ob der Regen zu Ende ist, besitzt der Sensor eine Heizung an der Platinen Unterseite. Diese besteht aus zwanzig 15 Ohm Heizwiderstände, die es bei einer Versorgungsspannung von 5V immerhin auf eine Heizleistung von knapp 1,8 W bringen.
Sie sorgen für eine zügiges verdunsten der Flüssigkeit bzw. einer Eisbildung auf der Sensoroberfläche.

Durch die sehr kleine Bauform des Sensors, kann selbst mit dieser relativ geringen  Leistung ein schnelles (ca. 5 Minütiges) Abtrocknen sichergestellt werden.
Energetisch gesehen ist es sinnvoll, die Sensorheizung nur für die Dauer einer Regenerkennung zu betreiben. Das bedeutet, wird keine Feuchtigkeit oder Regen mehr detektiert, soll die Sensorheizung abgeschaltet werden!
Hierfür ist ein Transistor auf der Sensorplatine vorgesehen.
Wird hier ein Mosfet bestückt und ist der Pin in dieser Hardware Version 1.00 für dessen Ansteuerung nicht angeschlossen, muss dieser auf Masse gelegt werden.
Da der Mosfet bei einem offenem Gate in einem Halbleitenden Zustand gehen könnte, was zur einer Zerstörung des Bauteils führen würde.

Bestückung der Platinen Unterseite

Diese Bild zeigt die Bestückung der Unterseite des Sensors. Es ist gut zu erkennen, das im Layout zwar Pats für eine Befestigung der Sensorplatine vorgesehen sind, diese jedoch keine Bohrung besitzen. Weshalb hier auch kurz auf die Befestigung des Sensors eingegangen werden soll.

Wie zu sehen ist befinden sich die Anschlüsse annähernd mittig auf der Sensorplatine.

Verwandt man z.B. eine feste wasserdichte Hensel Anschlussdose um die Elektronik darin zu verstauen, genügt es in den Deckel ein passendes rundes Loch zu bohren, damit die Anschlüsse nach innen geleitet werden können. Der Regensensor selbst wird am besten mit Silikon wasserdicht mit dem Deckel verklebt.
Sollten dennoch Befestigungslöcher benötigt werden, so können diese nachträglich ausgebohrt werden.

Es bietet sich an die Platine für die Auswertung mit dem entsprechenden Gegenstück auszustatten, so dass diese von der Innenseite aufgesteckt werden kann.

Die Befestigung dieser Platine kann mit Distanzbolzen, die am Deckel eingeschraubt werden, erfolgen. Werden die Schrauben nicht vom Sensor (mit Silikon) überdeckt, sollte hier auf Edelstahlschrauben zurückgegriffen werden.

Im Unteren Bild ist der Schaltplan der Sensorplatine zu sehen.
Bei der Steckverbindung wurde wert daraufgelegt, dass die Signale für alle möglichen Anschlussvarianten an den Pins herausgeführt wurden.

Somit stehen dem Endanwender auch alle möglichen Messverfahren zur Verfügung, die zur Kapazitätsmessung angewandt werden können.

Schaltplan Kapazitiver Regensensor V1.00

Pin Belegung:

  1.  VDD +5V / 3,3V
  2. NC
  3. Sensorheizung
  4. Ladewiderstand
  5. Analog wert (Ladezustand)
  6. Entladewiderstand
  7. GND
  8. GND

Kapazitätsmessung durch Laden- und Samplen der Kondensatorspannung

Die Platine des kapazitiven Regensensors wurde für verschieden Anwendungsbereiche entwickelt, deshalb gibt es auch verschieden Bestückungsvarianten.

Wenn man z.B. einen PIC Mikrokontroller mit einem Komperatoreingang verwnden, kann eine Messmethode angewendet werden, bei die Kapazität des Sensor über den Pin 6, R23 entladen wird (Pin auf LOW) und der Pin anschließend wieder als Komperator Eingang umgeschaltet wird.
Der Pin 4, der zu diesem Zeipunkt im Tristate (hochohmig) war, wird nun als Ausgang programmiert und auf LOW geschaltet. Dieser läd nun die die Kapazität des Regensensors über R22 auf, bis der Komperatoreingang kippt.
Die ermittelte Zeit dient dann als Grundlage für die Kapazitätsbestimmung.
Beim MQTT-Regensensormodul wird ein anderes Messvervahren angewannt, da dieser nicht über einen Komperatoreingang verfügt.

Hier wird der AOUT (der gegen GND direkt die Kapazität des Sensors dartellt) als Kapazität eines Multivibrators genutzt, der abhängig von dieser Kapazität seine Ausgangsfrequenz ändert. Diese Ausgangsfrequenz wird an einem digitalen Eingang des ESP8266 gemessen und die Sensorkapazität aus der Frequenz berrechnet.

Da für dieses Messverfahren der C1, R22 und R23 nicht benötigt werden, müssen diese Bauteile bei diesem Messverfahren nicht mit bestückt werden.

Das obengenannte Messverfahren, dass sich jedoch nur für größere Kapazitäten im Bereich zwischen 10 nF und 2000 uF eigent, beschreibt der folgende Source Code von von Matthias Busse

Quellenverweis :
Kapazitäten von 10nF bis 2000uF einfach messen mit dem Arduino

// Kapazität Messgerät 10nF bis 2000uF
//
// Matthias Busse 22.2.2015 Version 1.1

#define messPin 0            // Analog Messeingang
#define ladePin 13           // Kondensator lade Pin über einen 10kOhm Widerstand
#define entladePin 11        // Kondensator entlade Pin über einen 220 Ohm Widerstand 
#define widerstand  9953.0F  // 10 kOhm > gemessen 9,953 kOhm

unsigned long startZeit;
unsigned long vergangeneZeit;
float microFarad;
float nanoFarad;

void setup() {
  pinMode(ladePin, OUTPUT);     // ladePin als Ausgang
  digitalWrite(ladePin, LOW);  
  Serial.begin(9600);           // Serielle Ausgabe
  Serial.println("Kapazitaetsmesser Version 1.1");
}

void loop() {
  // Kondensator laden
  digitalWrite(ladePin, HIGH);            // ladePin auf 5V, das Laden beginnt
  startZeit = micros();                   // Startzeit merken
  while(analogRead(messPin) < 648){}      // 647 ist 63.2% von 1023 (5V) 
  vergangeneZeit= micros() - startZeit - 114; // 0-Messung abziehen (112-116 us)
  if(vergangeneZeit > 4294960000) vergangeneZeit = 0; // Minuswerte auf 0 setzen (ist long deshalb der hohe Wert)
 // Umrechnung: us zu Sekunden ( 10^-6 ) und Farad zu mikroFarad ( 10^6 ),  netto 1  
  microFarad = ((float)vergangeneZeit / widerstand);   
  Serial.print(vergangeneZeit);           // Zeit ausgeben
  Serial.print(" nS    ");         

  if (microFarad > 1){
    if(microFarad < 100) {
      Serial.print(microFarad,2);         // uF.x ausgeben
      Serial.println(" uF     ");
    }
    else {
      Serial.print((long)microFarad);     // uF ausgeben
      Serial.println(" uF     ");
    }
  }
  else {
    nanoFarad = microFarad * 1000.0;     // in nF umrechnen
    if(nanoFarad > 10) {
      Serial.print((long)nanoFarad);     // nF ausgeben
      Serial.println(" nF     ");
      }
    else
      Serial.println("kleiner 10 nF");  
  }

  /* Kondensator entladen */
  digitalWrite(ladePin, LOW);             // ladePin auf 0V 
  pinMode(entladePin, OUTPUT);            // entladePin wird Ausgang 
  digitalWrite(entladePin, LOW);          // entladePin auf 0V 
  while(analogRead(messPin) > 0){}        // bis der Kondensator entladen ist (0V)
  pinMode(entladePin, INPUT);             // entladePin wird Eingang
  
  while((micros() - startZeit) < 500000){}   // bis 500ms warten, d.h. max 2 Ausgaben pro Sekunde
}

Kapazitätsmessung sehr kleiner Kapazitäten

Da bei sehr kleien Kapazitäten die Ladezeit des Kondensators ebenfalls sehr klein wird, müsste beim oben vorgestellten Messverfahren der Ladewiederstand im Verhältnis hierzu entsprechend vergrößert werden, um mit der Samplingrate des AD-Wandlers im Mikrokontroller immer noch ein akzeptables Messergebnis erzielen zu können.

Das Problem bei einem sehr großen Ladekondensator liegt darin, dass natürlich auch der analoge Eingang des Mikrokontrollers den Kondensator belastet und entläd. Der Messfehler wird also umso größer, je größer der Ladewiderstand wird, bis das System am Ende kippt und der Ladewiderstand die benötigte Ladung nicht mehr liefern kann.

Da sich die Kapazität des Regensensors in einem Bereich von 170pF – max. 400 pF bewegt, wird hier für auf eine anderes Messverfahren zurückgegriffen werden.

Das Frequenzmessverfahren

Bei diesem Messverfahren wird keine ADC benötigt, es kommt mit einem Digitaleingang des Mikrokontrollers aus.
Hierfür kommt der hochgenaue Langzeittimer NE555 zum Einsatz.
Dieser Timer seht sowohl in einer 5V Variante als NE555, als auch für Mikrokontroller die nicht 5V tolerant in einer 3V Variante ICM7555 zur Verfügung.

Arbeitet der Mikrokontroller mit 3,3,V und stehen nur ein NE555 zur Verfügung, kann natürlich auch ein Spannungsteiler am Ausgang den Levelshift übernehmen.

Der NE555 wird in dieser Schaltung als Multivibrator eingesetzt, der abhängig von angeschlossenen Kondensator seine Ausgangsfrequenz verändert.

Wenn am Ausgang gleiche Ein- und Ausschaltzeiten erzeugt werden sollen, muss die Standardschaltung (siehe oben) mit einer Diode parallel zum Widerstand R2 aufgebaut werden. Andernfalls kann diese Diode einfach entfallen. In der obigen Bauteilauslegung ist das Tastverhältnis annähernd 1:1 was auch hier die Diode unnötig macht.
Im Programm des Regensensors werden beide Varianten berücksichtigt. Da sowohl die Zeitdauer der negativen als auch der positive Halbwelle gemessen und anschließend addiert werden. Und damit die ganze Periodendauer berechnet wird.

Für die Messung wird vom Regensensor nur der Pin 5 (Analogwert) und Pin 7 (GND) benötigt.
Soll die Heizung genutzt werden kommen noch der Pin 1 (VDD) und Pin 3 (Sensorheizung aktivieren) hinzu.

Die Ein- Zeit berechnet sich wie folgt:
T1= 0,694 * (R1 + R2) * C

Die Aus- Zeit berechnet sich wie folgt:
T2= 0,694 * R2 * C

Die gesamte Periodendauer ist die Summe aus T1 +T2
T = 0,694 * C * (R1 +(2 * R2))
f = 1 / T

Die Frequenz ist 1 / T1 + T2, damit ergibt sich die Ausgangsfrequenz nach folgender Formel:
f = 1 / (0,694 * C * (R1 +2 * R2))

Da bei dieser Anwendung für uns nicht wichtig ist, welche Kapazität der Sensor hat, kann bereits die gemessene Frequenz für eine Regenauswertung verwendet werden.

Der Vollständigkeit halber hier trotzdem noch die kurz die nach C umgestellte Formel:
C =1 / ( f * 0,694 * (R1 + 2 * R2))

Programaufbau für die Kapazitätsmessung des Regensensors

/* Capacitivemeasurement (c) by Dillinger-Engineering 10/2020

   Funktionsweise:
   Um die kleinen Kapazitätsveränderungen des Regensensors (pF-Bereich)
   mit einer hohen Genauigkeit zu messen, wird hier ein NE555/3V verwendet.
   Dieser arbeitet als Multivibrator mit einer Frequenz im KHz Bereich.
   Ändert sich die Messkapazität, ändert (sinkt) auch die
   Frequenz. Je nach Auslegeung der Schaltung kann über die
   Frequenzänderung dann die entsprechende Kapazität errechent werden. 
   Je gröer der Parameter "MeasuringCycleleTime" gewählt wird,
   um so genauer wird auch die Messung. Zu beachten ist dabei jedoch,
   dass sich, sollte ein Sensor Fehler (kein Signal vom Eingang) vorliegt, damit
   auch die Timeoutzeit entsprechnde verlängert !
*/

const byte InputPin = 5;                       // Wemos D1 mini (Pin D1)
const unsigned int MeasuringCycleleTime = 1e6; // 1000000 us
const long R1 = 10000;   //  10 KOhm
const long R2 = 100000;   // 100 KOhm


float GetFrequeny(){  // Ergebnis in Hz
  float fsum = 0.0;
  unsigned int counts = 0;
  double f, T;
  unsigned long SartTtime = micros();
  bool Fail = false;
  do {
    T = pulseIn(InputPin, HIGH, MeasuringCycleleTime) + pulseIn(InputPin, LOW, MeasuringCycleleTime);
    if(T==0){
      Fail = true;
    }
    f=1/T;      
    counts++;    
    fsum += f * 1e6;
  } while(micros() < (SartTtime + MeasuringCycleleTime) && !Fail); // 1 Sekunde mitteln
  if(Fail){
    return(0);
  }else{
    f = fsum / counts * 0.9925;    //Korrekturwert ermitteln und einrechnen
    return(f);
  }
}

float GetCapacity(){  // Ergebnis in pF
  return(1/(GetFrequeny() * 0.694 * (R1 + 2 * R2))* 1e12);
}

void setup() {
  pinMode(InputPin, INPUT);
  Serial.begin(115200);
}

void loop() {
  char CharStr[30];
  
  // Show Data on Serial if available
  sprintf(CharStr,"Capacity: %.3f pf", GetCapacity()); 
  Serial.println(String(CharStr));
  sprintf(CharStr,"Frequenz: %.3f Hz", GetFrequeny()); 
  Serial.println(String(CharStr));
}

 

Einen lokalen Blynkserver beim Booten der Raspberry PI Starten

In diesem Beitrag wird am Beispiel eines lokalen Blynk Servers gezeigt, wie auf einer Raspberry PI eine Java File beim Starten und Herunterfahren der PI automatisch gestartet und heruntergefahren werden kann.

  1. Zuerst wird ein Startscript und ein Stopscript erstellt, die später die Applikation mir Rootrechten startet und stoppt. Hier für wechseln wir mit sudo bash unsere Benutzerrechte auf Root.In unserem Beispiel speichern wir die Scripte im Verzeichnis /usr/local/bin/…
  • Start Script: /usr/local/bin/startBlynk.sh
  • Stop Script: /usr/local/bin/stoppBlynk.sh

Nach dem erstellen der Scripte müssen noch deren Attribute auf ausführbar gesetzt werden. Dies geschieht mit dem Befehl chmod +x NAME

Zu Starten des BlynkServers kann der Inhalt des Scripts startBlynk.sh im einfachsten Fall so aussehen:

#!/bin/bash
/usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt/bin/java -jar /home/pi/Blynk/server-0.39.10.jar -dataFolder /home/pi/Blynk &

Zu Stoppen des BlynkServers kann der Inhalt des Scripts stoppBlynk.sh im einfachsten Fall so aussehen:

#!/bin/bash
#sucht und beendet die Java Applikation
ps auxf |grep ’server-0.xx.x.jar ‚|`awk ‚{ print „kill “ $2 }’`

Als nächstes benötigen wir noch das folgendes Script (localBlynk) , wir speichere es in das Verzeichnis /etc/init.d/localBlynk

  • sudo nano /etc/init.d/localBlynk
  • Inhalt der Date:#! /bin/sh
    ### BEGIN INIT INFO
    # Provides:        localBlynk
    # Required-Start:
    # Required-Stop:
    # Default-Start:        2 3 4 5
    # Default-Stop:         0 1 6
    # Short-Description:    Stars & Stops BlynkServer
    # Description:          Stars & Stops BlynkServer
    ### END INIT INFO

 

# Start Stop Blynk local Blynk Server

case $1 in
start)
/bin/bash /usr/local/bin/startBlynk.sh
;;
stop)
/bin/bash /usr/local/bin/stopBlynk.sh
;;
restart)
/bin/bash /usr/local/bin/stopBlynk.sh
/bin/bash /usr/local/bin/startBlynk.sh
;;
esac
exit 0

  • Um das Script zum Systemstart hinzu zu fügen, führen wir nun noch  folgende Kommandos aus:cd /etc/init.d/
    sudo chmod 755 localBlynk
    sudo update-rc.d localBlynkdefaults

 

Einen eigenen lokalen Blynk Server auf dem Raspberry PI installieren

Logen Sie sich auf ihrer Raspberry z.B. per ssh ein.

Nun wird die aktuelle Java Version (Java 8) installiert :

sudo apt-get install oracle-java8-jdk

Stellen Sie sicher, dass nun die aktuelle Java Version installiert wurde.

java -version
Output: java version "1.8.0_40"

Download des Blynkserver jar Files in das „/home/pi/Blynk Verzeichnis.
Sollte das Verzeichnis noch nicht existiert muss es zuerst angelegt werden.

Alle folgenden „sudo“ Anweisungen kann man sich sparen, wenn man gleich in den „sudo bash“ wechselt, dies ist vergleichbar mit dem „su“ bei anderen Linux Distributionen.

pwd
/home/pi/
sudo mkdir Blynk
cd Blynk
sudo wget "https://github.com/blynkkk/blynk-server/releases/download/v0.39.10/server-0.39.10.jar"

Es ist auch möglich,  die Server Datei manuell via ssh oder scp herunter zuladen und in das entsprechende Verzeichnis hinein zu kopieren .

Um den Mailversand zu aktivieren, muss im Verzeichnis /home/pi/Blynk eine Datei mit dem Namen mail.properties angelegt werden.

Der Inhalt dieser Datei hat folgendes Format.

mail.smtp.auth=true
mail.smtp.starttls.enable=true
mail.smtp.host=smtp.gmail.com
mail.smtp.port=587
mail.smtp.username=Anmeldename
mail.smtp.password=Kennwort

Die aktuelle Blynk Server Version ist unter:
https://github.com/blynkkk/blynk-server/releases
zu finden.

  • Server mit den default Einstellungen starten (Hardware Port 9443 SSL)
    sudo java -jar server-0.39.10.jar -dataFolder /home/pi/Blynk        
    
  • Als Rückmeldung des Servers erscheint eine Meldung wie diese :
    Blynk Server successfully started.
    All server output is stored in current folder in 'logs/blynk.log' file.
    

Aktiviere automatischen Server Neustart

Um diese Option zu aktivieren, suchen Sie das Verzeichnis:
/etc/init.d/rc.local
öffnen sie die Datei mit dem vi Editor und fügen sie die folgende Zeile hinzu:

sudo vi rc.local
java -jar /home/pi/Blynk/server-0.39.10.jar -dataFolder /home/pi/Blynk &

Sollte dieser Ansatz nicht funktionieren, versuche Sie bitte folgendes:

sudo crontab -e

und fügen sie die folgenden Zeilen hinzu

    @reboot java -jar /home/pi/server-0.39.10.jar -dataFolder /home/pi/Blynk &

anschließend speichern und beenden.

Der Administrationsbereich kann anschließend bei laufendem Blynk Server mit folgender URL im Browser geöffnet werden.

https://your_ip|(127.0.0.1):9443/admin

Um den Blynkserver im Lokalen Netzwerk auch über das Internet erreichen zu können wird der Einsatz einer DynDNS Adresse empfohlen. Diese kann dann z.B. in einer Fritzbox hinterlegt werden, ändert sich die IP-Adresse der Fritzbox (alle 24 Stunden veranlaßt durch den Provider), wird automatisch die DynDNS Adresse informiert und der Server ist somit immer mit einem Pseudo Domain Name erreichbar.
In lokalen Router müssen außerdem noch ein paar Portfreigaben definiert werden. EIn Auszug der wichtigsten Einstellungen ist hier zu sehen.

 

Viele weitere Informationen zur Konfiguration der Blynk Servers.