Ich habe eine Wasseruhr die 1 Impuls pro Liter liefert.
Jetzt möchte ich den Momentanverbrauch in Liter pro Minute oder Liter pro Stunde berechnen.
Also ganz einfach Impuls/Zeit, klar, dann kriege ich den Momentanverbrauch.
Aber nun geht der Wasserhahn zu, und es kommt kein neuer Impuls mehr. Der Verbrauch ist Null, aber angezeigt wird immer noch der letzte Wert. Das funktioniert also nicht.
Man könnte nun durch die immer größer werdende Zeit bis zum nächsten Impuls teilen, dann nimmt der Wert mit der Zeit ab, wird aber nie Null, und Wasser fließt schon lange nicht mehr. Funktioniert also auch nicht.
Dann könnte man mit dem letzten Wert rechnen, und wenn kein neuer Impuls kommt einfach Null ausgeben. Wenn man den Hahn aber langsam zu dreht würde der Momentanverbrauchswert immer zwischen einer Zahl und Null hin- und her springen. Funktioniert also aich nicht.
Ich bin ratlos!
Weiss jemand, wie man das gut lösen kann, so dass bestensfalls zu jeder Zeit der möglichst korrekte Momentanverbrauchswert angezeigt wird?
Momentanverbrauch ist immer ein Problem, wenn nicht kontinuierlich Messergebnisse vorliegen.
Wie groß ist denn der maximal mögliche Durchfluß?
Bei 2,5m³/h sind das ca. 42L/Min - damit wäre die Torzeit definiert, auf die Du dich zurückziehen musst.
(Aus dem Grund haben die Ultraschallzähler erfunden - die finden sogar nen tropfendem Wasserhahn)
Macht die kürzeste Torzeit mit 600ms. Habe ich einen Ausgangspunkt.
In welcher maximalen Torzeit willst Du das Ergebnis haben?
Was nicht geht: 0,5 L/Min im Abstand von 2 Sekunden. Du brauchst schon nen Impuls.
Was aber ginge: mittels eines Array a) zu mitteln und b) die Tendenz zu ermitteln. - Auf was willst Du runter? 100ml/min? Noch weniger?
Soll es einfach nur eine Anzeige sein oder willst du die Meßwerte auch speichern?
Ich würde die Berechnung so aufbauen.Wenn es 4 Liter pro Minute sind kommt alle 15 Sekunden ein Impuls.
Wenn länger als 15 Sekunden kein Impuls kommt bedeutet das es sind weniger als 4 Liter pro Minute. Dann würde ich als Messinterval 60 Sekunden nehmen. Damit kriegst du dann 3,9 Liter bis 0,1 Liter / Minute angezeigt.
Wenn 10 Minuten lang kein Impuls gekommen ist dann ist der "Durchfluss" kleiner als 0,1 Liter / Minute. Dann würde ich Null anzeigen lassen.
Mit dieser Vorgehensweise kannst du auch andere Grenzwerte nehmen.
Wenn eine Stunde lang kein Impuls gekommen ist dann sind es weniger als 1/60 = 0,017 L/Min.
Soll denn damit eine sündhaft teure Flüssikeit abgerechnet werden? Wahrscheinich nicht.
Dann ist es doch vollkommen wurscht ob da über nacht noch 0,03 Liter geflossen sind oder nicht.
So lange es 0,0x Liter pro Minute waren Null anzeigen und dann wenn wieder ein Impuls kommt kannst du trotzdem wieder rechnen.
Mir reichen eigentlich volle Liter pro Minute, also ohne Nachkommazahlen.
Noch ist es keine sündhaft teure Flüssigkeit, aber wer weiss, wie es in der Zukunft ist...
Also es ist ne Wasseruhr fürs Gartenwasser.
Die Anzeige soll auf ganze Liter pro Minute oder pro Stunde anzeigen.
Der Momentanwert soll 1x pro Minute in eine Datenbank geschrieben werden. Das wird wohl einfach mit dem Durchschnittwert pro Minute gehen.
Aber es soll aich der aktuelle Momentanwert auf einer Anzeige angezeigt werden, und zwar so dynamisch wie möglich. Und da liegt dann die Herausforderung.
Aber in welchem Abfragezeitraum?
Denn danach müsste sich ggfls. ein Ringspeicher errechnen.
Wie gesagt, Du kannst nicht aus einem Impuls je Minute abstellen.
Das ist alles nur ein raten - aber mit einer gewissen Menge an Informationen hat man ggfls. eine Tendenz.
Den Minutenwert für die Datenbank kann man ja Mitteln, das denke ich ist unproblematisch.
Aber den Momentanwert hätte ich gerne so schnell und dynamisch wie es geht da sehe ich das Problem.
Bei 1 Liter Pro Minute kommt eben nur 1 Impuls pro Minute. Da kannst Du nichts Superdynamisch machen mit Update der Durchflußmenge alle 2 Sekunden.
Grüße Uwe
.. das ist schon klar. Dann macht man das eben so schnell es geht, d.h. bei jedem Impuls wird der Momentanwert berechnet und ausgegeben. Soweit war ich ja gedanklich schon in meinem Eröffnungspost. Und soweit ist es ja auch alles kein Problem.
Ich suche ne Lösung fürs drosseln/abstellen. Da kommen die Impulse dann plötzlich / unerwartet später, langsamer oder gar nicht mehr. Das kriege ich Gedanklich nicht hin und in der Folge dann auch nicht programmiert.
Die Durchflußmenge geht ja beim Schließen eines Wasserhahns ziemlich schnell runter. Du schraubst den Wasserhahn ja nicht innerhalb 2 Minuten langsam zu sondern innerhalb von Sekunden. Das kannst Du dedektieren. Egal wie genau Deine Durchflußmenge angezeigt wird, ist die Wassermenge genau wenn Du alle Impulse mitzählst.
100 Liter pro Minute = 100 Liter in 60 Sekunden
Das heißt alle 60/100 = 0,6 Sekunden ein Impuls
Vielleicht hilft es das mal für einige Volumenströme explizit auszurechnen:
Du kannst immer nur von Impuls zu Impuls zählen.
50 L/min
60/50 = alle 1,2 Sekunden ein Impuls Anzeigenupdate nach 1,2 Sekunden
20 L/Min = 60/20 = alle 3 Sekunden ein Impuls Anzeigenupdate nach 3 Sekunden
10 L/Min = 60/10 = alle 6 Sekunden ein Impuls Anzeigenupdate nach 6 Sekunden
5 L/Min = 60/5 = alle 12 Sekunden ein Impuls Anzeigenupdate nach 12 Sekunden
Wenn du dir erhofft hast durch genaueres Durchdenken eine höhere Display-Uupdatefrequenz zu bekommen. Das geht einfach nicht mit nur 1 Impuls pro Liter. Es sein denn du willst dich selber betrügen in dem du die Anzeige 1x pro Sekunde im Zahlenwert hin- und her hüpfen lässt. Ganz ohne Messgrundlage durch Impulse.
Wenn dir diese Updatefrequenz zu langsam ist dann musst du einen Wasserzähler nehmen
der 100 Impulse pro Liter oder noch mehr Impulse liefert.
100 Liter pro Minute ist aber auch echt ne Menge. Das sind 6000 Liter pro Stunde = 6 cbm/h
Da tut es eine Standard Einfamilienhaus Wasseruhr nicht mehr die geht nur bis 2,5 cbm/h.
6 cbm/h zum Bewässern. Ich habe da keine Erfahrungswerte aber das hört sich nach 2 Hektar Großgärtnerei an. Trifft das zu?
nee, is keine Großgärtnerei. Bei mir stehen 4-5 Gardena Flächenregner, und die verbrauchen pro Stück bei 2-3bar ungefähr 800-1000 Liter pro Stunde...also relativ übersichtlich. Wenn dann noch 1-2 Handdüsen für die Randbereiche hinzukommen dann reicht das noch gar nicht um da nicht stundenlang zu bewässern.
Insgesamt laufen da aktuell 2 Pumpen, die jeweils 4000L/h ohne Gegendruck fördern. Bei 4,5bar ist die Pumpgrenze (Durchfluss = Null). Meistens läuft es je nach eingeschalteten Regnern zwischen 2-3bar. In der Erde liegen ungefähr 170m 40mm PE Rohr mit 10 Zapfstellen, die jeweils 4 Gardena anschlüsse haben. Diese insgesamt 40 Auslässe werden nie gleichzeitig benutzt, sondern immer nur dort wo gerade Wasser benötigt wird. Manche Anschlüsse sind auch relativ dicht nebeneinander, um zu verhindern, dass Schläuche über Wegen liegen. Die Wasseruhr ist eine DN50 (hätte lieber DN40 gehabt, aber die DN50 hatte ich und eine DN40 hätte das gleiche Zählwerk, bringt also auch nicht mehr Impulse).
Die Beregnungsstrategie enthält verschiedene Regner, Düsen und auch Tropfschläuche. Wann welche davon eingeschaltet sind darf bei der Anzeige keine Rolle spielen. Wenn die Regner aus sind, und nur die Tropfschläuche laufen, dann ist der Wasserverbrauch gering.
Also nochmal: ich will nicht im Millisekundenbereich dynamisch die Ausgabe erzeugen können, und das ist hier von mir auch nirgendwo gefragt worden.
Solange Wasser fließt behersche ich die Aufgabe (einfach nach jedem Impuls updaten).
Meine Fragestellung betrifft ausschließlich den Moment wo das Wasser gedrosselt oder abgestellt wird und der nächste Impuls ausbleibt oder erst verzögert kommt (das weiss man ja nicht).
Die möglichen Ideen, die mir eingefallen sind habe ich im Eröffnungspost geschrieben.
Daraus ergibt sich für mich aber keine Lösung, weil keine sauber funktioniert.
von dir zu spezifizierende Zeit lang -
keine Impulse kamen dann setze die Anzeige auf null
Wenn dann - nach längerer Zeit - doch noch ein Impuls kommt kannst du ja wieder rechnen.
Ich habe keine Ahnung wie viel Platz auf deinem Display ist und du hast auch nicht beschrieben wozu das so wichtig ist anstatt einfach nur null anzuzeigen noch etwas anderes anzuzeigen.
Sofern auf deinem Display Platz dafür ist könntest du, bei nur in zu großen Zeitabtänden eintreffenden Impulsen den Zeitabstand zwischen den Impulsen anzeigen lassen.
Das würde dann auch eine gewisse Information darüber liefern ob da irgendwo noch etwas vor sich hin dröppelt oder ob alle Zapfstellen wirklich dicht geschlossen sind.
Wenn Zeitabstand zwischen zwei Impulsen größer als "X"
Anzeige auf Null. Ende
Wenn du das jetzt genauer haben willst dann müsstest du mal deinen Code posten.
vgs
Den Code muss ich noch schreiben.
Das Display gibts nicht, das wird per MQTT an den MQTT Broker gesendet. Von dort ist es dann an beliebigen Stellen abrufbar.
Die Anzeige ist nicht wichtig, ich wollte es nur sau er haben, d.h. wenn nix fließt soll die Anzeige Null sein und nicht zwischen irgendwelchen Werten hin und her springen.
Ich werde das ab nächste Woche mal bauen und dann ein paar Messreihen mit Beispieldaten bereitstellen.
Wenn der letzte Puls z.B. die Anzeige "6" ergeben hat und nach 12 sec kein neuer Puls gekommen ist, hast du die Wahl, entweder nichts zu machen, eine "5" anzuzeigen, oder sonstwie zu signalisieren, dass die 6 nicht mehr gültig ist.
Meine Empfehlung: sonstwie. Damit wird das Problem auf die Anzeige-Seite verlagert (Farbe/
Helligkeit o.ä.) und die Arduino-Seite macht die Daten-Erfassung so gut es eben geht.
Mein Fahrrad-Tacho hat übrigens das gleiche Problem. Der zeigt witzigerweise nach "19.8" einmal für 2 sec seinen Minimalwert "3.7" und dann "0.0" an. Das willst du auch nicht.
Die Intelligenz muss auf der Arduino Seite sein.
Due Anzeige kann das nicht leisten, weil es keine konkrete und einzige Anzeige gibt, sondern voele Möglichkeiten. Das kann ein Webbrowser sein, das kann in node-RED weiterverarbeitet werden, ein ESP kann das auslesen oder auf irgendwelchen Handys und Tablets. Oder auch auf einer OLED Anzeige in der Nähe der Messstelle. Ich werde wohl alles davon mal nutzen.
Gutes Beispiel, da gibts genau das gleiche Problem. Danke!
Wahrscheinlich ist das die einzig richtige, bzw. beste Lösung.
Hab grade nochmal nachgeschaut: Der Fahrrad-Tacho aktualisiert zu festen Zeiten, die relativ selten sind, im Vergleich zu den üblichen Pulsraten. Und er nimmt bei ausbleibendem Puls die Zeit seit letztem Puls, zeigt also fälschlich langsames Abbremsen statt des echten plötzlichen Stopps.
Ich würde es etwas dynamischer gestalten:
Schnellestens bei jedem Impuls für die MQTT "Anzeige", das ist einfach.
Für die Datenbank den Durchschnittswert pro Minute.
Wenn innerhalb einer Minute z.B. nur die Hälfte der Minute Wasser abgenommen wird, dann sieht es so aus, als ob die Abnahme sinkt. Das ist okay.
Und für die dynamische MQTT Anzeige dann so wie es der Fahrradtacho macht, also ein Stück weit abschätzen in der Größenordnung des geringsten zu erwartenden Durchflusses.
Das werde ich nächste Woche mal im Angriff nehmen und testen.
Dann werde ich auch im der Lage sein Testdaten bereitzustellen und habe sicherlich auch eine Rückmeldung wie sich das in der Praxis bewährt.