Zisternenfüllstandsmessung mit Time Of Flight-Sensor

Mit Version 1028 der Software zur Messung des Zisternenfüllstandes, kommt neben dem HC-SR04 Ultraschallsensor noch ein zweiter alternativer zu nutzender Sensor dazu. Diesmal ein Time Of Flight (ToF) Laser-Entfernungsmesser vom Typ VL53L0XV2. Die erste Version der Software ist allerdings noch Beta und ich würde mich auf Rückmeldungen zu dem neuen Sensor freuen!

In der Webseite der Software kann in den Einstellungen zwischen den beiden Sensoren gewählt werden. Neu ist zudem noch der frei wählbare Name für den Sensor welcher auf der Sensor-Webseite oben links angezeigt wird. Hiermit kann man nun beim Einsatz mehrerer Sensoren in verschiedenen Zisternen unterscheiden oder auch einen Öltank-Füllstandssensor korrekt benennen.

Der ToF-Sensor besitzt eine I2C-Schnittstelle und wird an die gleichen PINs wie der Ultraschallsensor angeschlossen. Es geht aber nicht mit beiden Sensoren parallel, sondern nur der eine oder der andere!

Der ToF-Sensor wird wie folgt angeschlossen:

D1SCL
D2SDA
3,3-5VVCC
MasseGND

Die beiden übrigen Anschlüsse bleiben frei.

Hier gibt es die neue Version zum Download:
http://www.bubux.de/heimautomatisierung/ota/zisterne_1028.bin

Hier findet ihr die vorherigen Artikel zur Zisterne mit den grundlegenden Anleitungen und Anschlussschema.

Gruß
Chris

