NEWS
Wasserstands-/Füllstandssensor,Wasserpegelschalter
-
@Superdad said in Wasserstands-/Füllstandssensor,Wasserpegelschalter:
HC SR04
Ich habe zwar ne nodemcu, Dein Wemos sollte ähnlich sein. Bei mir habe ich Tasmota ausgespielt und verwende folgende Konfiguration:
GPIO4 und GPIO5 musst du nicht konfigurieren. Bei mir ist da ein Display angeschlossen.
Weiterhin verwende ich dieses Modell:
-
@Superdad sagte in Wasserstands-/Füllstandssensor,Wasserpegelschalter:
Würde jemand so freundlich sein mir die Vorgehensweise mit dem Wemos und dem HC SR04 zu erklären?
Such mal nach meinen Beiträge.
Da habe ich es erklärt. Und auch ein funktionierendes Sketch eingestellt. -
Vielen Dank euch Beiden!
-
Habe mir jetzt mal alles besorgt und angeschlossen.
Hoffe, dass ich es richtig angeschlossen habe.
DC6 = Trigger
DC7 = Echo
GND = GND
Vin = 5V
NodeMCU mit Tasmota geflasht.
Bekomme im iOBroker im Sonoff-Adapter unter SR04_Distance auch einen Wert angezeigt.
Dieser kann aber nicht stimmen.
Mit welcher Formel muss der umgerechnet werden?
Oder hast du eventuell ein Blockly dazu?
Auch habe ich noch nicht mitbekommen in welchem Intervall der gemessene Abstand aktualisiert wird.
Weißt du das zufällig?Gruss Andreas
-
Guten Morgen Andreas,
bei mir ist das so angeschlossen: (Habe an D1 und D2 noch ein Sh1106 Display angeschlossen)
Den Wert musst du eigentlich nicht umrechnen. Dieser wird in der Einheit cm übertragen. In der Tasmota Software ist ja noch ein Mittelwertfilter hinterlegt. Schätze mal dass die Software alle par Sekunden misst. Wie oft übertragen wird kannst du mit dem Parameter teleperiod einstellen. Entweder fest in die Software eintragen wenn du selbst compilieren willst, oder in der Konsole mit teleperiod und einer Zahl. Zulässig sind 0 für ausschalten oder 10 - 3600 sekunden.
Mein Werte im obigen Bild stimmt zwar messtechnisch auch überhaupt nicht, liegt bei mir aber am Einbau des Sensors, den ich übers Wochenende ändern werde.
Die weitere Verarbeitung des Signals kannst du dann z.B. in Javascript machen.
Ich will bei mir die Ölmenge im zylindrischen Erdtank bestimmen. Das Script dazu habe ich schon geschrieben und sieht so aus:
// Maximale Füllmenge im Erdtank const maxVolume = 7000; // Liter //maximale Füllhöhe const MaxOelLevel = 160; // cm // Gemessener Abstand von Sensor zu Öloberfläche var AirLevel = 0; // cm // Korrekturwert wegen Sensormontage im Erdtank ( Domschacht) var AirLevelOffset = 16; // cm // Errechneter Ölstand im Tank var OelLevel = 0; // cm // Menge Öl in Erdtank var Oelvolume = 0; // Peiltabelle von Thyssen Krupp // Wert links Pegelstand von Grund ab gemessen in cm, // Wert Rechts Fuellstand in Liter const Peiltabelle = new Map([ [ 0, 0 ], [ 1, 5 ], [ 2, 15 ], [ 3, 28 ], [ 4, 43 ], [ 5, 61 ], [ 6, 80 ], [ 7, 101 ], [ 8, 124 ], [ 9, 149 ], [ 10, 174 ], [ 11, 201 ], [ 12, 230 ], [ 13, 259 ], [ 14, 289 ], [ 15, 320 ], [ 16, 352 ], [ 17, 385 ], [ 18, 419 ], [ 19, 455 ], [ 20, 491 ], [ 21, 528 ], [ 22, 565 ], [ 23, 603 ], [ 24, 642 ], [ 25, 682 ], [ 26, 723 ], [ 27, 764 ], [ 28, 806 ], [ 29, 848 ], [ 30, 891 ], [ 31, 935 ], [ 32, 979 ], [ 33, 1024 ], [ 34, 1069 ], [ 35, 1114 ], [ 36, 1160 ], [ 37, 1206 ], [ 38, 1254 ], [ 39, 1303 ], [ 40, 1352 ], [ 41, 1401 ], [ 42, 1450 ], [ 43, 1500 ], [ 44, 1550 ], [ 45, 1601 ], [ 46, 1652 ], [ 47, 1703 ], [ 48, 1755 ], [ 49, 1808 ], [ 50, 1861 ], [ 51, 1914 ], [ 52, 1967 ], [ 53, 2020 ], [ 54, 2074 ], [ 55, 2128 ], [ 56, 2183 ], [ 57, 2238 ], [ 58, 2293 ], [ 59, 2348 ], [ 60, 2403 ], [ 61, 2458 ], [ 62, 2513 ], [ 63, 2569 ], [ 64, 2625 ], [ 65, 2681 ], [ 66, 2737 ], [ 67, 2793 ], [ 68, 2849 ], [ 69, 2905 ], [ 70, 2961 ], [ 71, 3017 ], [ 72, 3073 ], [ 73, 3130 ], [ 74, 3187 ], [ 75, 3244 ], [ 76, 3301 ], [ 77, 3358 ], [ 78, 3415 ], [ 79, 3472 ], [ 80, 3529 ], [ 81, 3586 ], [ 82, 3643 ], [ 83, 3700 ], [ 84, 3757 ], [ 85, 3814 ], [ 86, 3871 ], [ 87, 3928 ], [ 88, 3984 ], [ 89, 4040 ], [ 90, 4096 ], [ 91, 4152 ], [ 92, 4208 ], [ 93, 4264 ], [ 94, 4320 ], [ 95, 4376 ], [ 96, 4432 ], [ 97, 4488 ], [ 98, 4543 ], [ 99, 4598 ], [ 100, 4653 ], [ 101, 4708 ], [ 102, 4763 ], [ 103, 4818 ], [ 104, 4873 ], [ 105, 4927 ], [ 106, 4981 ], [ 107, 5034 ], [ 108, 5087 ], [ 109, 5140 ], [ 110, 5193 ], [ 111, 5246 ], [ 112, 5298 ], [ 113, 5349 ], [ 114, 5400 ], [ 115, 5451 ], [ 116, 5501 ], [ 117, 5551 ], [ 118, 5600 ], [ 119, 5649 ], [ 120, 5698 ], [ 121, 5747 ], [ 122, 5795 ], [ 123, 5841 ], [ 124, 5887 ], [ 125, 5932 ], [ 126, 5977 ], [ 127, 6022 ], [ 128, 6066 ], [ 129, 6110 ], [ 130, 6153 ], [ 131, 6195 ], [ 132, 6237 ], [ 133, 6278 ], [ 134, 6319 ], [ 135, 6359 ], [ 136, 6398 ], [ 137, 6436 ], [ 138, 6473 ], [ 139, 6510 ], [ 140, 6546 ], [ 141, 6582 ], [ 142, 6616 ], [ 143, 6649 ], [ 144, 6681 ], [ 145, 6712 ], [ 146, 6742 ], [ 147, 6771 ], [ 148, 6800 ], [ 149, 6827 ], [ 150, 6852 ], [ 151, 6877 ], [ 152, 6900 ], [ 153, 6921 ], [ 154, 6940 ], [ 155, 6958 ], [ 156, 6973 ], [ 157, 6986 ], [ 158, 6996 ], [ 159, 7001 ], [ 160, 9999 ] // error ]) ; // Name des Tasmota Gerätes const Geraetename = 'DVES_568D91'; //Staus Verbindung zu Tasmota var StatusVerbindung = 0; // String der verbundenen Tasmota Geräte var sonoffname; StatusVerbindung = getState("sonoff.0.info.connection").val; // Prüfe Verbindung zu Tasmota prüfen //console.log(StatusVerbindung); sonoffname = StatusVerbindung.search(Geraetename); // Suchen ob Tasmota Gerätename vorhanden //console.log(sonoffname); if( sonoffname != -1) { var Messwert = getState("sonoff.0.DVES_568D91.SR04_Distance").val; // Hole Daten von Ultraschallsensor console.log( 'Luftmessweg' + Messwert + 'cm') ; AirLevel = Messwert - AirLevelOffset; // Montagehöhe von Sensor abziehen OelLevel = MaxOelLevel - AirLevel; // Errechne die Füllhöhe im Erdtank console.log( 'Ölmessweg ' + OelLevel + ' cm') ; if ((OelLevel >= 0) && (OelLevel < MaxOelLevel)) { Oelvolume = Peiltabelle.get(Math.round(OelLevel)); console.log( 'Ölmenge ' + Oelvolume + ' Liter') ; // sendTo("telegram.0", "send", { // text: 'Heizpatrone Stufe 1 Ein' // }); } else {console.log('Fehler in Messung'); Oelvolume = 9999; console.log( 'Ölmenge ' + Oelvolume + ' Liter') ; } } else{ console.log('Keine Verbindung zu Tasmota Gerät'); Oelvolume = 9999; } code_text
Gruß Stephan
-
Hallo Stephan,
jetzt ist alles im grünen Bereich.
Muss nur noch das Script anpassen.
Hatte ganz vergessen, dass der Sensor unter 20cm nur Mist misst!Hatte gestern einen halben Tag gebraucht um auf das Nodemcu Sonoff zu flashen.
Zuerst habe ich es mit ESPeasy Flashtool probiert. Hat aber nicht funktioniert.
Dann mit Arduino versucht zu flashen. Bis ich dann die richtige Einstellung hatte, war der halbe Tag rum.
Aber jetzt funktioniert es ja.Vielen Dank für die Hilfe!
-
Soweit hat bei mir alles funktioniert.
War mein erster Date mit NodeMCU und Co.Seit drei Tagen habe ich aber folgendes Phänomen, dass mein HC SR04 jeden Abend anfängt die Messungen umzudrehen.
D.h. was tagsüber 20% Füllmenge sind, sind Abends plötzlich 80%.Kann es sein, dass der HC SR04 defekt ist?
Ich benutze folgendes Script:
Aber daran kann es nicht liegen, da die Datenpunkte ja schon umgedreht sind.
Hat das schon mal jemand gehabt?
-
Hier mal meine Ausführung. Kosten ~25€ (2 * Fensterkontakt von Aqara + Füllstandssonde von Ali)
Aber nur 2 Pegel! -
@Superdad Ich würde an deiner Stelle mal die Rohwerte vom SR04 mit dem History oder anderen Datenbank Adaptern aufzeichnen um den Fehler einzugrenzen.
-
@heinzie wusste bis eben nicht dass es die Dinger auch als Doppelschwimmer gibt.
Ist so auch eine schöne und einfache Lösung. Hast du schon Erfahrungswerte ob die Dinger hängen bleiben/festgammeln?
ich habe 2 einzelne Schwimmer mit 3D-Druck-Teilen und 50er-HT-Rohr verbaut. Ist so beliebig anpass- & erweiterbar.
So können die Fische schon mal keine Fehlalarm auslösen
Ein Wasserdichter DS1820 sitzt auch noch in der unteren Hülse. Auslesen werde mit einem Wemos.
Muss da mal weitermachen damit das Rohr im Frühjahr in den Teich kann. Technik soll in ein kleines Modellbauhäuschen mit Steg für die Rohrmontage.
Hintergrund der Spielerei: Unser Bachlauf/Verdunstung und Pfanzen die in den Teich hängen sorgen für Wasserverlust.
Wenn der untere Schwimmer auslöst soll das Hauswasserwerk Brunnenwasser nachpumpen bis der obere Schwimmer wieder voll signalisiert. -
@xbow42 sagte in Wasserstands-/Füllstandssensor,Wasserpegelschalter:
@heinzie wusste bis eben nicht dass es die Dinger auch als Doppelschwimmer gibt.
Ist so auch eine schöne und einfache Lösung. Hast du schon Erfahrungswerte ob die Dinger hängen bleiben/festgammeln?
ich habe 2 einzelne Schwimmer mit 3D-Druck-Teilen und 50er-HT-Rohr verbaut. Ist so beliebig anpass- & erweiterbar.
So können die Fische schon mal keine Fehlalarm auslösen
Ein Wasserdichter DS1820 sitzt auch noch in der unteren Hülse. Auslesen werde mit einem Wemos.
Muss da mal weitermachen damit das Rohr im Frühjahr in den Teich kann. Technik soll in ein kleines Modellbauhäuschen mit Steg für die Rohrmontage.
Hintergrund der Spielerei: Unser Bachlauf/Verdunstung und Pfanzen die in den Teich hängen sorgen für Wasserverlust.
Wenn der untere Schwimmer auslöst soll das Hauswasserwerk Brunnenwasser nachpumpen bis der obere Schwimmer wieder voll signalisiert.Deine Lösung ist natürlich sehr inteersant. leider habe ich noch keinen 3D Drucker, musste also das nehmen was leicht verfügbar ist.
Erfahrungen bezüglich festgammeln usw.. habe ich noch keine. Hoffe das mir das erspart bleibt, da sie nur im geschlossenem System verwendet werden. Die gibt es sogar auch einstellbar Link -
auch gut. Geschloßen ist mein System auch fast, bis auf die Wasser- & Luftlöcher. Ich hoffe nur die Kabeldurchführungen halten auf dauer dicht. Vorteil an meiner Lösung, je nach Einbaulage kann das Schaltverhalten bestimmt werden. Für ioBroker ja auch kein Ding die Schalter.states zu invertieren. Für meinen Anwendungsfall (gegenpolig eingebaut) ist alles im "grünen Bereich" wenn beide Schalter 0 liefern.
-
Mein low budget outdoor system zum bestimmen des tankinhaltes (sowie zum messen des durchsatzes der Wasserpumpe) besteht aus einem:
- Wemos D1 Mini (1,8€)
- Tilt Stop (0,8€)
- Ultrasonic Sensor, wasserdicht (3,5€)
Der Tilt stop ist nur ein doppelter Boden falls der ultrasonic Sensor versagen sollte (nach mehreren Monaten bisher noch nicht der Fall).
Auf dem wemos d1 mini läuft esphome und alle Berechnungen für und um den Tank, wie:
- Aktuelles Volumen in L
- Aktuelles Volumen in %
- Aktuelle Füllstand Höhe in cm
- Aktuelle Füllrate in Liter/Minute (ergo aktueller Durchsatz der Wasserpumpe)
- Aktuelle Entnahmerate Liter/Minuten (Bewässerung Garten)
- Tilt stop Aktivierung (mit Signal an das Wasserpumpenrelai)
- Durchschnittliche Füllrate letzte 5 Minuten
- Durchschnittliche Füllrate letzten 10 Minuten.
- Durchschnittliche Entnahmerate letzte 5 Minuten
- Durchschnittliche Entnahmerate letzten 10 Minuten
- Füllstand minimal heute
- Füllstand maximal heute
- Füllstand minimal Monat
- Füllstand maximal Monat
und ein paar weitere die ich gerade nicht im Kopf habe, werden direkt auf dem ESP gemacht, edgecomputing ist gerade hipp
Und das Ergebniss des ultrasonic Sensors etwas zu beruhigen (und keine flackernden Werte zu haben) benutze ich außerdem ein moving_average auf dem esp. So habe ich keine großen Ausreißer bei den Messungen.
-
@ecki945 Wird der errechnete Liter Wert in einen Datenpunkt gespeichert und nur als Telegram Nachricht verschickt.
-
Habe nun endlich meinen ersten ToF (Time of Flight) 940nm Laser Sensor bekommen. Mit etwa 2€ ist dieser nicht fast um die hälfte billiger als die (wasserdichten) Ultraschallsensoren sondern hat in Theorie auch noch eine höhere Genauigkeit sowie weniger Störeinflüsse. In der Praxis wird vor allem interessant wie er sich im Zusammenspiel mit dem Wasser verhält. Werde mich die Tage mal ran' wagen und diesen parallel zum vorhanden Ultrasonic installieren.
-
Wie muss ich den SR04 an einem MCULuanBoard Anschließen bezüglich Betriebsspannung. Leider bringt er mir komische Werte wenn ich VCC an 3V anschließen.
-
@Basti97 said in Wasserstands-/Füllstandssensor,Wasserpegelschalter:
MCULuanBoard
Das board kannte ich bis dato noch gar nicht.
Wie muss ich den SR04 an einem MCULuanBoard Anschließen bezüglich Betriebsspannung
Hier hilft eine ca. 2 sekündige google Suche welche dieses Datenblatt enthüllt in dem die korrekte Betriebsspannung des SR04 genannt wird. Sagen wir mal so: Mit 3V lagst du daneben und viel mehr Möglichkeiten gibt es nicht mehr...
-
@OpenSourceNomad Das weiß ich jetzt auch das sie mit 5V betrieben werden. Nun fehlt nur noch ein Logik Level um die Spannung auf 3 V herunter zu bringen.
-
@Basti97 said in Wasserstands-/Füllstandssensor,Wasserpegelschalter:
Nun fehlt nur noch ein Logik Level um die Spannung auf 3 V herunter zu bringen.
Wenn du das ganze mit einem esp betreiben willst ist das nicht nötig da diese 5v tolerant auf den io pins sind
-
@OpenSourceNomad Aber es würde ja nicht schaden ein Logik Level C. zunehmen. Ich habe bezüglich maximal Spannung für die einzelnen Boards noch keine richtige Beschreibung gefunden. Genauso wie mit den Analogen Eingang mit der Max. Spannung bei den einen heißt es 1V wo anders 3V. Da weiß man nicht so richtig.