Autor Thema: 1-Wire Tank-Level-Sensor  (Gelesen 10312 mal)

Offline dougie

  • Sr. Member
  • ****
  • Beiträge: 604
    • dougie's tools
1-Wire Tank-Level-Sensor
« am: 14 Januar 2013, 09:30:47 »
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)



Offline Tobias

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3564
Aw: 1-Wire Tank-Level-Sensor
« Antwort #1 am: 25 Januar 2013, 09:16:27 »
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
FHEM auf ASRock J3455-ITX im 19" Rack mit Homematic, MAX, PCA301, Panstamp-Sensoren, RPi mit 2x 1wire, RPi mit Text2Speech.
Maintainer der Module: DbLog, Text2Speech, TrashCal, MediaList
Meine Projekte auf https://github.com/tobiasfaust

Offline dougie

  • Sr. Member
  • ****
  • Beiträge: 604
    • dougie's tools
Aw: 1-Wire Tank-Level-Sensor
« Antwort #2 am: 25 Januar 2013, 09:31:00 »


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


Offline ntruchsess

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1123
    • My code on github...
Aw: 1-Wire Tank-Level-Sensor
« Antwort #3 am: 31 Januar 2013, 16:58:39 »
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++};

Offline ntruchsess

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1123
    • My code on github...
Aw: 1-Wire Tank-Level-Sensor
« Antwort #4 am: 31 Januar 2013, 17:06:57 »
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++};

Offline dougie

  • Sr. Member
  • ****
  • Beiträge: 604
    • dougie's tools
Aw: 1-Wire Tank-Level-Sensor
« Antwort #5 am: 31 Januar 2013, 17:39:46 »

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

Offline ntruchsess

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1123
    • My code on github...
Aw: 1-Wire Tank-Level-Sensor
« Antwort #6 am: 01 Februar 2013, 01:03:24 »
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++};

Offline dougie

  • Sr. Member
  • ****
  • Beiträge: 604
    • dougie's tools
Aw: 1-Wire Tank-Level-Sensor
« Antwort #7 am: 04 Februar 2013, 14:58:11 »

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

Offline ntruchsess

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1123
    • My code on github...
Aw: 1-Wire Tank-Level-Sensor
« Antwort #8 am: 04 Februar 2013, 16:53:33 »
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++};

Offline dougie

  • Sr. Member
  • ****
  • Beiträge: 604
    • dougie's tools
Aw: 1-Wire Tank-Level-Sensor
« Antwort #9 am: 05 März 2013, 08:21:50 »
...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)

Offline HoTi

  • Sr. Member
  • ****
  • Beiträge: 716
  • Automatisierungjunky
Antw:1-Wire Tank-Level-Sensor
« Antwort #10 am: 26 August 2014, 10:17:31 »
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)

Cubian auf Cubitruck (128GB SSD) / FHEM / Arbeite mit Homematic

Offline Tobias

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3564
Antw:1-Wire Tank-Level-Sensor
« Antwort #11 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/
FHEM auf ASRock J3455-ITX im 19" Rack mit Homematic, MAX, PCA301, Panstamp-Sensoren, RPi mit 2x 1wire, RPi mit Text2Speech.
Maintainer der Module: DbLog, Text2Speech, TrashCal, MediaList
Meine Projekte auf https://github.com/tobiasfaust

Offline HoTi

  • Sr. Member
  • ****
  • Beiträge: 716
  • Automatisierungjunky
Antw:1-Wire Tank-Level-Sensor
« Antwort #12 am: 26 August 2014, 14:43:58 »
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. :-\
« Letzte Änderung: 26 August 2014, 14:49:34 von RettungsTim »
Viele Grüße aus  Oberbayern
Tim (RettungsTim)

Cubian auf Cubitruck (128GB SSD) / FHEM / Arbeite mit Homematic

 

decade-submarginal