39 Gedanken zu „Zisternenfüllstandsmessung mit Time Of Flight-Sensor

  • 17. April 2021 um 09:25
    Permalink

    vielen Dank das du nun diese Version veröffentlicht hast. Der Sensor wird bei mir in 4 Regentonnen (50 x 33 x 177 cm) verwendet und verrichtet dort seine Dienst. Er funktioniert sehr gut. Das gute an den Sensor ist,das er einen sehr geringen Öffnungswinkel hat und man somit auch schmale Behälter, wie in meinen Fall die Regentonnen, sehr gut den Füllstand überwachen kann. Ein “Nachteil” ist aber, das man “Nur” bis ca.2 Meter messen kann. Es gibt zwar auch Flightsensoren wo man tiefer messen kann, sind dann aber teurer. Für sehr viele Anwendungen ist er aber hervorragend geeignet wie z.B. Regentonnen, Zisternen oder die sehr oft verwendeten IBC Tanks und auch die meisten Öltanks. Ich habe bei mir aber auf die Wasseroberfläche der Regentonne ein Stück Styroporplatte (von einer Deckenplatte ca. 5 mm stark) aufgelegt, so vermeidet man Reflexionen des Wassers und es wird dann Richtig gemessen. Fehlmessungen gibt es nun fast gar keine mehr. Was nun noch fehlt wäre die Integration eines DS18B20 Sensors um auch die Temperatur von Flüssigkeiten zu messen. Dieser ist Wasserdicht und für Flüssigkeiten sehr gut geeignet, was die anderen Sensoren (DHT22 oder BME280) ja nicht sind. Ansonsten Top Arbeit von Dir. Vielen Dank für die Öffentliche Bereitstellung von Dir.
    LG
    Harald

    Antwort
  • 17. April 2021 um 09:50
    Permalink

    Habe noch eine Frage zu der Option “OverTheAir Update” funktioniert die ohne Bekanntgabe der MAC Adresse? Wie lange dauert es, bis er das Update heruntergeladen wird? Muss man den NodeMCU manuell neu starten?

    Ich möchte NodeMCU in den Tank zusammen mit dem HC-SR04 unterbringen und dieses Vergiessen. Dann ist das Update per USB nicht mehr möglich.

    Grüsse Philipp

    Antwort
  • 18. April 2021 um 17:52
    Permalink

    Hallo Christopher,

    ich haette auch grosses Interesse am ino – zwecks Debugging: ich
    habe scheinbar irgendwie eine falsche Version von AJ-SR04/JSN-SR04
    erwischt. Der startet nicht [LED auf dem SR04board bleibt off]
    (bei isoliertem Test-code in der gleichen Verdrahtung funktioniert er aber …).
    Ich habe auch alle moeglichen aelteren Versionen von der zisterne-bin probiert.

    Und der DS18B20 staende bei mir auch auf der Ideenliste!

    Besten Dank, sowieso grosses Lob
    und viele Gruesse aus Belgien,
    Renatus

    Antwort
  • 27. Mai 2021 um 15:41
    Permalink

    Hi,
    erstmal ein fettes Lob für die super Anleitung und das Zisternenprogramm!
    Ich habe bei diesem Sensor allerdings das Problem, dass er mir in der Zisterne keine korrekten Werte ausgibt.
    Meine Zisterne ist ein 150x100cm Kasten, ca 170cm tief ausgekleidet mit Teichfolie.
    Obwohl zur Wasseroberfläche noch ca. 1m Abstand ist werden mir Werte von 6-9cm Abstand ausgegeben.
    Wenn ich den Sensor gegenüber einer Wand, z.B. mit Tapete teste, werden korrekte Werte ausgegeben. Hat jemand ne Idee, wo das Problem liegt?
    Eine Polystorolplatte auf dem Wasser habe ich auch schon probiert, aber die Werte verändern sich nicht.

    Antwort
    • 5. Juni 2021 um 11:04
      Permalink

      Hallo Thorti,

      mangels Erfahrung mit dem ToF-Sensor im “echten” Einsatz, kann ich Dir da leider erstmal auch nicht helfen. Von anderen hab ich aber gehört, dass es funktioniert.
      Hast Du den Sensor senkrecht zur Wasseroberfläche ausgerichtet?

      Gruß
      Chris

      Antwort
  • 7. Juni 2021 um 08:36
    Permalink

    Hallo Chris,

    Super Projekt und tolle Anleitung, folgendes,
    könnte ich die .ino Datei haben, ein Freund möchte gerne eine Pumpe mit Taster ansteuern um Wasser abzupumpen mit Abschaltung bei erreichen der min. Menge.
    Das würde mir sehr weiterhelfen.
    Vielen Dank

    Gruß Oli

    Antwort
  • 15. September 2021 um 18:49
    Permalink

    Hi Chris,

    hab mir den VL53L0XV2 geholt, da meine Tanköffnung etwas eng ist und ich mit dem SR04 Reflexionen hatte. Ich bekommen mit dem VL53L0XV2 aber keine brauchbaren Ergebnisse. Hab insgesamt 3 verschiedene ESP8266 – Boards getestet.

    Ich habe zwei IBC-Tanks, Grundfläche 120x180cm, 108cm Sensor/Boden und ich bekomme folgende Werte:

    – Füllstand = -3881%
    – Volumen = -90525l von 2332l
    – Abstand Wasser = 4299cm

    Die Werte sind bei allen ESP8266 – Boards identisch falsch 🙁

    Grüße
    Klaus

    Antwort
    • 27. September 2021 um 09:29
      Permalink

      Hallo Klaus,

      ich werde mir das nochmal anschauen. Bei meinen Tests hat der ToF-Sensor ganz gut funktioniert.
      Allerdings setzte ich ihn selber nicht produktiv ein.

      Gruß
      Chris

      Antwort
  • 28. September 2021 um 10:16
    Permalink

    Hallo Chris,
    ich habe leider auch mit dem VL53L0X und VL53L1 mit Deinem Programm keine Ergebnisse erzielt. Den VL53L1 habe ich am ESP8266 mit entsprechender Bibliothek zum laufen gebracht, aber nicht mit Deinem Programm.
    Zur Problemstellung: ich messe in einer BetonZisterne H270 cm ; Durchmesser 100 cm
    Mit dem Wasserdichten JSN-SR04T habe ich aufgrund dessen breiten Erfassungswinkels keine vernünftigen Ergebnisse erzielen können. Dieser Sensor eignet sich meines Erachtens nur bei eher breite und flachen Zisternen.
    Ich habe nun nach Lektüre der Tipps hier ein DN110 Regenwasserfallrohr 250 cm lang in die Zisterne gestellt. Oben auf das Fallrohr einen DN125 KG Deckel gelegt. In diesen habe ich die 2 Löcher für den HC-SR04 gebohrt und eine Gummi-Verteilerdose aufgeklebt und mit der Klebepistole die Löcher angedichtet.
    Damit sind die Messergebnisse nun zuverlässig. Mal schauen wie lange der HC-SR04 hält.
    Gruß
    Rainer

    Antwort
    • 14. November 2021 um 13:46
      Permalink

      Hallo Rainer,
      bin auch gerade am überlegen eine Füllstandsanzeige für eine gerade verbuddelte Zisterne mit diesem Tool hier zu realisieren.
      Wo genau hast du die Tipps mit dem separaten Fallrohr für den HC-SR04 gelesen?
      Eigentlich interessierte mich die Verwendung des ToF, weil einige hier von den zuverlässigeren Messergebnissen wegen des kleineren Öffnungswinkels sprechen.
      Wie ist deine Erfahrung? Sollte ich von Anfang an auf den Ultraschallsensor und ein separates Rohr setzen oder lohnt der Versuch mit dem ToF?
      Hast du schon ein paar Erfahrungen zur Haltbarkeit des Ultraschall-Sensors im Tank sammeln können?
      Wie zuverlässig funktioniert das Messen auf der Wasseroberfläche mit Ultraschall bzw. Laserlicht? Manche schreiben, transparente Flüssigkeiten lassen sich damit nicht gut messen, weil sie kein reflektierendes Hindernis darstellen.
      Ist es erforderlich im Messbereich etwas auf die Wasseroberfläche zu legen, quasi als sichtbaren Schwimmer, den der Sensor verfolgen kann oder lässt sich tatsächlich direkt auf die Wasseroberfläche messen?

      Antwort
  • 3. Dezember 2021 um 15:51
    Permalink

    Ich habe mir auch einen ToF bestellt und probiere es mal aus.
    Leider ist der SR04 in meiner Installation sehr anfällig für kondensation und steigt regelmäßig aus.
    Welche Funktion hatte nochmal der Taster?
    Ist es möglich diesen durch einen Schwimmerschalter zu ersetzen bzw. zusätzlich zu installieren? Den würde ich dann als Kontakt für einen Max füllstandswarner nutzen, falls der Sensor ausfällt….um in diesem Fall einen Alarm auszugeben.

    Antwort
    • 3. Dezember 2021 um 18:00
      Permalink

      .. also bei mir funktioniert der ToF leider nicht, der zeigt Werte jenseits von Gut und Böse 🙁

      Antwort
      • 30. Dezember 2021 um 18:23
        Permalink

        Hallo Klaus,

        tut mir leid das es bei Dir nicht funktioniert. Bei meinen Tests hat es einwandfrei funktioniert. Ich werde es aber nochmal testen.

        Gruß Chris

        Antwort
        • 8. Januar 2022 um 13:34
          Permalink

          Hallo Klaus,

          hast Du ein Display angeschlossen? Da gibt es mit dem ToF-Sensor evtl. ein Problem mit dem I2C. Hab das gerade bei der Implmentierung des VL53L1X gemerkt…

          Gruß
          Chris

          Antwort
          • 8. Januar 2022 um 13:56
            Permalink

            Hi Chris,
            was für ein Problem meinst du bei Display und Sensor?
            Adresskonflikt auf dem Bus? Bei mir haben die Breakouts beider Sensoren VL53L0X und VL53L1X die gleiche Busadresse (0x29).
            Der VL53L0X funktioniert mit parallelem I2C-Display.
            Oder sprichst du hier noch von einem anderen Problem beim verwenden von Display und VL53L1X?

          • 8. Januar 2022 um 14:51
            Permalink

            Hallo Michael,

            Mein Fehler…alles gut. ESP musste zwischendrin mal von Strom getrennt werden. Nun geht’s.

            Gruß Chris

          • 8. Januar 2022 um 20:45
            Permalink

            Hattest du auch das Phänomen, dass der ESP beim Anschluss eines VL53L1X am I2C Bus plötzlich nicht mehr booten wollte?
            Bei einem Sensor blieb die MCU vor dem Boot Vorgang stecken und rührte sich nicht mehr. Mit einem VL53L0X in gleicher Konstellation war das Verhalten nicht. Da lief alles, auch zusammen mit einem Display (aktuell mit einem SH1106 werde es aber auch nochmal mit nem SSD1306 probieren, wobei das eigentlich nichts mit dem Display zu tun haben sollte). Dachte vielleicht du hast sowas Ähnliches erlebt.
            Strom weg half bei mir nix.
            Hab den Sensor mal beim Händler moniert. Vielleicht hat der auch ne Macke.

          • 8. Januar 2022 um 14:41
            Permalink

            Hallo Chris,

            nein – ich schicke die Daten per MQTT an meinen Loxone Miniserver

            Grüße
            Klaus

          • 8. Januar 2022 um 14:50
            Permalink

            Hallo Klaus,

            ich bin das gerade nochmal am testen und den VL53L1X am implementieren. Dachte es gäbe irgend einen Stress auf dem Bus mit einem parallelen Display. Ist aber nicht so und der VL53L1X geht nun auch. Was ich aber gemerkt habe ist, dass der ESP vom Strom getrennt werden muss beim Wechsel des Sensors. Davor hatte ich auch nur seltsame Werte. Hast Du aber wahrscheinlich schon gemacht, oder?
            Bin jedenfalls noch dran und vielleicht finde ich ja noch was. Jetzt erstmal Biathlon…

            Gruß Chris

    • 30. Dezember 2021 um 13:57
      Permalink

      Habe auch gerade einen SR04 ausgebaut – völlig verrostet und hätte daher gerne den ToF Sensor verbaut, aber leider funktioniert der bei mir nicht 🙁

      Antwort
      • 30. Dezember 2021 um 15:10
        Permalink

        Vielleicht mal den ToF Sensor in Verbindung mit einen der ESP Firmwares ESPhome/ESPeasy/Tasmota versuchen. Tasmota beispielsweise unterstützt den VL53L0X und VL53L1 von Haus aus und bringt ihn easy per MQTT ins Netzwerk und das eigene Hausautomationssystem.

        Antwort
        • 30. Dezember 2021 um 18:54
          Permalink

          Das geht wahrscheinlich auch mit ESPeasy & Co. Meine Lösung ist auch primär für diejenigen, die keine Homeautomation-Lösung im Keller haben. MQTT ist nur ein AddOn.

          Gruß Chris

          Antwort
          • 30. Dezember 2021 um 19:02
            Permalink

            Der große Vorteil deiner Lösung ist die einfache Konfiguration der unterschiedlichen Zisternen über eine Weboberfläche. In den anderen Lösungen muss man da natürlich mehr selbst Hand anlegen und auch selbst die Werte berechnen. Das ist schon super, was du da gemacht hast…

  • 29. Dezember 2021 um 17:16
    Permalink

    Hallo,
    wie bei Malte steigt meine Füllstandmessung wegen zu hoher Luftfeuchtigkeit in der Erdzisterne regelmäßig aus.
    Mit dem VL53L0X habe ich bei Dunkelheit eine Reichweite von nur 1,2m erreicht. Das ist zu wenig, ich brauche 2m.
    Für trockene Umgebungen funktioniert es und deine Anzeige ist sehr ansprechend, obwohl ich nur mit MQTT gearbeitet habe.
    Ich habe seit über 15 Jahren in der gleichen Zisterne einen LevelJet, der bis heute immer zuverlässig arbeitet. Dem Ultraschallsensor scheint die Feuchtigkeit nicht zu stören. Leider stellt dieser keine MQTT-Daten zur Verfügung.

    Antwort
    • 30. Dezember 2021 um 10:11
      Permalink

      Wenn man zwingend bei der Ultraschall Variante bleiben will, gäbe es neben dem HC-SR04 noch die wasserdichte Version JSN-SR04T.
      Ist vielleicht einen Versuch wert. Der Sensor hat allerdings eine blinde Zone von ca. 20cm, d. h. es könnte je nach Situation und Zisternentyp eine Montage deutlich oberhalb der Zisterne notwendig sein um den vollen Füllstandsbereich mit dem Sensor zu erfassen.
      Daneben ist natürlich auch klar, dass die ToF Sensoren wesentlich genauer messen als die Ultraschall-Genossen.
      Wenn die Messdistanz beim VL53L0X nicht reichen sollte (max. 200cm), könnte auch ein VL53L1X genutzt werden. Der schafft bis zu 400cm.

      Antwort
      • 30. Dezember 2021 um 18:48
        Permalink

        Hallo Michael

        bei dem ToF hab ich den falschen erwischt. Ist mir auch schon aufgefallen. Ich werde den VL53L1X mal testen. Ist der Anschlussgleich und gleiche Treiber?

        Gruß Chris

        Antwort
        • 30. Dezember 2021 um 19:00
          Permalink

          Der Anschluss ist identisch. Die API soweit ich weiß ist zumindest sehr ähnlich (der Sensor ist vom gleichen Hersteller).
          Wenn ich es richtig gesehen habe, scheint es in Tasmota allerdings zwei verschiedene Driver zu den beiden Modellen zu geben.
          Ich kann das nochmal genau checken, wenn es hilft.

          Antwort
        • 30. Dezember 2021 um 21:24
          Permalink

          Die API der beiden Sensoren ist offenbar nicht komplett identisch.
          Der VL53L1X hat scheinbar weitere Features und Einstellmöglichkeiten (z. B. für ROI und Durchsicht durch Glas und solche Sachen). Die Registeradressen sind nicht die gleichen, wie beim VL53L0X.
          Auf GitHub gibts aber ne Implementierung von ST’s API für die Arduino Plattform. Das könnte hilfreich sein für die Portierung auf den ESP. Damit kennst du dich wahrscheinlich noch deutlich besser aus…
          https://github.com/pololu/vl53l1x-st-api-arduino

          Antwort
    • 30. Dezember 2021 um 19:12
      Permalink

      Hier stehen allerdings >120€ den etwa 10€ inkl. Bastelspaß und mehr Funktionsumfang gegenüber 😉 Wegen dem VL53L1X hab ich Dir ja schon geschrieben.

      Gruß Chris

      Antwort
  • 30. Dezember 2021 um 15:29
    Permalink

    Hallo Chris,
    ist in deinem Sketch für den VL53LOX das Profil “long range” für 2m Messdistanz aktiviert?
    Könnte man mit deinem Sketch auch einen VL53L1X nutzen?
    Grüße
    Ray

    Antwort
    • 30. Dezember 2021 um 19:05
      Permalink

      Hallo Ray,

      das muss ich schauen. Habe aber auch schon gemerkt, dass der VL53L1X die bessere Wahl gewesen wäre. Sensor ist aber schon im Einkaufswagen. Ich melde mich.

      Gruß Chris

      Antwort
      • 30. Dezember 2021 um 22:43
        Permalink

        Der VL53L0X ist nicht pauschal die schlechtere Wahl.
        Bezüglich der Messdistanz wäre die Aktivierung des Long Mode vielleicht schon ausreichend. Zumindest bei Distanzen bis ca. 200-220cm. Für viele Zisternen wäre das schon ok.
        Alles darüber (bis ca. 400cm) wäre dann aber tatsächlich dem VL53L1X vorbehalten.

        Antwort
        • 31. Dezember 2021 um 12:17
          Permalink

          “So ein ESP hat begrenzte Speichermöglichkeiten” , nun das könnte man ja vielleicht mit einen ESP32 realisieren.

          “Da man für,eine zuverlässige Funktion solche Details wie ROI oder Montage hinter Glas sehr genau auf die eigene Situation wird einstellen müssen”

          Ich verstehe leider viel zu wenig von den “Krams” denke aber das man wenn man z.B. das Glas, 2mm Stärke in einen festgelegten Abstand (denke so 3 – 5mm) dann ja eine Bezugsgröße fest hätte. Somit wäre ja dieser Wert fest vorgegeben und könnte so im WebIF übernommen werden. Ob dies allerdings so umsetzbar ist wie ich mir das Vorstelle, kann ich leider mangels Wissens nicht sagen. Aber vielleicht kann ja Chris was dazu sagen. Das Problem mit der Feuchte wäre dann ja Geschichte wenn man hinter Glas messen kann.

          Antwort
          • 2. Januar 2022 um 11:32
            Permalink

            Der Sensor ist bestellt und kommt diese Woche. Ich schaue mir das mal an welche Konfig-Möglichkeiten der Sensor hat und ob und wie ich diese in die WebUI bekomme.

            Gruß Chris

          • 2. Januar 2022 um 12:13
            Permalink

            Vielen Dank und natürlich noch ein Gesundes neues Jahr. Mögest du Erfolg haben.

            Ich habe mir auch mal paar VL53L1X bestellt bei Amazon. Diese haben ja so eine Art Schutzkappe für den Sensor dabei. Vielleicht hilft das ja schon, wenn man ein Wasserdichtes Gehäuse entsprechend bearbeit, die Feuchtigkeit vom Sensor fern zu halten. Bin schon sehr gespannt was du da noch “zauberst”. Wird schon werden und wirklich ein sehr tolles Projekt sein. Wenn man das mit der Haltbarkeit , Stichwort Feuchte, in den Griff bekommt.
            Warte schon gespannt auf deine Ergebnisse. Man kann sich gar nicht genug bedanken bei Dir. D a n k e.

  • 30. Dezember 2021 um 23:41
    Permalink

    “Der VL53L1X hat scheinbar weitere Features und Einstellmöglichkeiten (z. B. für ROI und Durchsicht durch Glas und solche Sachen”

    Das klingt Hoch Interessant. Damit hätte man die Möglichkeit den Sensor und ESP in ein Wasserdichtes Gehäuse zu bauen und braucht dort nur eine kleine Öffnung mit z.B. 2 mm Glas Wasserdicht abzudecken. So geht man sicher das keine Feuchtigkeit mehr den Sensor und ESP beschädigen kann. Bei mir haben sich nämlich ca. nach einen halben Jahr 2 Sensoren verabschiedet da sie Feucht geworden sind. Ansonsten funktionierte die Messung sehr gut in mehreren engen und hohen Regentonnen. (ca. 50 x 30 x 175 cm) Der VL53LOXv2 konnte (zumindest bei mir habe ich es nicht hinbekommen) durch Glas den Abstand messen. Wenn das nun mit dem VL53L1X gehen würde, wäre das ja schonmal Genial.

    Antwort
    • 31. Dezember 2021 um 10:45
      Permalink

      Das Problem ist, dass die Features des Sensors für den jeweiligen Einsatzzweck genau konfiguriert und für die eigene Einbausituation getunt werden müssen. Das passiert über eine recht komplexe API des verwendeten Sensor Chips und recht umfangreiche Parametereinstellumgen. Gilt übrigens für beide Versionen, sowohl dem VL53L0X als auch VL53L1X. Beim VL53L1X ist es noch ein bisschen ausgedehnter.
      Da man für,eine zuverlässige Funktion solche Details wie ROI oder Montage hinter Glas sehr genau auf die eigene Situation wird einstellen müssen, bräuchte man nahezu die komplette API des Sensors herausgeführt auf die Webschnittstelle, die Chris in seiner Lösung bereitgestellt hat. Bin mir nicht sicher ob das überhaupt möglich ist. So ein ESP hat begrenzte Speichermöglichkeiten und Webschnittstellen verbrauchen viel Platz. Zudem wäre es dann nicht mehr ganz so simpel, die Lösung zum Einsatz zu bringen. Vielleicht kann man sich bei den Parametern ausreichend beschränken, so dass es händelbar bleibt. Dazu kann Chris am Ende wohl mehr sagen, was in seiner Lösung möglich ist. Eventuell könnte man spezielle Konfigurationen per Konfigdatei einmalig setzen um das Webinterface nicht zu überfrachten und insgesamt möglichst einfach halten zu können.

      Antwort
  • 11. Januar 2022 um 18:08
    Permalink

    Hallo Chris,
    ich habe den VL53L0XV2 im #define LONG_RANGE und #define HIGH_ACCURACY getestet. 2m Reichweite sind jetzt kein Problem mehr. Vielleicht kannst du deinen Sketch anpassen.

    Antwort
  • Pingback: Zisternenfüllstandsmessung mit Time Of Flight-Sensor (die Zweite mit Version 1029) – bubuxblog

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.