:) 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:
1. 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.
2. R4/R5 (je 100 Ohm): Schutzwiderstände gegen ESD und kapazitive
Kopplung an den INA333-Eingängen.
3. 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.
4. 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:
1. Digital VBus: 12 V DC Eingang, 5 V Digital (LM2576T), 3,3 V Digital
(LT1963A)
2. Analog VBus: 10 V Analog (R1501J100B LDO), 5 V LDO (MCP1703A)
3. Analogsignalpfad: Sensor - R4/R5 - INA333 - R7 - MCP3426
4. 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:*_
1. Inhalt der pico.zip komplett auf den Pico laden mit
1
mpremoteconnectautofscpDATEI.py:
3. .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
4. 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.
Moin,
tolles Projekt und Ausführung!
Wenn es interessiert:
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:
1) Sensor zur Atmosphere zwecks Sensor-Nullung schalten
2) Erstmalig die Druckleitung mit der Pumpe ausblasen und den Druck
halten bis er sich aus-perlt. Der Sensor ist während des Pumpvorgangs
abgekoppelt.
3) Sensor auf die Druckleitung schalten und beliebig regelmäßig messen
4) 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.
Wenn es Dich interessiert, hier ist mein Bericht (Den Du bestimmt
gesehen hast ;-) ):
Beitrag "Ein Füllstandmesser auf Einperlungsbasis"
Gerhard
Schön zu sehen das KI auch MCs gut programmieren kann.
Sehr schönes Projekt, werde ich wohl nachbauen da ich was ähnliches auch
für meine Zisterne benötige.
Vielen Dank dafür!
Tobias R. schrieb:> Bin mir etwas unsicher, ob daraus lieber ein Artikel werden sollte.
Ideal wäre ein Artikel mit begleitendem (verlinkten) Thread, nämlich
diesem hier.
Vielen Dank Euch für Eure Rückmeldungen. Dann werde ich an einem Artikel
arbeiten und diesen hier im Thread begleiten. :)
Anbei die BOM im html und csv Format. Bei Bedarf, stelle ich hier auch
gerne das KiCAD Projekt oder die Gerber-Files zur Verfügung.
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
Tobias R. schrieb:> 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.
Tobias R. schrieb:> 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?
Gruß Micha
@ 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:
- Brunnen: https://voir.pt/2018/12/08/handmade-water-well-brunnenbau/
- Brunnenkopf: https://voir.pt/2021/01/30/dn-150-brunnenkopf/
@ 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.
- dicht: um Druck stabil zu halten
Verwendete Bauteile:
- Pumpe: LP27-12
(https://www.pollin.de/p/daypower-luftpumpe-lp27-12-12-v-330068)
- 2 x Ventile: Heschen pneumatisches Magnetventil 2V025-08 12VDC PT1/4
2/2-Wege normal geschlossen (leider Amazon)
- Loctite 542 Gewindedichtung oder Loctite 243 (mittelfest)
Netzteil:
- externes Laptop Netzteil: 12V 2A (gemessene max. Leistung 12V 0,74A)
Verschaltung der Aktoren:
- 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:
1) 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.
2) 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".
3) Pumpe schaltet ab. Ventil 2 schließt.
4) Der nun anliegende Druck am Sensor stellt den Druck der Wassersäule
dar -> Es erfolgen mehrere Messungen. (siehe Code und Beschreibung oben)
Hallo Tobias,
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,
Gerhard
Hi Gerhard,
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.
Hallo Tobias,
Eigentlich toll, einen Mitstreiter auf diesen Gebiet kennen gelernt zu
haben.
Tobias R. schrieb:> Hi Gerhard,>> 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.
Gruß,
Gerhard
Frank D. schrieb:> Wieso nicht per Ultraschall? Dann fällt das anfällige Schlauch> ganze> Pumpengeraffel weg.
Ich hatte zwei Jahre US für ein ähnliches Projekt.
Bin dann ebenfalls auf "einblubbern" umgestiegen.
US ist anfällig und ungenau.
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?
Nick schrieb:> 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.
https://www.nxp.com/docs/en/data-sheet/MPXV4006.pdf
(Leider gibt NXP keinen Burst Pressure an)
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.
Gerhard O. schrieb:> 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]
Tobias R. schrieb:> Gebt mir gerne Anmerkungen zum Projekt. Bestimmt habt Ihr Ideen, was> verbessert werden könnte.
Sehr schönes Projekt.
Zwei kleine Anmerkung zum Schaltplan:
1. F1 vor dem Schaltregler wird Probleme machen.
2. Die Ansteuerungen für Pumpe und Ventil stehen auf dem Kopf 😉
Nick schrieb:> Gerhard O. schrieb:>> 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.
Das wären momentan meine Gedanken dazu.
Gerhard
Gerhard O. schrieb:> 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.
Gerhard O. schrieb:> 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.
Gruß Micha
Michael K. schrieb:> ... 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.
Wenn da etwas federt, ist das der Schlauch.
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.
Tobias R. schrieb:> 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.
Michael K. schrieb:> 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.
Tobias R. schrieb:> Druckwellen halte ich für relevanter.
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.
So was in der Art, die sind recht kompakt:
https://www.druckluft-fachhandel.de/schalldaempfer-m-5-sinterbronze
Nick schrieb:> So was in der Art, die sind recht kompakt:> https://www.druckluft-fachhandel.de/schalldaempfer-m-5-sinterbronze
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.
Beitrag "Benzintank Füllstand mittels Drucksensor"
Foto vom Aufbau, noch mit China-Drucksensor:
https://www.mikrocontroller.net/attachment/587352/8C698443-4301-4D9F-9147-2D1C56DDF838.jpeg
Controller ist ein ATTiny45. 4kByte Code reichten locker aus, fast hätte
es in 2k gepasst.
Es wurde eine kleine Membranpumpe mit separaten Rückschlagventil
benutzt.
Rainer W. schrieb:> 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
Du verballerst unnötigerweise eine Menge RAM.
Wenn du Koordinaten in float übergibst, solltest du über round() anstatt
int() nachdenken.
(›0.99999‹ soll bestimmt eine ›1‹ werden und nicht eine ›0‹)
Ach, gerade gesehen: "mit Hilfe von ChatGPT"
Das erklärt auch die immer noch vorhandenen weiteren Fehler.
Michael K. schrieb:> Das round() findet übergeordnet in der display_ui.py statt, die ist im> pico.zip im ersten Beitrag.
Dann sind all die int() redundant, round() generiert ein int type.
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.
Gruß Micha
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.
Gruß Micha
Hallo Micha,
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.
Gruß,
Gerhard
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.
Gruß Micha
Michael K. schrieb:> 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.
Gruß,
Gerhard
>> Gruß Micha