• .
  • Willkommen im Forum!
  • Alles beim Alten...
  • Du hast kaum etwas verpasst ;-)
  • Jetzt noch sicherer mit HTTPS
Hallo, Gast! Anmelden Registrieren


ORP/pH/Elektrometer Messverstärker AFE mit I2C ADC
#1
Für die Überwachung einiger Bäder muss ein System her, wo ich verschiedene Messketten anschließen kann. Angedacht ist die Messung von Redox-Potential und pH-Wert. Ausgelesen wird per ESP8266 zur Weiterverarbeitung per Web/IoT/red-node oder ähnlich. Neben der Messwertaufnahme soll das System des Weiteren eine kleine Schlauch-/Dosierpumpe ansteuern um die Badparameter entsprechend einzustellen.

Im Grunde alles was bereits für div. Aquarien gemacht wird. Über das Web/Software-Frontent habe ich mir noch keine Gedanken gemacht. Fertige Lösungen gibt es natürlich immer, aber der Ehrgeiz des Eigenen steht immer im Raum.

Also fix was zusammengedengelt, passend für die Wemos D1 Mini Boards.

Die Schaltung basiert auf einem TI LMP7721 Elektrometerverstärker mit einem Eingangsbiasstrom im Femtoampere-Bereich mit aktiven Schirmtreiber (TI LMP7716). Dazu eine gepufferte Spannungsreferenz mit TI REF3440 + TI LMP7716. Temperatur wird mittels TI TMP236 erfasst (Ähnlich LM35, aber kleineres Gehäuse). Als ADC wird ein TI ADS1115 mit 16bit verwendet. Der I2C Bus und die Versorgung sind galvanisch entkoppelt per AD ADM3260. Da ich das Rauschen des integrierten isol. DCDC-Wandlers nicht kenne, ist noch ein TI LP5907 Low-Noise-LDO vorgesehen.

Als Alternative zum LMP7721 ist der AD ADA4530-1 genannt.

Das Grundkonzept ist bekannt (LMP7721 als Redox/pH Amplifier), auch die Verbindung mit ADS1115 per ADM3260 an die Aussenwelt gibt es so bereits. Somit, alles "Hausmannskost". Unterschiede finden sich im Detail der Implementierung, wie Temp-Sensor, Guard-Ring, Referenz, Low-Noise-LDO, Layout sowie der universellen Konfigurierbarkeit.

Sollte das Board nicht mit einem Wemos D1 Mini genutzt werden, sind die Pins für Versorgung, I2C etc. trotzdem nutzbar. Ebenfalls vorgesehen ist die Verbindung per "Daisy-Chain" vor/hinter dem isoliertem I2C-Bus. (per JST SH Verbinder)

Umgesetzt auf 2 Lagen in 35x27mm.

   

   

Schaltplan:


.pdf   ORP_FRONTENT_ESP8266.pdf (Größe: 77,45 KB / Downloads: 662)
 
Reply
#2
Für die Speicherung von Zeitserien würde ich InfluxDB empfehlen, für die Darstellung der Daten Grafana. Der größte Vorteil ist, das Grafana direkt mit Influx läuft. Man muss die Datenbank nur als Datenquelle definieren und dann kann man sich über einen WYSIWYG-Editor beliebige Dashboards zusammenbauen. Für das injizieren von Daten von Modbus/One-Wire zu Influx nutze ich dabei Node-Red. 

Den Stack habe ich so privat auf einem Raspberry Pi mit SSD am laufen, das war alles binnen eines Tages installiert. In der Firma haben wir die Softwarepakete auch im Einsatz, dann aber in einer anderen Konfiguration. Läuft eigentlich alles relativ stabil.

Bilder reiche ich später mal nach..
 
Reply
#3
Vielleicht nochmal kurz zur Erläuterung, was die Bilder zeigen:
Der Raspi ist über Modbus/RS485 an einen Stromzähler (ABB B23) und über OneWire an Temperatursensoren angeschlossen. Über Node-Red hole ich die Daten ab, formatiere die und speise die in InfluxDB ein.

In InfluxDB habe ich vier aktive Datenbanken: realtimeData, minutleyData, hourlyData und dailyData. Wie der Name schon vermuten lässt, sind die Daten dann in unterschiedlicher Auflösung gespeichert. In realtimeData werden alle Echtzeitdaten, die von Node-Red kommen, eingespeist -> Auflösung ca. 200ms bis 1 min, je nach Datenquelle. Diese zeige ich dann auf den "Realtime"-Dashboards an. Das Realtime-Dashboard zeigt auf den Bildern viele Werte nicht richtig an - das liegt daran, das der Zähler zum Test nur an einer Phase hängt, die an den Klemmen "L1" und "L2" angeschlossen wurde -> Nur 230V statt 400V.


