1-Wire Tank-Level-Sensor

Begonnen von dougie, 14 Januar 2013, 09:30:47

Vorheriges Thema - Nächstes Thema

dougie

Moin,

ich hab's dann doch getan und am Wochenende die Ätze wieder aufgebaut.
Dabei raus gekommen ist ein 1-Wire Tank Level Sensor, der mir den Füllstand meines Heizöl-Tanks melden soll.
Auf der Platine ist ein DS2450 4-Kanal AD-Wandler und ein DS2413 2-Kanal IO Device.

Funktion:

Mit einem Kanal des DS2413 wird über einen Optokoppler ein Relais geschaltet, mit dem eine Aquariumpumpe in Gang gesetzt wird. Diese bläst Luft in ein dünnes Aluminiumrohr, welches im Öltank bis knapp über dem Boden montiert ist.
Mittels T-Abzweigung misst ein Drucksensor den dann herrschenden Druck, der direkt vom Füllstand des Tanks abhängt. Die Sensorspannung wird mit dem AD-Wandler gemessen und an fhem gesendet.

Um Messfehler auszuschliessen, sind zwei Messungen notwendig: eine bevor man die Pumpe einschaltet (Umgebungs-Luftdruck messen) und eine wenn die Pumpe Luft in den Tank bläst.
Der hochpräzise Sensor liefert eine Spannungsdifferenz von 20mV/kPa und aus der Differenz der beiden Messungen kann ich den Füllstand des Tanks ableiten.

Ich hab leider das falsche Relais layoutet, bzw, das Relais was ich layoutet haben nur noch in der 12V Ausführung im Keller, daher noch nicht fertig.

Ansonsten: der zweite Kanal des DS2413 IO Device ist als General Purpose IO realisiert. er kann sowohl mittels dem zweiten Optokoppler Lasten schalten, als auch als Eingang fungieren.
Die drei freien Kanäle des AD Wandlers sind über 100kOhm Widersände auf Masse gelegt und können -wenn gewünscht- auch andere Messaufgaben durchführen.

Die Optokoppler haben die Funktion, die nachfolgende Schaltung unabhängig von der Busspannung zu machen (3,3V und 5V möglich).

Ist alles noch im Entwurf und Änderungen noch möglich, aber die Devices werden erkannt und ich werde mal ein kurzes Programm versuchen zu schreiben, mit dem man eine automatische Messung durchführen kann.

Todo: passendes Relais und noch ne Aquariumpume kaufen, weil sonst funktioniert die Ätzanlage nicht mehr :-)

VG
Ralf



(siehe Anhang / see attachement)



Tobias

Hi Ralf,
Frage: statt das Konstrukt mit der Aquarienpumpe, hätte man auch einen Differenzdrucksensor nehmen können?
http://www.conrad.de/ce/de/product/185523/Spezial-Differenzdrucksensor-MPX-2010-DP-Freescale-MPX-2010-DP-0-10-kPa-10-16-VDC
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

dougie



Moin Tobias,

prinzipiell ja, aber :-)

Der von dir gezeigte hat ein paar Nachteile: er kann nur bis maximal 10kPa und will eine hohe Versorgungsspannung.

Das Ding von mir läuft mit 5V, liefert somit eine für den AD Wandler kompatible Ausgangspannung, kann alles zwischen 20 und 250kPa (also von fast Vakuum bis 1,5bar Druck) und vor allem: ich hab von den Dnigern reichlich im Keller :-)

Meine Messeinrichtung läuft seit letztem Wochenende und du kommst mir nur einen Moment zuvor. Ich muss noch ein paar Änderungen im Messprogramm machen, dann wollte ich die Ergebnisse vorstellen.

VG
Ralf


ntruchsess

ich hab mir zum gleichen Zweck von eBay einen MPX5100 geholt (inkl. Versand aus England ca. 12EUR).
http://www.ebay.de/itm/Drucksensor-MPX5100DP-0-1-0bar-MPX-5100-DP-/160943703255
Ist ein Differenzdrucksensor, kann 100kPa messen, hält bis 400kPa aus und läuft mit 5V.
Reicht also um bis ca. 12m Füllhöhe den Ölstand zu messen. Bei kleineren Füllhöhen (so eine billig-Aquariumspumpe schafft eh nicht mehr als 1,5m) passt die Ausgangsspannung halt nicht perfekt zum Messbereich der üblichen A/D-wandler, allerdings reicht eine A/D-Wandler Auflösung von z.B. 12Bit auch ohne Verstärkung aus um eine rechnerische Messgenauigkeit im mm-Bereich zu erreichen.

Gruß,

Norbert
while (!asleep()) {sheep++};

ntruchsess

die Aquariumspumpe braucht man übrigens auch mit einem Differenzdrucksensor, man will ja nicht den Sensor untertauchen, sondern Messen mit welchem Luftdruck man das zu messende flüssige Medium aus einem Rohr verdrängen kann. Der Luftdruck wird daher oben auf das Rohr beaufschlagt, unten perlt beim Messvorgang die überschüssige Luft raus. Einmal aufpumpen und für immer drinlassen wird nicht reichen, da bei fallendem Flüssigkeitsspiegel (oder fallendem Umgebungsluftdruck) Luft aus dem Rohr unten entweicht, so dass bei steigendem Druck die Flüssigkeit unten in das Rohr eindringen kann und ein niedrigerer Druck gemessen wird.

