NEWS
Füllstandsmessung per Pegelsonde.
-
@Superdad USB-Ladegerät geht, das liefert aber 5V. Dann musst auf die 5V bzw. in den USB-Eingang rein.
Mit dem INA219 musst du als Sensor I2C SDA und I2C SDL je einem GPIO zuweisen.
Daten werden dann per MQTT an IoBorker übertragen.
Im IoBroker musst du natürlich MQTT Server laufen haben.Hier mein Tasmota Config.
In Tasmota in der Konsole gibst du dann noch folgendes ein:
Sensor13 11Damit gaukelst du Tasmota vor, dass der Widerstand im INA219 10x kleiner oder größer wäre, bin mir jetzt garnicht mehr sicher^^.
Auf jedenfall erhällst du dann eine höhere Auflösung bzw. Genauigkeit beim bestimmen des Füllstands.Bei mir entspricht 0.035A = 0cm Wasser, d.h. Zisterne ist leer, bzw. das Wasser an der Unterkante des Sensors
Pro 0.001A höher entspricht bei mir einem Wasserstand von 3.225cm, das sollte bei dir gleich oder sehr ähnlich sein.
0.036A wäre also 3,225cm.
0.037A wäre 6.45cm.
usw.Mir reicht das mit einer Genauigkeit von +-3,225cm.
Es geht auch bestimmt anders und noch genauer, aber ich hab es bei mir so gelassen da es funktioniert und für mich gut genug istÜber das Relais schalte ich dann mein Hauswasserwerk ab, wenn der Füllstand bei 0cm ist.
Eingeschaltet wird dann erst wieder wenn der Füllstand bei >=20cm ist.Die Tauchsonde hängt ein paar cm höher als das Ende des Ansaugschlauches, so dass keine Luft angesaugt wird und der Schlauch immer schön mit Wasser gefüllt ist.
Bei mir hängt die Sonde genau auf 3m tiefe. D.h. die Maximale Wassersäule darüber ist 3m, wenn die Zisterne voll ist.
Im Moment ist sie bei mir voll, d.h. 300cm.
0.128A - 0.35A = 0.093A Differenz
93 x 3,225 = 299,925cm WassersäuleVisualisieren tue ich das ganze dann mit IoBroker, InfluxDB und Grafana.
-
@Atifan said in Füllstandsmessung per Pegelsonde.:
Vielen, vielen Dank für deine Antwort.
Bei Sensor13 11 kommt bei mir ein Error.
Habe aber auch noch nichts zusammen gebaut. Das ist noch im Zulauf.
Den INA219 gibt es nur zum selber löten. Ach du Sch......!
Ich und löten!!!!!
Hoffentlich geht das gut?! -
Mit 3V und Grd gehe ich aber vom ESP zum MT3608 StepUp Board? Richtig?
-
@Superdad Ja egal, du kannst auch mit 5V zum Stepup gehen und die auf 24V hochskalieren.
Du kannst nur kein 3,3V Relais direkt ansteuern, sondern musst dann ein 5V Relais nehmen.Sensor13 11 geht erst wenn der INA am Tasmota ESP hängt.
Das löten ist easy, das kann jeder Grobmotoriker. Sind nur 4 Kontakte.
-
@Atifan Ich muss dich nochmal nerven.
Aus deinem Foto werde ich nicht so richtig schlau:
Also 5V, per USB-Ladegerät, ins ESP8266.
Von dort 3V und Grd zum StepUp Board Vin- und Vin+.
Vom StepUp Board Vout- und Vout+ zum INA219 an die Stiftleiste Vin- und Vin+?
Von der Stiftleiste SCL an GPIO5 und SDA an GPIO4?
Den Pegelsensor an den grünen Anschluss (3,5mm Anschlussblock)?Was ist mit VCC unf GRD von der Stiftleiste? Bleiben die frei?
In Tasmota ist noch GPIO12 als Relay1 eingestellt. Wo kommt das her?
Auf dem StepUp Board muss ich dann noch 24V einstellen?
Danke für deine Geduld mit mir!
Habe nicht so die Ahnung von der Materie. -
Also 5V, per USB-Ladegerät, ins ESP8266.
Von dort 3V und Grd zum StepUp Board Vin- und Vin+.
Vom StepUp Board Vout- und Vout+ zum INA219 an die Stiftleiste Vin- und Vin+?
Von der Stiftleiste SCL an GPIO5 und SDA an GPIO4?
Den Pegelsensor an den grünen Anschluss (3,5mm Anschlussblock)?
ja stimmt so allesWas ist mit VCC unf GRD von der Stiftleiste? Bleiben die frei?
NEIN, an VCC muss 3-5,5V und GND muss auch angeschlossen werden, damit der INA219 funktioniertIn Tasmota ist noch GPIO12 als Relay1 eingestellt. Wo kommt das her?
da geht die Datenleitung von meinem Relais drauf, das schaltet meinen Stromkreis vom Hauswasserwerk ein und aus, je nach Pegelstand.
Wenn du nur den Wasserstand messen möchtest brauchst du das nicht.Auf dem StepUp Board muss ich dann noch 24V einstellen?
Ja. Du musst die 3,3V oder 5V am Eingang anschließen und dann am INA219 die Drehschraube drehen bis 24V rauskommt, am Ausgang musst du natürlich die Spannung messen. Am Anfang musst du das Schräubchen ca. 10x drehen, erst dann fängt die Spannung an zu steigen. -
@Atifan Nochmals vielen Dank!
-
@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.
-
@Atifan Danke für deine Antwort.
Jetzt hat sich meine nächste Frage mit deiner zweiten Antwort überschnitten. -
@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? -
@Superdad muss nicht dran sein.
-
@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! -
Vielleicht kann ja mal jemand drüber schauen.
Ich habe es wie folgt verdrahtet:
Grau/Schwarz ist 3,3V.
Müsste ich es nicht wie folgt machen?Statt der 9V halt die 24V.
Oder liege ich total daneben? Als Laie, der ich nun einmal bin! -
@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. -
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! -
@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.
-
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