NEWS
Füllstandsmessung per Pegelsonde.
-
@Atifan
Habe die Teile jetzt mal angeschlossen wie beschrieben.
5V per USB-Ladegerät in das D1 mini Pro.
Von dort 3,3V und Grd zum StepUp Board Vin- und Vin+.
Vom StepUp Board (vorher 24V eingestellt) Vout- und Vout+ zum INA219 an die Stiftleiste Vin- und Vin.
Sda und Scl zum D1 mini Pro an D4 und D5 und dann eingeschalten.INA219 und D1 haben sich daraufhin verabschiedet.
Was habe ich verkehrt gemacht?
Muss an INA219 auch noch 5V und Grd?
An den grünen Block kommt doch der Pegelsensor? Oder habe ich die Kabel falsch angeschlossen?
Bin unten auf die Stiftleiste gegangen mit den Kabeln von 24V.@Superdad Du musst das INA219 auch mit Spannung versorgen, 3.5,5V wird supportet, am besten nimmst du die 3,3V die du schon hast.
Ja an den grünen oder blauen Block kommt der Pegelsensor selbst.
Du hast am INA219 insgesamt 8 PINS die alle belegt sein müssen.

-
@Superdad Du musst das INA219 auch mit Spannung versorgen, 3.5,5V wird supportet, am besten nimmst du die 3,3V die du schon hast.
Ja an den grünen oder blauen Block kommt der Pegelsensor selbst.
Du hast am INA219 insgesamt 8 PINS die alle belegt sein müssen.

-
@Superdad Du musst das INA219 auch mit Spannung versorgen, 3.5,5V wird supportet, am besten nimmst du die 3,3V die du schon hast.
Ja an den grünen oder blauen Block kommt der Pegelsensor selbst.
Du hast am INA219 insgesamt 8 PINS die alle belegt sein müssen.