Mit dem Differenzdrucksensor erspart man sich den Umgebungsluftdruck separat zu messen. Wenn man das mit so einem Absolutdruckmesser und 2 Messungen macht, dann muss man sicherstellen bei der Umgebungsdruckmessung den Sensor gegenüber der Umgebung tatsächlich offen zu haben (einfach die Pumpe abstellen reicht nur, wenn die im abgestellten Zustand wirklich offen ist, also kein Ventil enthält, was den Rückfluss der Luft hemmt). Ansonsten handelt man sich einen ziemlich hohen systematischen Fehler ein. Also wenn man nicht noch zufällig ein Pneumatikventil zum Belüften des Sensors im Keller findet ist der Differenzdrucksensor sicher die preiswertere Alternative.

Gruß,

Norbert
while (!asleep()) {sheep++};

dougie


Ich messe hier ja schon einige Tage. Das Problem ist, das du nie wirklich statische Werte hast. Wenn draussen der Wind weht, ändert sich dein Umgebungsluftdruck permanent.

In meine Rechnung fliessen derzeit Umgebungsdruck, Prüfdruck und die Sensor-Versorgungsspannung ein. Dennoch gibt es immer noch reichlich Schwankungen. Ich mittle derweil über 5 Messungen. Also 5* Umgebungsdruck messen und mitteln. Dann Pumpe an und nach 30 Sek 5* Prüfdruck messen. Differenz bilden und interpolieren. Komme derzeit auf so etwa +/- 50L bei nem Tank mit 4500L Kapazität

ntruchsess

eben, genau dass ist der Punkt. Wenn man einen Differenzdrucksensor benutzt, dann hebt sich der Einfluss des Umgebungsdrucks schon bei der Messung selbst auf. Mann muss nur dafür sorgen, dass der zweite Anschluss des Sensors wirklich mit dem Druck beaufschlagt wird, der auch auf die Flüssigkeitssäule wirkt. Dafür braucht man nur ein zweites Messröhrchen in den Tank führen das oberhalb des Flüssigkeitsspiegels endet.

Gruß,

Norbert
while (!asleep()) {sheep++};

dougie


Hi Norbert,

bin gespannt, ob das bei dir genauer ausfällt. Bin noch nicht wirklich glücklich mit der Streuung meiner Messwerte.

Generell sollte die Funktion mit f(x)=ax+b abbildbar sein. Was ich noch nicht weiss: ob die Viskosität (Wintertemperatur / Sommertemperatur) im Heizölkeller einen merklichen Einfluss haben wird.


VG
Ralf

ntruchsess

ich bin auch mal gespannt, bisher läuft das nur prototypisch - zum Einbauen in den Tank muss ich erst mal einen der 2" Stopfen durchbohren oder mir was besseres einfallen lassen um eine geeignete Öffnung oben in den Tank zu machen. Diese Woche wird das nix mehr und dann bin ich erst mal eine Woche in den Faschingsferien.

Die Temperaturabhängigkeit der Viskosität von Heizöl sollte bei der Messung keine Rolle spielen, so zäh, dass die Flüssigkeitssäule im Messröhrchen nicht mehr verdrängt werden würde wird das Heizöl sicher nicht. (Oder willst Du Deinen Keller auf -40°C abkühlen lassen?)

Die Wärmeausdehnung des Öls spielt aber tatsächlich rein - das Öl dehnt sich mit steigender Temperatur ja aus. D.h. die Messung wird dadurch nicht ungenau - der Tank ist bei höherer Temperatur ja tatsächlich voller als in der Kälte - der Heizwert der verbleibenden Menge ändert sich dadurch allerdings nicht. Die Tankwägen berücksichtigen die Temperatur beim betanken übrigens und rechnen die getankte Menge immer in das Volumen bei (ich glaube) 20°C um. Deshalb geht im Winter auch mehr (auf 20°C umgerechnetes) Volumen in den Tank als im Sommer.

Wenn man wissen will, wie viel Heizenergie noch im Tank ist, dann muss man das berücksichtigen und noch einen Temperatursensor im/am Tank anbringen. Interessiert einen nur das Volumen, dann nicht ;-)

Gruß,

Norbert
while (!asleep()) {sheep++};

dougie

...hier mal ein Snapshot, was ich mit der Aquariumpumpe/Drucksensor Methode in der Lage war aufzuzeichnen.

Das hier ist der Verlauf im Februar.


(siehe Anhang / see attachement)

HoTi

Hallo zusammen,

wie schaut es den hier bei euch aus?
Auf der Suche nach einer Möglichkeit die Füllung von meinen Tanks zu beurteilen (Derzeit mit einem Holzgliedermaßstab Metrischer Einteilung) bin ich auf dieses Thema gestoßen und fand das ganz interessant.

Würde das gerne nachbauen. Mit einem Arduino Messen und mit Fermata dann ab zum Raspi mit FHEM.

Viele Grüße
Tim


Viele Grüße aus  Oberbayern
Tim (RettungsTim)

Tobias

Der hier ist besser... Den gab es aber zu diesem Zeitpunkt noch nicht....
http://www.vegetronix.com/Products/AquaPlumb/
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

HoTi

#12
Zitat von: Tobias am 26 August 2014, 14:12:52
Der hier ist besser... Den gab es aber zu diesem Zeitpunkt noch nicht....
http://www.vegetronix.com/Products/AquaPlumb/

In Heizungsöl??

Und 150€ inkl Versand ist schon etwas heftig. Da gefiel mir die Bastelvariante besser. :-\
Viele Grüße aus  Oberbayern
Tim (RettungsTim)