Schlagwort-Archive: ethernet

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

USB-Wetterstation übers Netzwerk mit der Fritzbox verbinden

Obwohl bei mir die Wetterstation von der Fritzbox per USB ausgelesen wird, wollte ich die hübsche Basistation irgendwo sichtbar aufhängen und nicht einfach auf dem Spitzboden ablegen, wo sich die Fritzbox befindet. Zum Glück habe ich in der Diele ein Netzwerkkabel in der Wand liegen, das ich irgendwann für eine Sprechanlage oder Ähnliches geplant hatte (wenn die IP-tauglichen Geräte einmal bezahlbar werden sollten). Ein anderes Ende des Kabels ist am Patchpanel neben der Fritzbox angeschlossen. Nur wie kriege ich zwei USB-Anschlüsse mit einem Netzwerkkabel verbunden?

Dafür gibt es sogar eine Standardlösung, die sich USB-Extender nennt. Ein Teil des zweiteiligen USB-Extenders speist USB in ein Netzwerkkabel hinein und am anderen Ende zieht es das Gegenstück wieder raus. Die Elektronik im USB-Extender macht irgendwas mit dem USB-Signal, so dass man es über ein CAT-Kabel über 10-20 Meter übertragen kann, obwohl ein USB-Kabel an sich meist nicht länger als ca. 5 Meter sein darf. Kosten für den USB-Extender zwischen 5 und 10 EUR – bei eBay direkt aus China. Ich hab’s ausprobiert: die Wetterstation funktionierte wunderbar an jeder Netzwerksteckdose. War mir aber zu viel Kabelsalat.

Das Problem war auch, dass ich am Kabelende in der Diele keine Netzwerksteckdose hatte und auch keine setzen wollte – passt dort einfach nicht. Beim Ausprobieren verschiedener Varianten habe ich unter Anderem festgestellt, dass sich ein CAT7-Kabel nicht an einen normalen RJ45-Stecker krimpen lässt, da die Drähte zu dick sind. Eine gute Lösung war trotzdem möglich: ein LSA+ Verbindungsmodul, in dem ein Netzwerkkabel und ein USB-Kabel (mit einem USB-Stecker am anderen Ende) zusammengeschlossen sind. Somit habe ich das USB-Signal einfach passiv auf das CAT-Kabel nach gusto angelegt. Am anderen Ende das gleiche Spiel mit der LSA-Box noch mal. In der Diele ließ sich die LSA-Verbindungsbox komplett hinter der Sprechanlage verstecken, nachdem ich dort etwas Wandputz für eine Nische rausgehämmert habe. Trotz der Entfernung von ca. 6-7 Meter bis zur Fritzbox funktioniert das bei mir sehr gut.

Zwei kleine Schwierigkeiten waren dabei zu überwinden. Ein USB-Kabel hat zu dünne Adern und lässt sich am LSA-Modul nicht auflegen – die Klemmen schneiden die Isolierung nicht durch. Die Lösung: An den Enden 5 mm abisolieren und verzinnen. Dann mit dem Auflegewerkzeug auflegen. Hält gut. Die zweite Sache, die man beachten muss, ist der Standard, nach dem die CAT-Kabel auf den Netzwerkdosen und am Patchpanel aufgelegt sind. Bei mir hat das Ethernet-Kabel am Patchpanel offenbar die weniger gängige T568A Belegung. Keine Ahnung, warum die Jungs das damals so gemacht haben. Kein Problem: Man muss es an beiden Enden des Kabels halt nur nach derselben Belegung machen.

CAT-Kabel am Patchpanel nach T568A angeschlossen
CAT-Kabel am Patchpanel nach T568A angelegt
In der LSA-Box treffen sich CAT- und USB-Kabel
In der LSA-Box treffen sich CAT- und USB-Kabel
Fertige Basisstation der WH1080 in der Diele aufgehängt
Fertig: Basisstation in der Diele aufgehängt