Schlagwort-Archive: kalibrierung

Automatische Dosierung für den Pool (Teil 3: ph und Redox mit Arduino messen)

Zu einer automatischen Pool-Dosierung fehlten mir noch die Mess-Elektroden und vor allem das, womit ich sie auslesen und die Werte zu FHEM übertragen kann. In FHEM kann dann die ganze Dosierlogik stattfinden und die Dosierpumpen entsprechend geschaltet werden. Das Auslesen von feinen elektrischen Spannungen auf den ph-/Redox-Elektroden ist nicht trivial. Es gibt auf dem Markt kaum fertige Geräte mit Netzanbindung, um ph/ORP-Werte auszulesen. Ich habe mich daher für einen Eigenbau mit Arduino entschieden und in den Wintermonaten wochenlang dran geschraubt.

Arduino-Uno-Clones und passende Erweiterungsmodule dazu bekommt man bei Aliexpress für sehr kleines Geld. Es gibt im Angebot auch ein ph-Verstärker-Modul mit einer BNC-Buchse für ca. 16 USD inkl. Versand, was ich letztendlich auch genommen habe. In diesem Modul werden die paar Millivolt, die eine Sonde produziert, in eine am Arduino-Analogeingang messbare Spannung von 0 bis 5 Volt umgewandelt (Anschlusspin Po). In dem Modul ist vermutlich auch etwas für eine Temperatur-Bereinigung des ph-Wertes verbaut (Pins To und Do). Wie das genau funktioniert, konnte ich jedoch nicht rausfinden. Es gibt auch andere  ph-Module für Arduino, die etwas mehr kosten, z.B. von Atlas Scientific, von Phidgets oder von Dfrobot.  Alle haben ohne weitere Zusätze wahrscheinlich ein Problem: Die fehlende galvanische Trennung. Spätestens sobald man zwei Elektroden an einem Arduino anschließt und im gleichen Wasser hält, liefern sie beide Schrottwerte, da die Ströme zwischen den Elektroden fließen. (Wobei ein Blogger aus Frankreich mit Phidgets-Modulen das irgendwie geschafft hat, ph- und ORP-Elektrode an einem Arduino zu betreiben.)

Ein fertiges Verstärker-Modul mit galvanischer Trennung habe ich nicht gefunden. Es gibt ein-zwei Projekte im Internet, aber nichts lieferbares. Einen Messverstärker selbst zusammenzulöten, erschien mir zu aufwändig, zumal ich nur rudimentäre Kenntnisse der Elektronik habe. Deswegen habe ich die galvanische Trennung so hergestellt, dass ich pro Elektrode einen eigenen Arduino Uno nehme und diesen über einen eigenen linearen Stromwandler auf AMS1117-5.0 Basis und einen isolierenden DC-DC-Wandler mit Strom versorge (ich habe die Murata-Module NME0505SC mit 1 Watt genommen). Somit wird jeder Arduino Uno als Ganzes schon in der Stromversorgung galvanisch entkoppelt. Die Versorgungsspannung muss übrigens auch sehr stabil sein, da sonst die analogen Readings des Arduino, die die Versorgungsspannung als Referenz nehmen, driften. Deswegen ist jeweils ein eigener linearer Regler vorgeschaltet.

Die beiden Arduinos mit Verstärker-Modulen machen bei mir wenig anderes als die analogen Eingänge zu lesen, die Werte zu glätten und mit den eigenen sehr günstigen 433MHz-Radio-Modulen rauszufunken. So bleibt die galvanische Trennung intakt. Eine Temperatur-Kompensation habe ich gar nicht implementiert, denn diese ist im ph-Bereich um 7.0 eh kleiner als jede Messtoleranz. In den Mess-Arduinos habe ich auch die Kalibrierungslogik für die Elektroden einprogrammiert. Für den eigentlichen Kalibrierungsvorgang haben diese Module zwei Taster (für Kalibrierpunkte ph 7.0 und ph 4.0 – man kann natürlich beliebige andere Werte einprogrammieren) bzw. einen Taster (Kalibrierpunkt ORP 465 mV) bekommen. Somit ist die Kalibrierung super einfach: Die Elektrode in die Pufferlösung reinhalten, bis sich der Wert stabilisiert, und einmal drücken. Einen Redox-Verstärker habe ich übrigens mit einer kleinen Modifikation aus einem ph-Verstärker gemacht. Die ph-/ORP-Sonden liefern ja beide Millivolts, nur in etwas unterschiedlichen Ranges.