-
@Atifan Habe jetzt noch einen INA219 fertig gelötet und alles noch einmal zusammen gebaut.
Bevor ich jetzt einschalte noch eine Frage.
Muss der Pegelsensor schon dran sein oder kann ich dann an dem Block noch einmal messen ob 24V anliegen? -
@Atifan Es funktioniert nicht.
Am StepUp Board habe ich 24V und wenn der INA219 verbunden ist mit dem StepUp, bricht der Strom zusammen.
Dann sind es nur noch 0,1V.
Der INA219 fiept auch.
Stecke ich ihn wieder ab, habe ich wieder 24V.
Komisch!
Hatte mir 2 INA219 bestellt.
Entweder sind beide defekt oder ich bin zu dämlich! -
-
@Atifan
Ich habe es jetzt nach Bild2 angeschlossen und es funktioniert!Habe es mit Sonoff Adapter verbunden und alle Werte drin.
Bei mir ist 0cm 0.035A.
Wie rechnest du die Ampere in cm oder Prozent um.@Superdad Alles klar wunderbar.
Bei mir ist 0cm auch 0.035A.
Hast du in der console den Befehl "Sensor13 11" eingegeben? Ja oder?100% genau auf den Milliliter bekommst du es nicht hin, aber bei mir entspricht 0.001A einer Wassersäule von 3,225cm, das sollte bei dir genauso sein, unabhängig vom Radius bzw. vom Durchmesser deiner Zisterne.
Du musst halt schauen was für Behälter du hast und das Volumen berechnen. Hast du einen Zylinder oder ein Rechteck?
Sage mir mal den Durchmesser bzw. Radius deiner Zisterne und die Höhe. Bzw. falls rechteckig die Länge und Breite. -
@Superdad Alles klar wunderbar.
Bei mir ist 0cm auch 0.035A.
Hast du in der console den Befehl "Sensor13 11" eingegeben? Ja oder?100% genau auf den Milliliter bekommst du es nicht hin, aber bei mir entspricht 0.001A einer Wassersäule von 3,225cm, das sollte bei dir genauso sein, unabhängig vom Radius bzw. vom Durchmesser deiner Zisterne.
Du musst halt schauen was für Behälter du hast und das Volumen berechnen. Hast du einen Zylinder oder ein Rechteck?
Sage mir mal den Durchmesser bzw. Radius deiner Zisterne und die Höhe. Bzw. falls rechteckig die Länge und Breite.Bzw. am einfachsten Testen kannst du wenn du die Sonde ins Wasser lässt. 0,5m, 1m usw. und dann schaust wieviel mA dann angezeigt werden.
Wenn du den Sondenkopf 1m ins Wasser steckst, sollte ein Wert von 0,066A angezeigt werden.
Musst du einfach mal testen ob es so ist. -
Bzw. am einfachsten Testen kannst du wenn du die Sonde ins Wasser lässt. 0,5m, 1m usw. und dann schaust wieviel mA dann angezeigt werden.
Wenn du den Sondenkopf 1m ins Wasser steckst, sollte ein Wert von 0,066A angezeigt werden.
Musst du einfach mal testen ob es so ist.@Atifan Ich habe einen Zylinder und Oberkante ist ebenfalls 3m.
Ich versuche mal eine Gleichung in Blockly zu programmieren um dann die Ampere in cm umzurechnen.Ich hatte mich verschrieben.
Bei mir ist 0,032A = 0cm.
Also sollten 3m = 0,125A sein.
Ausgegebener Wert x - 0,032A = Wert y
Wert y : 0,001 = Wert z
Wert z x 3,225 cmDas sollte dann die Füllhöhe ergeben.
Nun muss ich das nur noch in Blockly einmeißeln. Zumindestens versuchen! -
@Atifan Ich habe einen Zylinder und Oberkante ist ebenfalls 3m.
Ich versuche mal eine Gleichung in Blockly zu programmieren um dann die Ampere in cm umzurechnen.Ich hatte mich verschrieben.
Bei mir ist 0,032A = 0cm.
Also sollten 3m = 0,125A sein.
Ausgegebener Wert x - 0,032A = Wert y
Wert y : 0,001 = Wert z
Wert z x 3,225 cmDas sollte dann die Füllhöhe ergeben.
Nun muss ich das nur noch in Blockly einmeißeln. Zumindestens versuchen! -
Ist wohl doch nicht so einfach mit Blockly.
Bekomme immer 0cm in der Debug Ausgabe.
Mein Blockly:<xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable id="HBB:E$N1C0DLXs9ur-so">summe x</variable> <variable id="2LGagD(oRPbeP[3^@)JR">summe y</variable> </variables> <block type="on_ext" id="RwS}U~yAI-qu:Gk4$)%l" x="-287" y="63"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="|IayS%`5E.Mvqm0=O-?B"> <field name="oid">sonoff.0.Pegelsensor.INA219_Current</field> </shadow> </value> <statement name="STATEMENT"> <block type="control" id="q@Mi%VefQh.AFUtC-r;u"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Zisterne.Pegelsonde_Ampere</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_arithmetic" id="c]T.wZ6thXVU8CG5~xdi"> <field name="OP">MINUS</field> <value name="A"> <shadow type="math_number" id="[YwQk07x*$_Bi1gf2S{j"> <field name="NUM">0</field> </shadow> <block type="get_value" id="ffYElRYvG*QYnRU$yT{H" inline="false"> <field name="ATTR">val</field> <field name="OID">sonoff.0.Pegelsensor.INA219_Current</field> </block> </value> <value name="B"> <shadow type="math_number" id=".dB4=_wCwIy5R?!47_nl"> <field name="NUM">0.033</field> </shadow> </value> </block> </value> <next> <block type="debug" id="Lb**=^$?1u(8-8d=M}Pf"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id="1d8l7V5EwDIWv+(:f6Ot"> <field name="TEXT">test</field> </shadow> <block type="get_value" id="!t*GQque2E[6fh5`D7hF"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.Zisterne.Pegelsonde_Ampere</field> </block> </value> <next> <block type="controls_if" id="GwB=eYmk@fTnO@gd|*(M"> <value name="IF0"> <block type="logic_compare" id="Vv#b4x*pEgE-Beh8|S9E"> <field name="OP">GTE</field> <value name="A"> <block type="get_value" id="G7ly?Fr~Tx|FF{+LdtYZ"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.Zisterne.Pegelsonde_Ampere</field> </block> </value> <value name="B"> <block type="math_number" id="KCBlol`*kLBIK^VwZO#i"> <field name="NUM">0</field> </block> </value> </block> </value> <statement name="DO0"> <block type="variables_set" id="U;wTU6,f+B0QQMulQYfC"> <field name="VAR" id="HBB:E$N1C0DLXs9ur-so">summe x</field> <value name="VALUE"> <block type="math_arithmetic" id="D$oV;aI0?$g+{pg?w)ev"> <field name="OP">DIVIDE</field> <value name="A"> <shadow type="math_number" id="k$y_jvOv|F[-(_6~Xp|."> <field name="NUM">1</field> </shadow> <block type="get_value" id="By}9*y3j7jM{y1qH_44L"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.Zisterne.Pegelsonde_Ampere</field> </block> </value> <value name="B"> <shadow type="math_number" id="*{{lI83b5[v7w9j[3$Z4"> <field name="NUM">0.001</field> </shadow> </value> </block> </value> <next> <block type="debug" id="caKu*$q`T,=GgVGilNf5"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id="hX[e+Tu+26A%bai}ND$r"> <field name="TEXT">test</field> </shadow> <block type="variables_get" id="IUIT}R:q,uNOeBn%DmVN"> <field name="VAR" id="HBB:E$N1C0DLXs9ur-so">summe x</field> </block> </value> <next> <block type="variables_set" id=",_a/T!i#2s{:y,[,cB]W"> <field name="VAR" id="2LGagD(oRPbeP[3^@)JR">summe y</field> <value name="VALUE"> <block type="math_arithmetic" id="}KWq]Qdz6YPmC0)!n;KD"> <field name="OP">MULTIPLY</field> <value name="A"> <shadow type="math_number" id="zk=VLtPwvO^LCSR2{%}m"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="N;{SwNbiXof0k_?.g2+n"> <field name="VAR" id="HBB:E$N1C0DLXs9ur-so">summe x</field> </block> </value> <value name="B"> <shadow type="math_number" id="tE5B=5BbT}P*T6[qG|n{"> <field name="NUM">3.225</field> </shadow> </value> </block> </value> <next> <block type="debug" id="IX|w+cYjuBA#;cUBYYl5"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text"> <field name="TEXT">test</field> </shadow> <block type="variables_get" id="`Y(+l^CHW,dE`s6NOf9u"> <field name="VAR" id="2LGagD(oRPbeP[3^@)JR">summe y</field> </block> </value> <next> <block type="controls_if" id=":xThwNel4kk,k`fj/D|h"> <value name="IF0"> <block type="logic_compare" id="`v#8[pVQ[?XA2n#hhwkh"> <field name="OP">GTE</field> <value name="A"> <block type="get_value" id="9:)f*:hw[EtxP[d%@;Sq"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.Zisterne.Pegelsonde_Füllstand_cm</field> </block> </value> <value name="B"> <block type="math_number" id="_))d-=4{.Hwg%[!qgB{w"> <field name="NUM">0</field> </block> </value> </block> </value> <statement name="DO0"> <block type="update" id="v~8v(Tejxk%B59p7D?7:"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Zisterne.Pegelsonde_Füllstand_cm</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="variables_get" id="5qejMuwFbM~nc#wH2EZu"> <field name="VAR" id="2LGagD(oRPbeP[3^@)JR">summe y</field> </block> </value> <next> <block type="debug" id="|]=P@l9r)=CfpmFbKe4^"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id="f5+Cz)_{CwfU$[`+E4IG"> <field name="TEXT">test</field> </shadow> <block type="get_value" id=":(96#NeBT9Q#(z$O$6kq"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.Zisterne.Pegelsonde_Füllstand_cm</field> </block> </value> </block> </next> </block> </statement> </block> </next> </block> </next> </block> </next> </block> </next> </block> </statement> </block> </next> </block> </next> </block> </statement> </block> </xml>
Mein Debug Output:
12:18:52.060 info javascript.0 (1563) Stop script script.js.Garten.Pegelsensor_Fuellhoehe_cm 12:18:52.198 info javascript.0 (1563) Start javascript script.js.Garten.Pegelsensor_Fuellhoehe_cm 12:18:52.202 info javascript.0 (1563) script.js.Garten.Pegelsensor_Fuellhoehe_cm: registered 1 subscription and 0 schedules 12:19:03.832 info javascript.0 (1563) script.js.Garten.Pegelsensor_Fuellhoehe_cm: 0 12:19:03.832 info javascript.0 (1563) script.js.Garten.Pegelsensor_Fuellhoehe_cm: 0 12:19:03.832 info javascript.0 (1563) script.js.Garten.Pegelsensor_Fuellhoehe_cm: 0 -
@Superdad
Ja und für die Umrechnung in LiterPI * r * r * h ist das Volumen
Hier ist mein Berechnungsscript. Bin kein Programmierer, von daher ist es bestimmt nicht perfekt :) Aber funktioniert.

-
@ElseKling Hi. Ähhm, links oben ist doch der "Strom zu Spannungskonverter" schon drin. Also ich sehe keinen Fehler, sollte so passen. Rechst oben sollte eben ein Step-Up Konverter von 5V auf 24V sein, da die Pegelsonde und der Konverter nur mit 24V richtig arbeiten.
Gruß Eisbaeeeer@Eisbaeeer heute kam endlich mein Strom2Spannungs-Converter. Entsprechend dem Bild angeschlossen. Leider liefert ESp-Easy keine Anzeige. Beim Messen ist mir aufgefallen, dass der Converter eine negative Spannung ausgibt.

-
@Eisbaeeer heute kam endlich mein Strom2Spannungs-Converter. Entsprechend dem Bild angeschlossen. Leider liefert ESp-Easy keine Anzeige. Beim Messen ist mir aufgefallen, dass der Converter eine negative Spannung ausgibt.

@ElseKling Warum ESPEasy? Meine Firmware basiert auf dem LAN Chip. Sorry, aber ich unterstütze kein ESPEasy. Da ist doch gerade Superdad und Atifan aktiv. Bei unserer Lösung ist kein Umrechnen nötig. Außerdem kann eine untere Grenze und vieles mehr direkt in iobroker über MQTT definiert werden. Falls Bedarf ist, kann ich das auch noch auf ESP8266 portieren. Gruß Eisbaeeer
-
@ElseKling Warum ESPEasy? Meine Firmware basiert auf dem LAN Chip. Sorry, aber ich unterstütze kein ESPEasy. Da ist doch gerade Superdad und Atifan aktiv. Bei unserer Lösung ist kein Umrechnen nötig. Außerdem kann eine untere Grenze und vieles mehr direkt in iobroker über MQTT definiert werden. Falls Bedarf ist, kann ich das auch noch auf ESP8266 portieren. Gruß Eisbaeeer
@Eisbaeeer
Ah sorry, aber die Auswertung des Signals ist wäre ja dann der zweite Schritt. Hier noch mal der Aufbau als Schema. Wieso habe ich am Ausgang des Spannungskonverters (grün zu GND) eine negative Spannung :thinking_face: ?
Die Sonde wird ja über den Konverter gespeißt oder braucht sie noch mal 24V?

-
@Eisbaeeer
Ah sorry, aber die Auswertung des Signals ist wäre ja dann der zweite Schritt. Hier noch mal der Aufbau als Schema. Wieso habe ich am Ausgang des Spannungskonverters (grün zu GND) eine negative Spannung :thinking_face: ?
Die Sonde wird ja über den Konverter gespeißt oder braucht sie noch mal 24V?

@ElseKling Muss denn nicht GRD auf Minus und Plus auf VCC?
-
@ElseKling Muss denn nicht GRD auf Minus und Plus auf VCC?
@Superdad war ein Fehler im Diagram :slightly_frowning_face:
Die Sonde braucht doch Versorgungsspannung (24V), zusammen mit dem gemeinsamen GND klappt es jetzt. Am Wochenende werde ich mal kalibrieren. Und dann ein komplettes "Rezept" schreiben.

-
@Superdad war ein Fehler im Diagram :slightly_frowning_face:
Die Sonde braucht doch Versorgungsspannung (24V), zusammen mit dem gemeinsamen GND klappt es jetzt. Am Wochenende werde ich mal kalibrieren. Und dann ein komplettes "Rezept" schreiben.

@ElseKling Also der gleiche Fehler wie bei mir.
-
Hallo zusammen,
die Lösung mit der Pegelsonde und MQTT wäre für mich genau die Lösung. Da sich hier die verschiedenen Ansätze vermischen (D1 mini, NodeMCU, Arduino Nano..) würde ich gerne eine Anleitung erstellen, die am Ende den Nachbau für alle Interssierten einfach in einem Ablauf ermöglicht. Im zweiten Schritt dann mit der Erweiterung des Displays.
Habe ich den Aufbau mit einem Node MCU so richtig verstanden oder muss der Strom-zu-Spannungs-Converter noch rein?

Wie versprochen hier das "Kochrezept".
Füllstandsmesser per PegelsondeEinleitung:
Um dem Wasserpegel meiner Zisterne zu messen und an meinen io-broker zu übermitteln habe ich lange im Netz gesucht und auf Dauer scheinen alle Lösungen mit Ultraschall-sensor nicht beständig zu sein. Am Ende habe ich den Thread (https://forum.iobroker.net/topic/16773) gefunden. Ich habe mich für den Weg mit dem NodeMCU und ESPEasy entschieden, da bei letzterem die MQTT-Einbindung und die Konfiguration per Weboberfläche sehr einfach ist. Dank also an alle Beteiligten im Thread, ich habe nur alle Infos zusammengefasst und eine Schritt-für-Schritt-Anleitung draus gebastelt.Hardware:
• Pegelsonde (Level Transmitter Level Transducer Level Sensor)
Achtet bitte drauf eine zu nehemn deren maximaler Pegelstand auch Eurem entspricht. Ansonsten kann es zu starken Schwankungen führen.
z.B. https://www.aliexpress.com/item/32611346968.html?spm=a2g0s.9042311.0.0.2df14c4dDaJs7G

• NodeMCU (andere ESP8266 Module sollten auch gehen)
z.B. https://www.az-delivery.de/products/nodemcu
• Spannungswandler (Voltage Step Up Adjustable)
z.B. https://www.aliexpress.com/item/32833505298.html?spm=a2g0s.9042311.0.0.2df14c4dDaJs7G

• Strom zu Spannung Konverter (Current to Voltage Converter Signal Conversion Module)
z.B. https://www.aliexpress.com/item/4001108601098.html?spm=a2g0s.9042311.0.0.2df14c4dDaJs7G

• Optional Display (2-zeilig HD44780 1602 oder 4-zeilig HD44780 2004)
z.B. https://www.az-delivery.de/products/bundlelcd-schnittstelle?_pos=5&_sid=72565279b&_ss=rVerkabelung:
Entsprechend der Skizze

Mit optionalem Display:

Am Strom zu Spannung Konverter mit dem 2 Schrauben den Maximal- und Minimalwert einstellen. Der Minimalwert sollte über 0V liegen um zu erkennen, ob ein Fehler (Kabelbruch) vorliegt.
Sollte das Display nichts anzeigen, am Potentiometer auf der Rückseite den Kontrast kontrollieren.Software:
Den ESP mit ESPEasy flashen und über die Weboberfläche konfigurieren.
Ich verwende 20111 – Mega vom Sep 29 2020 09:50:20 „ESP_Easy_mega_20200929_normal_ESP8266_4M1M“. Abweichende Versionen können Probleme machen.MQTT-Client


A: IP-Adresse des MQTT-Servers
B: User / Passwort des MQTT-ServersDevices

Display

A: I2C-Adresse, kann über Tools -> I2C Scan ermittelt werden
B: Größe des Displays;
A: Anschluss pins des DisplaysAnalog Eingang

A: Oversampling glättet den Eingang der Messung
B&C: 2Punktkalibrierung der Meßwerts. A=Messwert ohne Pegel B=Messwert Maximalpegel
In meinem Fall habe ich mich entschieden den Wert als 0%-100% zu nehmen, es wäre auch möglich die Höhe oder die Liter zu nehmen. Da ich eine quadratische Zisterne haben, sind alle Werte eh direkt proportional.Umrechnung


Umrechnung der Prozent in Liter (bei mir 9500L maximal)
Allgemeine Tipps:
- Kalibration
Zur Kalibrierung habe ich ein unten geschlossenes DN50 HT-Rohr genommen, so konnte ich verschiedene Pegelstände außerhalb der Zisterne simulieren. Das Rohr bekam dann einige Bohrungen und wurde am Ende in die Zisterne gehängt und die Sonde dann eingeführt, so dient es als Filter um die Sonde etwas vor Verunreinigungen zu schützen und die Wasseroberfläche im Rohr etwas zu beruhigen.
Updates:
26-05-2021: Ergänzung zum maximalen Pegelbereich der Sonde und zur ESP_Easy VersionDas Ganze als PDF: Füllstandsmesser per Pegelsonde2.pdf
- Kalibration
![IMG_0783[1].JPG](/assets/uploads/files/1602611280558-img_0783-1-resized.jpg)
