:) Bin mir etwas unsicher, ob daraus lieber ein Artikel werden sollte. Gebt mir gerne Anmerkungen zum Projekt. Bestimmt habt Ihr Ideen, was verbessert werden könnte. Viel Spass beim lesen:
Nachbau: Leicht
Ziel: Messung einer Wassersäule (Brunnen) von 0-470cm mit einer Genauigkeit von 5 cm.
Ergebnis: Erreichter MaxFehler nach 5-Punkt-Kalibrierung: 2,45 cm.
Plattform: Raspberry Pi Pico W MicroPython 2,9" e-Paper-Display
Sensor: MPX2050DP (0-50 kPa) 10V (aber betrieben mit 8,4V um Sättigung des Instrumentenverstärker zu verhindern)
Zentrale Bauteile:INA333 (Gain 38), MCP3426 16-bit ADC,
Funktion:
Tief im Brunnen ist ein Messing-Endstück an einem 4mm PE Schlauch versenkt. Über eine kleine 70kPa Luftpumpe wird vor der Messung für 3-4 Sek das Wasser aus dem PE Schlauch gedrückt. Sobald die Pumpe abschaltet der "Überdruck" der Pumpe abfällt, stellt sich am Sensor der Druck der Wassersäule ein, der über dem Messing-Endstück ansteht. Der Sensor mißt so eine Wassersäule von bis zu 4,7 Metern mit einer Auflösung von 2-5cm, die Daten werden stündlich automatisch erfasst, lokal auf einem e-Paper-Display angezeigt und über WLAN an einen Raspberry Pi (Server) übermittelt. Auf dem Pi läuft eine kleine Website, auf der die Daten dargestellt, strukturiert und gespeichert werden. Der Code wurde komplett mit Ki (Claude) ge-vibe-coded und von mir überprüft. :)
Details:
Die gesamte analoge Signalkette besteht aus vier Stufen:
MPX2050DP: Wheatstone-Brücken-Sensor liefert 0-40 mV Differenzsignal bei Vcc = 10 V (ratiometrisch). Bei 8,4 V Vcc reduziert sich das auf 0-33,6 mV Fullscale.
R4/R5 (je 100 Ohm): Schutzwiderstände gegen ESD und kapazitive Kopplung an den INA333-Eingängen.
INA333AIDGKR: Zero-Drift-Instrumentenverstärker mit Gain G = 38,04 (R6 = 2,7 kOhm). Hebt das kleine Differenzsignal auf 0-1,28 V an. Der REF-Pin liegt auf VREF = 2,516 V, wodurch der Ausgang bei 0 kPa auf 2,516 V liegt und mit steigendem Druck ansteigt.
MCP3426A0: 16-bit Delta-Sigma-ADC, I2C. CH1+ wird vom INA333-Ausgang gespeist, CH1- liegt auf VREF. Der ADC misst differenziell - die Referenzspannung hebt sich heraus und das Nutzsignal wird mit vollem 16-bit-Bereich erfasst.
Wichtig:
Der INA333 enthält intern drei Op-Amps. Die Vorverstärker A1 und A2 berechnen intern:
Bei Single-Supply-Betrieb (0-5 V) darf VA1 die Versorgung nicht überschreiten (Limit: ~4,92 V). Mit dem originalen 10-V-Sensor ergab sich VCM = 5,0 V - bereits im Ruhezustand war der Eingang übersteuert. Die Lösung: einen 270-Ohm-Vorwiderstand in die Sensor-Vcc-Leitung einbauen, um die Versorgung auf ~8,4 V zu reduzieren oder einen 9V LDO Spannungsregler hernehmen. In der Platine hatte ich bereits einen 10V LDO verbaut und musst ich mich mit einem dazwischen gefrickelten 270-Ohm-Vorwiderstand begnügen. (nicht im aktualisierten Schaltplan) :)
Übersicht über Versorgungspannungen:
Besonderes Augenmerk wurde auf die Trennung von Analog- und Digital-GND gelegt. Die untere Platinenebene ist vollständige GND-Fläche. Analog- und Digitalbereich sind räumlich getrennt und treffen sich nur an einem zentralen Sternpunkt (12V).
Die Schaltung gliedert sich in vier Teilbereiche:
Digital VBus: 12 V DC Eingang, 5 V Digital (LM2576T), 3,3 V Digital (LT1963A)
Analog VBus: 10 V Analog (R1501J100B LDO), 5 V LDO (MCP1703A)
Steuerung: Raspberry Pi Pico W, e-Paper SPI, Pumpe/Ventil-MOSFETs, Taster
Gain-Widerstand INA333: R6 = 2,7 kOhm ergibt G = 1 + 100 kOhm / 2,7 kOhm = 38,04. Damit ergibt sich bei Sensor-Vcc = 8,38 V eine Gesamtsensitivitaet von ~26,9 mV/kPa an den ADC-Eingängen.
MOSFET-Auslegung: Der IRLML2502 (SOT-23) schaltet Pumpe und Ventil mit einem MOSFET gleichzeitig. Der zweite IRLML2502 schaltet ein zweites Ventil zur Entlüftung der Druckleitung vor der eigentlichen Messung um den Referenzdruck sicher messen zu können. Gemessener Gesamtstrom bei 12 V: 0,06 A im Normalbetrieb, 0,74 A bei gleichzeitigem Betrieb beider Lasten. Die Verlustleistung im MOSFET beträgt dabei nur 25 mW - weniger als 2,3% des zulässigen Maximums.
Firmware in MicroPython und Kalibrierung:
Inhalt der pico.zip komplett auf den Pico laden mit
1
mpremoteconnectautofscpDATEI.py:
.env - Zugangsdaten / Environment Datei erstellen und auf den pico laden:
1
WIFI_SSID=MeinNetzwerk
2
WIFI_PASS=MeinPasswort
3
PI_HOST=192.168.X.XX
4
PI_PORT=5000
Inhalt der pi.zip komplett auf den Pi laden und install.sh ausführen.
ADC-Konfiguration:
Der MCP3426 wird folgender Maassen konfiguriert:
ADC_CFG = 0x88 # Kanal 1, One-Shot, 16-bit, PGA x1
Jede Messung wird 32-fach gemittelt (Integer-Summation, einmalige Float-Konvertierung am Ende). Dies reduziert das Rauschen um Faktor sqrt(32) = 5,7. ADC-Auflösung: 16-bit / 62,5 uV pro LSB.
Lineare Kalibrierung:
Die Kalibrierprozedur nimmt 5 Messpunkte bei bekannten Referenzdrucken auf und berechnet per Least-Squares-Regression die Koeffizienten a und b:
Druck [kPa] = a * ADC [mV] + b
Referenzdrücke müssen zur Kalibrierung mit einem hochpräzisen mmHg-Manometer erzeugt werden (1 mmHg = 1,35951 cm H2O).
BOM folgt morgen oder übermorgen sowie Grafik und Foto vom gesamten Aufbau die nächsten Tage.
Ich hab noch etwa 10 Platinen an Nachbau-Interessierte zu vergeben.
Vor Jahren befaßte auch ich mich mit einem ähnlichen Projekt das ich hier im Forum vorstellte.
Nur in einem Punkt machte ich es anders: Ich verwendete drei Ventile, um den aufgebauten Druck im Messrohr wegen der Energiebilanz nicht zu verschwenden. Das zweite Ventil belüftet vor der Staudruckmessung den Sensor, um zur Nullpunkterfassung des Sensors den atmosphärischen Druck zu registrieren. Dann schalte ich den Sensor erst auf die Druckleitung.
Bei mir ist der Meßablauf wie folgend:
Sensor zur Atmosphere zwecks Sensor-Nullung schalten
Erstmalig die Druckleitung mit der Pumpe ausblasen und den Druck halten bis er sich aus-perlt. Der Sensor ist während des Pumpvorgangs abgekoppelt.
Sensor auf die Druckleitung schalten und beliebig regelmäßig messen
In regelmäßigen Abständen (30m) schalte ich die Pumpe ein um etwaige Druckänderungen und Verluste ausgleichen zu können. Während des Pumpens ist der Sensor abgekoppelt, um mögliche Überlastungen zu verhindern.
Bei mir ist halbstündiges Nachpumpen vollkommen ausreichend. In meinem Anwendungsbereich genügt an sich einmal am Tag.
Hi Frank, in meinem Fall aus zwei Gründen: Keine Elektronik im Brunnenschacht. Im 150DN Brunnenrohr befindet sich ein 1“ Druckschlauch, ein Stahlseil, eine Netzleitung. Da ist nicht mehr viel freie Sicht auf die Wasseroberfläche…
Hi Frank, in meinem Fall aus zwei Gründen: Keine Elektronik im
Brunnenschacht. Im 150DN Brunnenrohr befindet sich ein 1“ Druckschlauch,
ein Stahlseil, eine Netzleitung. Da ist nicht mehr viel freie Sicht auf
die Wasseroberfläche…
Grüße, Tobi
Sehe ich genauso. Abgesehen davon, ist es doch ein wichtiger Vorteil, keine empfindliche Elektronik dort im feuchten Bereich zu haben. Das Schöne daran ist, daß nur ein Schlauch ins Wasser eingeführt werden muss. Die Auswerteeinheit kann im geschützten Bereich verbleiben.
Die Industrie weiß wie man beständige US Köpfe baut - Aber wer findet es bezahlbar. Das Zeugs aber, daß man uns als Hobbyisten verkauft, ist einfach nicht dafür gebaut. Das wurde hier auch schon öfters erwähnt. Meine Version läuft jetzt schon jahrelang ohne besondere Probleme. Mein einziges Problem war letztes Jahr eine schlechte Quetschverbindung (Crimp) der LP Motorverbindung. Aber da kann der Pumpenmotor nichts dafür.
Tobi, ich hoffe Du nimmst nicht den 1" Druckschlauch - da müsste sich ja Deine arme Mikro-Pumpe am Anfang totpumpen. Ich würde da eher noch einen dünnen PVC Schlauch einschieben.
Dann werde ich an einem Artikel
arbeiten und diesen hier im Thread begleiten.
Wäre super, wenn Du auch kurz auf die von Dir verwendeten Aktoren (Pumpe, MV) eingehen könntest. Waren sie gerade zur Hand, oder wurden sie nach bestimmten Anforderungen bestellt?
@ Gerhard: :) Ich habe eine 4mm PE Leitung verwendet. (siehe Foto von ersten Tests in einem Bierglas)
Den Brunnen habe ich 2010 gebohrt. Unten auf ca. 4m tiefe sitzt eine Tauchpumpe. Die 1" Druckleitung sollte nicht dauerhaft auf Zug belastet sein, weshalb die Tauchpumpe an einem Stahlseil hängt. Dadurch legt sich das 1" Rohr leicht Spiralförmig in den Schacht -> es ist also wirklich eng in diesem 150DN Rohr.
Eine (leider veraltete) Beschreibung des Brunnens findet ihr auf meinem Blog:
@ Frank: Es können mit dieser Methode auch Wasserstände von Bächen und Flüssen gemessen werden.
@ Micha: Stimmt! Die verwendeten Aktoren habe ich direkt für das Projekt bestellt. Die Pumpe sollte mind. 50kPa Druck aufbauen können. Ich habe die kleine Pumpe zerlegt und mit Loctite abgedichtet. Dies hat eine enorme Leistungssteigerung bewirkt.
Anforderungen zusammen gefasst:
12V DC
max. 1-2A um SOT-23 MOSFET IRLML2502 (I_max ca. 4,7A) thermisch nicht zu überlasten.
klein: Gehäusebau steht noch aus. Bericht folgt in den kommenden Monaten. Schaut euch einmal Gerhard's Projekt an. Da geht's eng zu! :) Er hat sich für eine kleinere Ventil-Bauart entschieden.
Ventil 2 und Pumpe liegen zusammen am Ausgang: "Pumpe". Da über die Pumpe langsam Druck abfällt, trennt Ventil 2 die Pumpe vom Druckbereich Sensor/Brunnen im Normalbetrieb (Pumpe und Ventil stromlos) und während der Messung ab.
Ventil 1 (Entlüftung zur Referenzmessung) liegt auf Ausgang: "Ventil"
Ablauf der Messung:
Ventil 1 wird geöffnet. Der Druck in der PE Leitung zwischen Sensor und Brunnen wird abgelassen. Es steht der atmosphärische Druck am Sensor an und wird als Referenzdruck gemessen und gespeichert. Ventil 1 schließt.
Ventil 2 und die Pumpe laufen. Druckaufbau in der PE Leitung für ca. 5sek. Der von der Pumpe aufgebaute Druck muss über dem Druck der Wassersäule liegen, damit Luft am unteren Ende der Druckleitung (Messing-Endstück im Brunnen) "ausperlt".
Pumpe schaltet ab. Ventil 2 schließt.
Der nun anliegende Druck am Sensor stellt den Druck der Wassersäule dar -> Es erfolgen mehrere Messungen. (siehe Code und Beschreibung oben)
Dein Projekt gefällt mir auch. Ist etwas modernere Technik als meine vor sieben Jahren. Wie ich schon beim ersten Beitrag bemerkt habe, missfällt mir aber, daß Du regelmässig den Druck in der Messleitung ablässt. Ich lasse den einmal aufgebauten Druck stehen und schalte den MXP nur für den Zweck der Nullung auf die Atmosphäre. Dann misst er sofort wieder den vorherigen Druck. Beim Nachpumpen trenne ich den Sensor übrigens, damit er nicht durch Überdruck zerstört wird. Man kann nie wissen ob die Messleitung verstopft sein könnte. Mein MPXP4006 verträgt nicht viel Überdruck. Meine Pumpe schafft fast 80kPa. Die FW überwacht den Sensor und schaltet bei Überdruck sofort die Pumpe ab und öffnet das Ventil zur Atmosphäre. Ob das ausreicht, wagte ich noch nicht zu testen.
Lohnt es sich den rPi Pico zu kaufen? Wie sind Deine Erfahrungen damit?
Angeregt Durch Dein Projekt mache ich mich vielleicht demnächst daran, den ESP8266 Web Server zu bauen und die Messwerte auslesen. Da muß nur noch eine RS485 Schnittstelle an den ESP. Mal sehen was daraus wird. Da sende ich zum Sensor einfach "U10M" und kriege in CSV Format zurück: ws, Bv, Degc, Füllhöhe
Z.B. "35, 12.9, 12.6, 64". (35cm, 12.9DegC, 12.6VDC, 64% voll). Die U10 ist die RS485 Adresse des Sensors.
Die Firma Tecson stellt übrigens auch ähnliche Messtechnik für Ölbehälter her mit ihren "eLitro" Sonden. Die arbeiten scheinbar ohne MV.
Jedenfalls gut Gelingen mit dem Projekt und Freude damit,
ich hatte mir 2014 interessante ähnliche Projekte von Frank Ullmann und Jens Dietrich (Immer noch aktuell: https://icplan.de/seite27/) angeschaut. Gerade die kleinen oder großen Unterschiede finde ich sehr spannend. Also noch mal vielen Dank für Deine Gedanken.
In Deinem Projekt ist die digitale / analoge Anzeige, die den Füllstand dauerhaft und aktuell anzeigt richtig gut. Dafür benötigst Du natürlich Deinen beschriebenen Aufbau. Ich denke dafür gibt es auch sehr relevante Anwendungen (Tanks, Zisternen, etc...)
Ich bin bei meinem Aufbau ehr von wenigen einzelnen Messungen am Tag ausgegangen, da sich der Grundwasserstand langsam über Monate ändert.
Zum Thema Überdruck:
Abgesehen davon, dass ich ein ehr Risiko freudiger Mensch bin und mehrere MPX2050 rumliegen habe, halte ich es für ehr unwahrscheinlich, dass es zu einem länger anhaltenden Überdruck kommen könnte. Die Drucksensoren von NXP sind anscheinend hinsichtlich Empfindlichkeit bei Überdruck, Stößen, Pulsationen unterschiedlich beschaffen. Meine Recherche ging aber auch nicht sehr weit.
Zum Thema RaspberryPi oder Pico:
Ganz klar nein. Wenn Du schwierige Programmiersprachen kannst und mit der Programmierung von SoC oder IC's Erfahrung hast. Der Vorteil von RaspberryPi oder Pico liegen meiner Meinung in der einfachen Prammiersprache Python oder MicroPython und dem einfachen kommunizieren mit den Boards. Klar: Wlan, I2C, ADC etc... wobei ich im Projekt hier kaum Ressourcen des Pico benutze - ich hatte (habe) einfach einige in der Werkstatt. Auch finanziell bieten Marken wie Arduino, Raspberry, etc. denke ich, keine Vorteile. Andererseits: Mal mit etwas "Anderem oder Neuem" rum spielen: Dann klar, dass lohnt ich immer! Ich finde Python ist eine schöne Sprache.
ich hatte mir 2014 interessante ähnliche Projekte von Frank Ullmann und
Jens Dietrich (Immer noch aktuell: https://icplan.de/seite27/)
angeschaut. Gerade die kleinen oder großen Unterschiede finde ich sehr
spannend. Also noch mal vielen Dank für Deine Gedanken.
Icplan kenne ich; der baut auch schöne Projekte - F.Ullmann sagt mir aber nichts. Web Recherche brachte nichts zutage.
In Deinem Projekt ist die digitale / analoge Anzeige, die den Füllstand
dauerhaft und aktuell anzeigt richtig gut. Dafür benötigst Du natürlich
Deinen beschriebenen Aufbau. Ich denke dafür gibt es auch sehr relevante
Anwendungen (Tanks, Zisternen, etc...)
Ja. Bei mir kann sich der Pegel in unregelmäßigen Abständen schnell ändern. Finde ich nett, daß Dir die Art meiner gewählten Anzeige gefällt. Diese kleinen Instrument-Schrittmotore mit ihrer hohen Auflösung sind echt nützlich und lassen sich mit CMOS Ausgängen direkt ansteuern.
Ich bin bei meinem Aufbau ehr von wenigen einzelnen Messungen am Tag
ausgegangen, da sich der Grundwasserstand langsam über Monate ändert.
Verständlich. Welche Art der Stromversorgung setzt Du ein? Herkömmlich oder Solar?
Zum Thema Überdruck:
Abgesehen davon, dass ich ein ehr Risiko freudiger Mensch bin und
mehrere MPX2050 rumliegen habe, halte ich es für ehr unwahrscheinlich,
dass es zu einem länger anhaltenden Überdruck kommen könnte. Die
Drucksensoren von NXP sind anscheinend hinsichtlich Empfindlichkeit bei
Überdruck, Stößen, Pulsationen unterschiedlich beschaffen. Meine
Recherche ging aber auch nicht sehr weit.
Naja, sei trotzdem vorsichtig. Diese MEMS Widerstandsbrücken sind ziemlich empfindlich gegen Überlastung. Letzten Winter entwickelte ich einen 4-20mA Wasser Sensor mit einem I2C Drucksensor der Firma CFSensor. Funktioniert recht gut und man kommt ohne Analog Funktionen aus.
Zum Thema RaspberryPi oder Pico:
Ganz klar nein. Wenn Du schwierige Programmiersprachen kannst und mit
der Programmierung von SoC oder IC's Erfahrung hast. Der Vorteil von
RaspberryPi oder Pico liegen meiner Meinung in der einfachen
Prammiersprache Python oder MicroPython und dem einfachen kommunizieren
mit den Boards. Klar: Wlan, I2C, ADC etc... wobei ich im Projekt hier
kaum Ressourcen des Pico benutze - ich hatte (habe) einfach einige in
der Werkstatt. Auch finanziell bieten Marken wie Arduino, Raspberry,
etc. denke ich, keine Vorteile. Andererseits: Mal mit etwas "Anderem
oder Neuem" rum spielen: Dann klar, dass lohnt ich immer! Ich finde
Python ist eine schöne Sprache.
Mit Python habe ich bisher nur am PC etwas gemacht. Ist eine nützliche Sprache. Finde ich auch. Mit MicroPython habe ich mangels einer entsprechenden uC-Bord allerdings noch nichts gemacht. Ich fürchte, man muss ein Spezialist sein, um MicroPython Treiber selber schreiben zu können. Ist nichts für mich. Die 8-Bitter erfüllen meine Ansprüche meist ziemlich ausreichend. Und wenn nicht, dann muß halt ein STM32 ran. Ein Bekannter von mir schwärmte oft von Teensy Bords.
Wieder zu Dir. Es würde mich interessieren, wie Dein Endgerät aussehen wird. Auch Dein Ansatz lässt sich ziemlich klein ausführen. Nimm aber ein gutes und dichtes Gehäuse. Bei mir führe ich die externe Arbeitsluft durch ein Sinter Luftfilter. Notwendig ist es wahrscheinlich nicht. Bei Trinkwasser würde ich allerdings noch ein HEPA Filter vor die Pumpe schalten, damit das Wasser nicht durch Bakterien verseucht wird. Es gibt dafür kleine Inline Membran Filter.
Für die Ansteuerung der 12V Ventile eignen sich übrigens die TPIC6C595 Shift Register mit 50V/350mA MOSFET O.D. Ausgängen. Den verwende ich bei mir, um die drei Magnetventile zu betreiben.
Danke für eure Diskussion.
Ich wollte mir auch mal einen Füllstands-Sensor bauen, der dann auch ein Ventil öffnet um nachzuregulieren. Das muss aber bombensicher sein, sonst gibts Überschwemmung.
Hier hab ich einige Anregungen dazu gefunden. Vor allem die Lösung mit dem Drucksensor und der Pumpe gefällt mir. Denn es besteht die Gefahr, dass das Rohr verstopft.
Was liefert so ein MEMS-Sensor als Signal wenn er überlastet wurde? Hängt der oder gibt er einen Extremwert aus?
Danke für eure Diskussion.
Ich wollte mir auch mal einen Füllstands-Sensor bauen, der dann auch ein
Ventil öffnet um nachzuregulieren. Das muss aber bombensicher sein,
sonst gibts Überschwemmung.
Auf alle Fälle einen redundanten Schwimmer Fail-Safe vorsehen. In Pumpanlagen muß man solche Möglichkeiten immer als Möglichkeit voraussetzen und durch sachgerechtes Design bewältigen.
Hier hab ich einige Anregungen dazu gefunden. Vor allem die Lösung mit
dem Drucksensor und der Pumpe gefällt mir. Denn es besteht die Gefahr,
dass das Rohr verstopft.
Ohne Schutzmassnahmen kann so ein Sensor je nach Pumpenleistung leicht überlastet und Bersten. (Im Datenblatt nach "Burst Pressure" suchen).
Was liefert so ein MEMS-Sensor als Signal wenn er überlastet wurde?
Hängt der oder gibt er einen Extremwert aus?
Das Letztere passiert. Die MEMS-Sensoren mit Spannungsausgang, mit denen ich bis jetzt gearbeitet habe, gehen bei Überlastung alle in die Sättigung nahe an Vcc. Überlastungen solcher Messbrücken sollte man nach Möglichkeit vermeiden, um die Langzeitgenauigkeit nicht zu verschlechtern. Es empfiehlt sich auch in der Druckleitung ein zum Messbereich passendes Überdruck-Ablassventil vorzusehen, was aber bei geringem absoluten Druckbereich leichter gesagt als getan ist. Mein MXPX4006D verträgt da relativ wenig. Es werden 24kPa angegeben.
Obwohl in meinem Design der Sensor nach dem Pumpen erst nach der "Beruhigungszeit" zugeschaltet wird und die FW den Druck durchgehend misst, um bei Überschreitung des eingestellten Schutzgrenzwert umgehend die Druckleitung der Atmosphäre zu öffnen, ist es unklar, ob der Drucksensor das trotzdem überlebt. Einige 10ms Überlastung lässt sich nicht umgehen. Ausprobiert habe ich das leider nicht, weil ich nicht die Zerstörung des teuren Sensors riskieren wollte. Ich habe mit dem Finger mal vorsichtig die Leitung verstopft und die FW und System hat richtig und schnell reagiert, aber auch das war riskant. Die Pumpe bei mir kann bei Systemverschluß 80kPa erzeugen. Man sollte auf alle Fälle maximal möglichen Pumpendruck und Sensor Messbereich nach Möglichkeit aufeinander abstimmen und ggf. ein Überdruckventil vorsehen.
Ob das für Dich tragbar ist, musst Du selber bestimmen.
Ob das für Dich tragbar ist, musst Du selber bestimmen.
Das ist mir klar. ;-)
Das Ganze steht und fällt mit der Pumpe. Ich werde nach einer suchen, die wenig Druck und Volumen liefert. Und man kann ja durch ein größeres Rohr die Druckanstiegsgeschwindigkeit reduzieren um schnell genug zu reagieren. Groß ist mein Messbereich auch nicht.
Aber da muss ich noch DaBla wälzen und etwas rumrechnen. Das Ganze eilt mir nicht, das war eher "nur mal so eine Idee"[tm]
Ob das für Dich tragbar ist, musst Du selber bestimmen.
Das ist mir klar. ;-)
Das Ganze steht und fällt mit der Pumpe. Ich werde nach einer suchen,
die wenig Druck und Volumen liefert. Und man kann ja durch ein größeres
Rohr die Druckanstiegsgeschwindigkeit reduzieren um schnell genug zu
reagieren. Groß ist mein Messbereich auch nicht.
Aber da muss ich noch DaBla wälzen und etwas rumrechnen. Das Ganze eilt
mir nicht, das war eher "nur mal so eine Idee"[tm]
Solche Ideen haben die Eigenschaft sich im Gehirn zu verankern;-)
Prokrastinieren ist dann keine Option.
Ich würde auf keinen Fall eine zu schmalbrüstige Pumpe wählen. Da würde auch der Druckaufbau je nach Schlauchvolumen möglicherweise zu lange dauern. Auch würde ich vorschlagen, ungleich wie bei mir, den Sensor beim Pumpen sogar dran zulassen und kontinuierlich messen. Eine stärkere Pumpe erlaubt nämlich eine Erfassung des Messschlauchszustand durch intelligentes Verhalten des Systems. Das dp/dt oder Stromänderungsrate des Messrohrs gibt nämlich Aufschluss darüber ob ein Fehlerzustand vorhanden ist.
Durch das Überwachen kann man vorsichtig vorgehen und eine Sensor-Überlastung durch einen geeigneten Messalgorithmus verhindern. Meine Überlegung geht also dahin, daß unter normalen Umständen der Luftdruck Anstieg gleichmässig, aber stetig ansteigt. Die Stromänderungsrate gibt also einen Anhaltspunkt ob die Messleitung typisch offen oder eine Einschnürung oder Blockade aufweist.
Im letzteren Fall ist die Anstieg unverhältnismässig steil. Das lässt sich ausnützen. Man muß also in Schritten pumpen und überwachen. Genug Zeit zum Entscheiden ist hier wichtig. Wenn die Pumpenüberwachung es gescheit anfängt, lässt sich der Sensor in FW ziemlich gut schützen. Ein Notabblasen durch ein Magnetventil ist möglicherweise nicht schnell genug. Deshalb sollte man es von vornherein nicht zu einer Sensorüberlastung kommen lassen.
Durch das Überwachen kann man vorsichtig vorgehen und eine
Sensor-Überlastung durch einen geeigneten Messalgorithmus verhindern.
Wenn man einmal von Fehlsteuerung der Pumpe absieht, entsteht Sensorüberlastung doch eher über durchlaufende Druckwellen, also wenn kein dämpfendes Luftpolster im Schlauch ist und Schläge der Pumpe über die Wassersäule direkt auf den Sensor gekoppelt werden oder ein Wasserfluss durch ein Ventil schlagartig unterbrochen wird (Stichwort: Wasserschlag). Sofern, bedingt durch den Aufbau, ein ausreichendes Luftpolster zwischen Sensor und Pumpe garantiert ist, ist die Gefahr für gefährliche Druckspitzen doch eher gering. Oder woher sollen die kommen?
Man kann auch zusätzlich einen kleinen Druckspeicher an die Leitung setzen, über dessen Volumen die Härte des Systems bei Druckänderungen beeinflusst werden kann.
Das di/dt des Messrohrs gibt
nämlich Aufschluss darüber ob ein Fehlerzustand vorhanden ist.
Das ist mir klar und Teil des Plans. Ventile um das Rohr drucklos zu machen sind nicht Teil davon. Wieder etwas, das ausfallen kann. Überdruckventil ist auch keine Lösung. Die pappen bei den geringen Drücken und sind viel zu fummelig.
Mit einer peristaltischen Pumpe (mit Drehzahlrückmeldung) könnte man genauere Plausibilitätsprüfungen machen.
Pumpe läuft nachweislich, Druck steigt nicht an -> Undicht.
Nach dem Pumpen fällt der Druck wieder -> Undicht.
Das sind aber alles Sachen, die ausprobiert werden müssen.
Hi Rainer, Danke für's durch schauen. Richtig F1/D1 im Schaltplan und auf der Platine bitte vergessen -> Mein Fehler. Frage mich selbst, wie ich das übersehen konnte.
Zum Thema Burst Pressure kann ich leider nicht viel beitragen. Mein Anliegen war, das Projekt zum Nachbauen erstmal recht einfach aufzubauen. Ich habe auf der Platine seitlich ein paar GPIO und GND's heraus geführt um einfach einen weiteren MOSFET oder ähnliches anschließen zu können.
Das Thema von Reiner: Druckwellen halte ich für relevanter. Druckwellen/Stöße durch Ventile und die Membranpumpe selbst. Im Test (ohne den 5m langen Schlauch) konnte ich auf einem präzisen Manometer starke Stöße der Membranpumpe erkennen. Aus sorge über eine "Dauer-Belastung" des Sensors habe ich einen kleinen Drucktank in der nähe des Sensors platziert und konnte die Stöße damit sehr stark dämpfen. In der Test-Phase mit angeschlossenen Brunnen (mit 5m langen 4mm PE Schlauch) waren die Stöße auch ohne Drucktank nicht messbar.
Anbei Fotos des Gehäuse-Baus im Steam punk style, da ich in Absprache mit anderen Benutzern der Werkstatt (da wird das Gerät dauerhaft im Einsatz sein) kein größeres Gehäuse benutzen durfte. Leider habe ich nun im System eine starke Undichtigkeit. :(
Der eingesetzte Sensor kann max. 200 kPa aushalten, die von Tobi genannte Pumpe liefert ca. 40 kPa. Sobald ein bißchen Volumen für die Luft da ist (5 m sind bei einer 6 mm-Leitung schon 1 1/2 doppelte Schnäpse und die Wassersäule stellt ja auch eine Feder dar), sollten sich die von den Magnetventilen verursachten Druckimpulse bei dieser Kombi vertun.
... und die Wassersäule stellt ja auch eine Feder dar
Bei einem Kompressionsmodul des Wassers von 2,08 GPa von "Feder" zu sprechen, ist etwas - gewöhnungsbedürftig. Das ist ein Faktor 15000 steifer als Luft.
Stimmt, ich habe mich nicht korrekt ausgedrückt. Aber das Wasser ist ja nicht eingesperrt, es vermittelt somit den äußeren Luftdruck auf das Schlauchinnere. Insofern werden Druckimpulse stärker gedämpft, als dies in einem abgeschlossenen Volumen der Fall wäre.
Hi Rainer, Danke für's durch schauen. Richtig F1/D1 im Schaltplan und
auf der Platine bitte vergessen -> Mein Fehler. Frage mich selbst, wie
ich das übersehen konnte.
Dem perfekten Designer ist es erlaubt den ersten Stein im gläsernen Büro zu werfen;-)
Zum Thema Burst Pressure kann ich leider nicht viel beitragen. Mein
Anliegen war, das Projekt zum Nachbauen erstmal recht einfach
aufzubauen. Ich habe auf der Platine seitlich ein paar GPIO und GND's
heraus geführt um einfach einen weiteren MOSFET oder ähnliches
anschließen zu können.
In Deinem Fall besteht da keine Gefahr, weil der Sensor ziemlich viel Abstand zur Pumpleistung hat..
Das Thema von Reiner: Druckwellen halte ich für relevanter.
Druckwellen/Stöße durch Ventile und die Membranpumpe selbst. Im Test
(ohne den 5m langen Schlauch) konnte ich auf einem präzisen Manometer
starke Stöße der Membranpumpe erkennen. Aus sorge über eine
"Dauer-Belastung" des Sensors habe ich einen kleinen Drucktank in der
nähe des Sensors platziert und konnte die Stöße damit sehr stark
dämpfen. In der Test-Phase mit angeschlossenen Brunnen (mit 5m langen
4mm PE Schlauch) waren die Stöße auch ohne Drucktank nicht meßbar.
Druckwellenprobleme sind bei mir noch nie vorgekommen und kann da nicht viel beitragen. Bei mir funktioniert es ohne besondere Anomalien. Bei mir fiel nur die Pumpe wegen einer schlechten Crimp Verbindung aus.
Anbei Fotos des Gehäuse-Baus im Steam punk style, da ich in Absprache
mit anderen Benutzern der Werkstatt (da wird das Gerät dauerhaft im
Einsatz sein) kein größeres Gehäuse benutzen durfte. Leider habe ich nun
im System eine starke Undichtigkeit. :(
Sieht "abenteuerlich" aus mit dem Pneumo-Anhängseln. Das ePaper Display sieht Klasse aus. Perfekt für diese Anwendung. Fuerchte nur, der zugehörige Display Treiber Code waere für einen AVR etwas zu anspruchsvoll.
Aber das Wasser ist ja nicht eingesperrt, es vermittelt somit den
äußeren Luftdruck auf das Schlauchinnere. Insofern werden Druckimpulse
stärker gedämpft, als dies in einem abgeschlossenen Volumen der Fall
wäre.
Das gilt für vergleichsweise langsame Druckpulse. Damit ein Druckausgleich über das offene Ende statt finden kann, muss die ganze Wassersäule beschleunigt werden, d.h. das System stellt einen Tiefpass dar. Für harte Pulse (hohe Frequenzanteile) steht die Wassersäule fest.
Das sollte die peristaltischen Pumpe verhindern.
Um weitere Druckwellen vom Sensor fernzuhalten würde ich einen Schalldämpfer für Druckluft zwischen Pumpe und Sensor verbauen.
Was besitzt so ein Ding für ein Übertragungsverhalten?
So ein Schalldämpfer stellt einen kompakten Strömungswiderstand dar, d.h. die Wirksamkeit hängt auch wieder an der Größe des Luftvolumens hinter dem Filter.
Schöner Ansatz, 2,5cm Genauigkeit bei 5m Messtiefe sind schon sehr ordentlich!
Mal eine Rückfrage, warum verwendest du einen 16Bit MCP3426A0 ADC: genügt dir nicht der interne 12Bit (real 10 Bit) ADC des Pico?
Hatte vor wenigen Jahren nachträglich eine Tankfüllstandsanzeige für ein Motorboot nach dem Einperlverfahren gebaut: funktioniert, nachdem zwei andere Ansätze scheiterten.
Letztlich mit einem NXP-Drucksensor aus der gleichen Familie wie deiner ausgestattet, nachdem ein benzinfester China-Drucksensor nach einiger Zeit wegdriftete. Die Kraftstoffresistenz brauchte ich gar nicht.
Was besitzt so ein Ding für ein Übertragungsverhalten?
Da gibts wohl keine Angaben. Ausser: "Ich hab mal reingepustet" :-)
So ein Schalldämpfer stellt einen kompakten Strömungswiderstand dar,
d.h. die Wirksamkeit hängt auch wieder an der Größe des Luftvolumens
hinter dem Filter.
Ja.
Nur dass wir uns richtig verstehen:
In den Raum zwischen Filter und Sensor bläst die Pumpe nicht rein.
D.h. man kann durch Anpassung des Volumens die Druckänderung "beliebig träge" machen. Langsamer als die Druckänderung im Füllstandsrohr sollte sie natürlich nicht sein.
Auf dem Weg, das Projekt nachzubauen, habe ich mit Hilfe von ChatGPT eine Anpassung an die aktuell erhältliche V2-Version / Rev. 2.1 des 2,9" e-Paper-Displays vorgenommen, die ich hier für evtl. Interessenten zur Verfügung stelle.
Die Datei muß in "epd_driver.py" umbenannt und - z.B. mit Thonny - in das Wurzelverzeichnis des Pico kopiert werden.
Gruß Micha
Um bei meinem Nachbau eine geschlossene Außenhülle der Vor-Ort-Box zu erreichen, habe ich in einen Deckelausschnitt eine Blende mit Klarsichtscheibe mit passender Befestigung für das 2,9 inch-Display eingeklebt.
Das entsprechende .stl-File für die Blende gibt es anliegend für evtl. Nachbauwillige. Man benötigt noch 4 Stück M2-Einschmelzmuttern und ein kleines Stückchen klares Acrylglas.
Schnell begeistert von dem Projekt habe ich nun meinen Nachbau funktionsfähig und möchte ihn hier vorstellen.
Bei mir geht es um die Füllstandsmessung in einer Zisterne, der Stand kann maximal etwas über einen Meter betragen. Ich habe daher einen MPX2010DP-Sensor verbaut, der den entsprechenden Differenzdruck bedeutend besser auflöst, als der MPX2050DP. Mit einem R6 von 1,65 kΩ und einer Sensorspannung von 8,5 V statt 10 V (bzw. 9 V) kam ich auf eine Verstärkung von ca. 61,6 bei guter Ausnutzung der möglichen Aussteuerung. Ohne weitere Kalibrierung paßten die Werte nach Anpassung der config.py sofort auf einen Zentimeter genau, einzig ein absoluter Offset für die Position der Ausströmbohrungen des Endstückes mußte noch hinzugefügt werden. Als Endstück habe ich einige gerade vorhandene Fittinge verschraubt, für ein "sanftes" Ausströmen rundum seitlich angebohrt und unten offen gelassen.
Da ich bereits ein Openhab-System betreibe, sollten die Werte natürlich dorthin übertragen werden. Aufgrund der dort vorhandenen REST-API war aber die Anpassung des Codes nicht zu schwierig. Der Header ist in diesem Fall noch mit einem im Openhab erzeugten API-Token zu ergänzen sowie Content-Type- und Accept-Statement anzupassen.
Sehr schön umgesetzt! Auch ist im Inneren Deiner Box ist wesentlich mehr Platz wie bei mir. (Jetzt habe ich heisse Konkurrenz im Bau von hydrostatischen Wassermessern und meine Postion als Platzhirsch auf dem Gebiet ist wahrscheinlich knapp bemessen;-) )
Was die Wahl von Magnetventilen betrifft, gilt es übrigens etwas Vorsicht zu üben und Beschreibungen genau zu studieren, weil es Gattungen ähnlicher M.V. gibt deren Innereien nur mit genug Gegendruck korrekt funktionieren. Deine gewählten haben aber glücklicherweise Null as Mindestdruck angegeben. Bei den Schnellverbindern ist es übrigens sehr wichtig die Schlauchenden sorgfältig mit einem scharfen Messer plan zu präparieren damit sich die End-Dichtungsflächen mit den Schlauchenden sauber ohne Leckgefahr andrücken können.
Hallo Gerhard,
zum Platzhirsch ist, wie der Name schon sagt, noch Platz, sei also ganz beruhigt. :-D
Danke für Deine Hinweise, gerade mit dem Abschneiden der Schläuche entsteht sehr leicht eine Kante an der Stirnfläche. Ich hoffe, daß die gute Passung am Umfang und niedrige Leckraten verbunden mit kurzen Zeiten den auftretenden Fehler gering halten.
Ich möchte nun als weiteren Schritt noch die Entlüftungsöffnung nach außen verlegen. Außerdem mache ich mir Gedanken über die Unterbringung des Netzteils, ggfs. stört es in der Box doch zu stark, das muß ich noch herausfinden.
Hallo Gerhard,
zum Platzhirsch ist, wie der Name schon sagt, noch Platz, sei also ganz
beruhigt. :-D
Da hast Du recht;-)
Danke für Deine Hinweise, gerade mit dem Abschneiden der Schläuche
entsteht sehr leicht eine Kante an der Stirnfläche. Ich hoffe, daß die
gute Passung am Umfang und niedrige Leckraten verbunden mit kurzen
Zeiten den auftretenden Fehler gering halten.
Für das Präperieren von solchen Schlauchenden und Flachbandkabel verwende ich mit sehr guten Erfolg den gezeigten Abschneider. Man kann auf einer Seite noch einen Aluwinkel anbringen. Wenn man das macht sind die abgeschnittenen Enden absolut plan und rechtwinklig.
Ich möchte nun als weiteren Schritt noch die Entlüftungsöffnung nach
außen verlegen. Außerdem mache ich mir Gedanken über die Unterbringung
des Netzteils, ggfs. stört es in der Box doch zu stark, das muß ich noch
herausfinden.
Da gilt ausprobieren. Bei mir funktionieren konventionelle Trafoadapter oder deren SMPS Cousinen. Ich würde es in etwas Abstand von der Elektronik einbauen. Vermutlich wird es ohne Probleme funktionieren solange der Ripple die Funktion der Elektronik nicht beeinflusst. Gegen direkte EMC und Funk kommt man nur durch Testen zu eindeutigen Ergebnissen. Vermutlich wird es wegen des grossen Frequenzabstands keine Probleme geben.