Ein dritter Arduino Uno empfängt bei mir dann auf 433MHz die ph- bzw. Redox-Werte von den beiden Mess-Arduinos. An der Nummer Drei werden drahtgebunden auch andere Sensoren angeschlossen: für Druck, Temperatur und Durchfluss. Mit einem Ethernet-Shield für Arduino wird hier auch ein minimalistischer Webserver aufgemacht und FHEM kann alle Werte ablesen. Für eine stabile Internet-Verbindung musste ich dem W5100-Chip auf dem Ethernet-Shield die Beine Nr. 64 und 65 durchschneiden. So läuft er fest auf 10 Mbit/Fullduplex und nicht im Auto-Modus, was zumindest mit meiner Fritzbox 7390 oft zu Aussetzern geführt hatte. An diesem dritten Arduino habe ich auch ein I2C 20×4-LCD-Display angeschlossen, wo die Werte permanent visialisiert werden.

Ein großes praktisches Problem schon beim Messen im Glas Wasser war das Rauschen. Vor allem die Schaltnetzteile induzieren Störungen auf die sensiblen Elektroden und hauptsächlich auf ihre Kabel. Die abgelesenen Werte zeigen im Ergebnis eine große Streuung von bis zu einigen Prozent. Ich habe dann per Zufall rausgefunden, dass die Streuung wesentlich geringer ausfällt, wenn man den Minuspol des Gleichstromausgangs vom Netzteil einfach erdet. Zum Befestigen der Komponenten im Gehäuse hat sich eine transparente 2mm-PVC-Platte als sehr praktisch erwiesen. Ein Gehäuse mit transparentem Deckel erspart Ausschnitte für LCD. Bei Fragen zu Details und Verbesserungsvorschlägen immer gern.

Die ersten Experimente mit Arduino und ph-Modul
Die ersten Experimente mit Arduino und ph-Modul
Zwischenstufe: Zwei Arduinos, zwei Elektroden und ihre galvanische Trennung mit DC-DC-Wandlern
Zwei Arduinos, zwei Sonden und galv. Trennung
Vorläufige Endausbaustufe für meinen Auslesecomputer
Vorläufige Endausbaustufe für meinen Auslesecomputer
Messverstärker für ph-Elektrode
Messverstärker für die ph-Elektrode
ph-Arduino mit eigenem Stromregler, Kalibrierbuttons und Funkmodul auf einem Proto-Shield
ph-Arduino mit Zusätzen auf einem Proto-Shield
Arduino mit galvanischer Trennung und PH-Messmodul
Arduino mit Anschluss und  PH-Messmodul

Regensensor für WH1080 verbessern

Ich habe schon mal geschrieben, dass der Regensensor bei der Wetterstation WH1080 nicht besonders gut ist. Der Fangtrichter ist zu flach, bei etwas Wind bleibt da nicht viel vom Regen drin. Ich habe mich deswegen umgeschaut, wie man einen größeren Regenfänger basteln kann.