InfluxDB stellt von Haus aus Funktionen bereit, um diese Daten automatisch zu aggregieren ("Coninuous Queries"). Das heißt, jede Minute, Stunde und jeden Tag macht Influx auf den Echtzeitdaten jeweils eine Analyse, in der Minima, Mittelwerte und Maxima für die Zeitbereiche ausgelesen und in die zugehörigen Datenbanken geschrieben werden. 

Die realtimeData- und minutelyData-DB's unterliegen einer maximalen Haltedauer der Daten von 7 Tagen ("Retention Policy"). Danach werden die Datenpunkte fortlaufend überschrieben. Langfristig interessiert mich ja nur der Tage- oder Stundenweise, aber nicht Millisekunden genaue Verlauf.

Meine Erfahrungen sind bislang nur positiv. Die Installation ging fix, im Rahmen der Tests habe ich den Pi mehrfach hart ausgeschaltet und alle Services liefen von alleine wieder problemlos an. Datenverluste hatte ich auch noch nicht - höchstens gewollt.

Vielleicht kannst du ja damit was für dein Projekt anfangen. Alarme für unpassende Messwerte kannst du bspw. auch in Grafana anlegen - das habe ich aber noch nicht getestet.


Angehängte Dateien Thumbnail(s)
                       
 
Reply
#4
Mächtige Sache, danke!

Ich muss erstmal schauen, ob sich der Aufwand lohnt da noch zusätzlich einen DB Server aufzusetzen. Zuerst einmal die Sensoren anpassen und einmessen. Danach die Dosierpumpen ansprechen und eine Art Regelung implementieren. Eventuell setze ich da dann einen Studenten dran, der sich ums Dashboard kümmert. Für ein Galvanik-Bad lohnt es sich noch nicht.
 
Reply
#5
Soweit ich sehen kann, kann man auch alles in Node-Red + IBM-Cloud (gratis Service) abbilden?
 
Reply
#6
(27.12.2019, 12:28 PM)christianw. schrieb: Soweit ich sehen kann, kann man auch alles in Node-Red + IBM-Cloud (gratis Service) abbilden?

Mit den Cloud-Angeboten kenne ich mich nicht aus - bis jetzt nie genutzt. Der Hinweis zu der IBM Cloud ist aber durchaus wertvoll, weil die Lite-Version dauerhaft kostenlos bleibt - danke dafür! Rund um Datenverarbeitung kann da bestimmt jeder Anbieter vieles möglich machen. Die Frage ist da im Endeffekt nur, wieviel Zeit man insgesamt investieren muss, um sich da einzuarbeiten und das ganze an den Start zu bringen. Wenn die Anlage nicht übers Internet erreichbar sein muss würde ich aus dem Bauch raus sagen, dass du mit einem Pi schneller eine solide Lösung hinbekommst. Welche der in der Lite-Version enthaltenen Pakete würdest du denn dann nutzen wollen?

Für Node-Red gibts auch ein Dashboard-Plugin, das ist auch top. Ist nur nichts für große Datenmengen auf nem längeren Zeitraum, dann wird das schnell langsam.
 
Reply
#7
Projekt-Link:
https://www.360customs.de/2019/12/orp-re...5-adm3260/
 
Reply
#8
evtl. nützlicher "Zufallsfund" : eine freie C/Basic ähnliche Automatisierungs-Sprache 

https://www.theremino.com/de/downloads/automation

Beispiele:
[Bild: applications_eig.jpg]

[Bild: SlotsToOffice1.png]

[Bild: VideoInspector.jpg]

[Bild: ThereminoCNC_Skins.gif]
    Don't worry about getting older.  You're still gonna do dump stuff...only slower
 
Reply
#9
Hmm, soweit erstmal..

https://orp.eu-gb.mybluemix.net/ui/
 
Reply
#10
[Bild: heiner_wie_keiner_1514895.jpg]
    Don't worry about getting older.  You're still gonna do dump stuff...only slower
 
Reply
#11
And I am the average Joe understanding railway station!
...mit der Lizenz zum Löten!
 
Reply
#12
Temperatur, Redoxpotential und pH-Wert sollten zu sehen sein.

https://de.m.wikipedia.org/wiki/Redoxpotential
 
Reply
#13
Anbindung per MQTT in beiden Richtungen an Node-Red welches in der IBM-Cloud läuft.
 
Reply
#14
Cool! 

Das heißt, auf der IBM Cloud läuft auch ein MQTT-Broker? Dann per TCP-Verbindung vom ESP auf den Broker? 
Welche Bibliothek verwendest du auf dem ESP? Wie sicherst du die Verbindung ab?
 
Reply
#15
Der Broker ist: http://www.dioty.co

Abgesichert mit User/Pass gehts von ESP zum Broker (Standard 1883, geht auch über 8883 + ca_cert - ungetested). Node-Red verbindet mit diesem und macht den Rest. (Aufbereitung + Dash)

Auf dem ESP ist primär nur "PubSubClient" notwendig.

Die Daten gehen dann in der Cloud noch in die Cloudant DB (JSON noSQL). (1GB free storage, da muss man etwas haushalten)
 
Reply