Sehr praktisch erwies sich ein KG-Rohr DN160 mit einer Muffe an einem Ende. Ein Plastiktrichter mit Außendurchmesser von 15 cm passt wie angegossen darein und braucht keine weitere Dichtung. Beides gab’s relativ günstig beim Bauhaus. Keine Ahnung wie UV-stabil die Sachen sind, aber man kann ja damit versuchen. Vom Rohr brauche ich genau 27 cm. Der Trichter wird ca. 1,5 cm unter der Verengung gekürzt. Dann habe ich alles provisorisch auf eine OSB-Platte mit Edelstahl-Winkeln und -Schrauben montiert. Die Platte braucht unter der Regenwippe zwei Löcher für den Wasserabfluss sowie ein größeres Loch fürs Kabel. Wenn sich das Ganze bewährt, muss natürlich später statt Holz eine Kunststoffplatte (z.B. ein Schneidebrett) her. Der so umgebaute Regensensor konnte nicht mehr am Dach befestigt werden. Er hat einen guten dezenten Platz auf dem Randstreifen der Dachbegrünung auf der Garage gefunden, in der Nähe der Sendeeinheit der Wetterstation. Man muss ihn natürlich mit der Wasserwage genau ausrichten, was auf der Kiesschicht sehr einfach geht.

Jetzt muss man noch berücksichtigen, dass der neue Regensammler etwas größer ist als der alte und auch dadurch hoffentlich viel genauer.  Die Fangfläche des alten Regensensors ist 5×11 cm, also 55 cm². Die neue Fangöffnung ist 15,8 cm im Durchmesser, also 196,06 cm². Wir hätten also flächentechnisch den Faktor 0,2805 mit dem der bisherige Regenertrag zu multiplizieren wäre. Ich habe die Zahl zunächst so als Kalibrierungsparameter RainFactor in die Konfigurationsdatei von Freetz Weather eingegegeben. So wird an die Wetterdienste die korrigierte Regenmenge übertragen. Schade ist nur, dass die Basisstation von WH1080 keine Kalibrierungsmöglichkeit besitzt und entsprechend etwa die 3,5fache Regenmenge anzeigt. Das soll bei WH2080 und WH3080 besser sein: dort kann man angeblich die Kalibrierung auch in der Basisstation einstellen.

Der erste Regen zeigte, dass das ganze grundsätzlich funktioniert. Ich wollte noch herausfinden, wie genau  der Regensensor misst. Dafür habe ich ihm paarmal je 196 ml Wasser möglichst langsam reingeschüttet und geschaut, wie viele mm Niederschlag er dabei misst. Es sollten ja jeweils 10 mm Niederschlag rauskommen, tatsächlich hat er im Schnitt nur 6,77 mm gezählt. Die Wippenzähler ist ja nicht perfekt. Möglicherweise war die Wippe durch die ungewöhnlich großen Wassermassen etwas überlaufen. Beim sehr starken Regen wird also immer noch bis zu 30% weniger Niederschlag gezählt. Deswegen habe ich meinen Kalibrierungsfaktor jetzt erstmal auf 0,4143 korrigiert und habe mir vorgenommen, noch ein paar Mess-Experimente zu machen.

[Update 07.06.2014] Jetzt nach fast zwei Jahren habe ich den umgebauten Sensor zum ersten Mal inspiziert und gereinigt.  Die Farben haben sich zwar verändert, ansonsten funktioniert alles einwandfrei. Es hat sich an Plastikteilen glücklicherweise nichts verzogen. Auch die Spinnen, die solche Sensoren zum Erliegen bringen können, waren bislang überhaupt kein Problem. [/Update]

[Update 14.03.2015] Im Februar 2015 ging der Reed-Kontakt in der Regenwippe kaputt und der Sensor konnte nichts mehr messen. Nach dem Austausch des Kontaktes geht wieder. [/Update]

Fangrohr und -Trichter werden gekürzt
Fangrohr und -Trichter werden gekürzt
Die Regenwippe wird auf OSB-Platte montiert
Die Regenwippe wird auf OSB-Platte montiert
Das KG-Rohr rund um den Regensensor
Das KG-Rohr rund um den alten Regensensor
Der Trichter sitzt ziemlich fest im Rohr
Der Trichter sitzt ziemlich fest im Rohr
Fertiger Regensensor auf der Garage
Fertiger Regensensor auf der Garage