Volumenstrom messen: Ideensammlung

Begonnen von JonesFXR, 04 August 2019, 19:04:09

Vorheriges Thema - Nächstes Thema

JonesFXR

Hi,
nachdem ich in den letzten Monaten erfolgreich meine Hausautomation mit Hilfe des Wikis
und eifrigem Lesen hier im Forum mein Hausautomation realisiert habe,
stehe ich bei einem Teil meines neuen Projektes auf dem Schlauch und bräuchte von
Euch mal einen Fingerzeig in die richtige Richtung.
Mein neues Projekt ist eine automatische Poolsteuerung mit Temperaturmessung, Solarsteuerung,
Filterdruckmessung, Füllstandsanzeige etc.. Irgendwann auch mall Redox/Chlor und PH-Messung und - Regulierung. Dazu wird später noch Gartenlichtsteuerung, sowie Bewässerung kommen
Die meisten Sensoren und Module(Horter Module über I2C, 1-Wirebus, Signalduino...) habe ich zusammen
und angeschlossen. So weit, so gut.
Jetzt möchte ich jedoch eine Volumenstrommessung auf der Saugseite meiner Pooolpumpe durchführen.
Dadurch kann ich erkennen, ob die Skimmer verstopft sind.
Implementieren möchte ich das mit folgendem Durchflussmesser: https://de.aliexpress.com/item/32812172932.html (YF-DN50)

Jetzt ist die Frage, wie schliesse ich den Sensor am besten am Raspi an bzw. wie binde ich den in FHEM ein.
Eine kabelgebundene Lösung bietet sich am ehesten an, da der Sensor in der Nähe vom Kleinverteiler mit
dem Raspi sitzen wird. Das ganze wird auf nem Raspi 4 mit 4GB laufen. Ein bisschen Overload, ich weiss.
Aber für meinen Raspi 2 hätte ich mir noch bluetooth- und wifi-dongle (evtl. noch aktiven usb-hub) zulegen
müssen und der Platz im Kleinverteiler wird langsam eng.

Einige Ideen, die ich gefunden habe, wären
- Arduino mit Firmata (Arduinos habe ich noch liegen)
- Arduino mit MQTT
- direkt an nem GPIO (Step-Down nicht vergessen ;-) ):
   hier dann die Option Impulsauswertung und Umrechnung in FHEM oder Backgroundscript

Vieleicht hat jemand von Euch in einem anderen Zusammenhang ähnliches implementiert
und kann mir eine Idee oder Lösungsansatz liefern.

Bin für jeden Hinweis dankbar.

gruss
jones



PeMue

#1
Hallo jones,

ich würde das Ganze an einem GPIO Pin des Raspberry Pi's machen.
Welche Impulsform kommt denn aus dem Zähler raus? Nur etwas geschaltetes (und man braucht einen Pull-Up) oder eine Spannung (PWM)?. Im zweiteren Fall brauchst Du einen Pegelwandler.
Zitat Aliexpress:
ZitatAusgang Wellenform: Quadrat Welle, ausgang puls signal.
Das ist dann vermutlich PWM und Du musst den Pegelwandler (R-Teiler) in Abhängigkeit der Versorugngsspannung anpassen. Ggf. vorher mit dem Oszilloskop messen.
Generell sollte der Volumenstrommesser sollte nicht zu weit weg von der Auswerteeinheit sein (Kabellänge).
Es gibt auch Ansätze mit ESPEasy, aber das ist m.E. Overkill.

Gruß Peter
RPi3Bv1.2 rpiaddon 1.66 6.0 1xHM-CC-RT-DN 1.4 1xHM-TC-IT-WM 1.1 2xHB-UW-Sen-THPL-O 0.15 1x-I 0.14OTAU  1xCUNO2 1.67 2xEM1000WZ 2xUniroll 1xASH2200 3xHMS100T(F) 1xRFXtrx 90 1xWT440H 3xTFA30.3150 5xFA21
RPi1Bv2 LCDCSM 1.63 5.8 2xMAX HKT 1xMAX RT V200KW1 Heizung Wasser

JonesFXR

Hallo Peter,
Pegelwandler ist klar. Kabellönge zwischen Durchflussmesser und Raspi wären ca 100cm.

Direktanschluss und dann wie weiter? Messung alle 30 min würde mir reichen.
Script mir Cronjob? wie dann die werteübergabe?
oder mit at script ausführen?
eigenes Device dafür wäre natürlich am coolsten. dann müsste ich mich doch glatt mal dransetzen
und dafür ein Modul schreiben, falls es nichts ähnliches oder einen workaround gibt.

gruss jones

PeMue

Hallo jones,

ich habe das mit dem Wasserzähler (Schaltausgang, braucht einen Pull-Up) so gelöst:
#------------------------------------------------------------------------------
# water counter over RaspberryPi GPIO 31 (P5-6) and GND (P5-8)
define WZpin RPI_GPIO 31
attr WZpin active_low yes
attr WZpin devStateIcon on:ios-on-blue.png off:ios-off
attr WZpin direction input
attr WZpin interrupt both
attr WZpin pud_resistor up
attr WZpin room 3.2_Wasser
attr WZpin toggletostate yes
# counter module
define Wasser HourCounter WZpin:on WZpin:off
# prepare reading for every 15 minutes difference to before
define Wasser15min_at at +*00:15:00 {\
my $last=ReadingsVal("Wasser", "counts15min_last", "0");;;; \
my $act=ReadingsVal("Wasser","countsOverall","0");;;; \
my $val15min=$act-$last;;;; \
fhem "setreading Wasser counts15min $val15min";;;; \
fhem "setreading Wasser counts15min_last $act";;;; \
}
attr Wasser15min_at room 3.2_Wasser
# prepare reading total water volume in every night
define WasserDay_at at *23:59:30 {my $new=ReadingsVal("Wasser","countsPerDay","0");;fhem "setreading Wasser countsPerDay_tot $new";;}
attr WasserDay_at room 3.2_Wasser
attr Wasser event-min-interval countsOverall:600
attr Wasser event-on-change-reading countsPerDay
attr Wasser event-on-update-reading counts15min,countsPerDay_tot
attr Wasser room 3.2_Wasser
# log values
define Wasser_log FileLog ./log/wasser-%Y-%m.log Wasser:countsOverall:.*|Wasser:countsPerDay:.*|Wasser:counts15min:.*
define 1_Wasser_svg SVG Wasser_log:PM_wasser:CURRENT
attr 1_Wasser_svg label "Wasserverbrauch: Min $data{min1}, Max $data{max1}, Last $data{currval1}"
attr 1_Wasser_svg room 3.2_Wasser
define Wasser_day_log FileLog ./log/wasser_d-%Y-%m.log Wasser:countsPerDay_tot:.*
define 2_Wasser_day_svg SVG Wasser_day_log:PM_wasser_d:CURRENT
attr 2_Wasser_day_svg label "Wasserverbrauch pro Tag: Min $data{min1}, Max $data{max1}, Last $data{currval1}"
attr 2_Wasser_day_svg fixedrange month
attr 2_Wasser_day_svg room 3.2_Wasser
# summary of readings
define 0_Wasser readingsGroup <Wasser>,<Gesamt>,<gestern>,<aktuell>,<15 min.> <hr> Wasser:countsOverall,countsPerDay_tot,countsPerDay,counts15min
attr 0_Wasser valueFormat {countsOverall => "%.0f l", countsPerDay_tot => "%.0f l", countsPerDay => "%.0f l", counts15min => "%.0f l"}
attr 0_Wasser room 3.2_Wasser
#------------------------------------------------------------------------------


Einmal mit RPI_GPIO den Pin definieren und mit HourCounter zählen lassen. Da ich noch 15 min. Werte wollte, habe ich die wie oben noch definiert.

Gruß Peter
RPi3Bv1.2 rpiaddon 1.66 6.0 1xHM-CC-RT-DN 1.4 1xHM-TC-IT-WM 1.1 2xHB-UW-Sen-THPL-O 0.15 1x-I 0.14OTAU  1xCUNO2 1.67 2xEM1000WZ 2xUniroll 1xASH2200 3xHMS100T(F) 1xRFXtrx 90 1xWT440H 3xTFA30.3150 5xFA21
RPi1Bv2 LCDCSM 1.63 5.8 2xMAX HKT 1xMAX RT V200KW1 Heizung Wasser

sash.sc

Als Alternative könnte man sich noch ne Druck bzw Unterdruck Messung machen.

Gesendet von meinem MI 9 mit Tapatalk

Raspi 4B+ Bullseye ;LaCrosse; HomeMatic; MapleCUL; ZigBee; Signalduino ESP32 ; Shellys; MQTT2; Grafana mit Influxdb

JonesFXR

Hi Sash,

Druck/Unterdruck hatte ich auch überlegt.
Hatte dazu einen Thread gefunden.
Jedoch geht es bei mir nicht um das Trockenlaufen der Pumpe,
sondern nur um einen verringerten Volumenstrom.
Skimmer sind, auf Grund von Bäumen um den Pool,
häufig mit Blättern zu. Wasser wird trotzdem noch angesaugt.
Die Filterleistung geht in den Keller und der Ppol wird grün.
Wie würde ich da ohne grosse Umstände den Messbereich
des benötigten Sensors ermitteln?
Ultraschallmessung der Strömungsgeschwindigkeit hatte ich auch
schon auf dem Zettel. Sensoren habe ich liegen. Wollte das mal
spasseshalber ausprobieren.
Flowmeter scheint mir da aber die einfachste Variante.
Frage ist halt nur, wie bekomme ich die Werte nach FHEM.

gruss
jones

sash.sc

Die Frage ist auch, ob vom zeugs was dem skimmer verstopft, auch nicht dem Flow Meter blockiert?

Gesendet von meinem MI 9 mit Tapatalk

Raspi 4B+ Bullseye ;LaCrosse; HomeMatic; MapleCUL; ZigBee; Signalduino ESP32 ; Shellys; MQTT2; Grafana mit Influxdb

JonesFXR

Die Gefahr ist relativ gering, da die Skimmer feinmaschige Filterkörbe haben.
Diese setzen sich, gerade im nahenden Herbst, mit dem Laub der umstehenden Bäume zu.
Ich gebe Dir aber recht, dass das nicht auszuschliessen ist.
Da ich meine Pool-Verrohrung recht ,,modular" (mit Schraubverbindungen für die einzelnen
Segmente) vorgenommen habe, könnte ich den FlowMeter ohne grössere Umstände
durch eine andere Lösung ersetzen.
Daher würde ich es jetzt erst einmal mit der FlowMeter-Lösung probieren.

Da ich neugierig bin und gerne tüftel und bastel, werde ich bestimmt auch mal
die Unterdruck- und die Ultraschallvariante ausprobieren.
Zeitpunkt hängt allerdings davon ab, mit welchen Projekte meine bessere Hälfte
als nächstes aufwartet. :-)

gruss, jones

sash.sc

Dann viel Glück und gebe mal bitte Rückmeldung, ob und was wie funktioniert hat.

Gruß Sascha

Gesendet von meinem MI 9 mit Tapatalk

Raspi 4B+ Bullseye ;LaCrosse; HomeMatic; MapleCUL; ZigBee; Signalduino ESP32 ; Shellys; MQTT2; Grafana mit Influxdb

JonesFXR

ich denke, dass ich jetzt meine Lösung gefunden habe:
Flowmeter wird (mit Spannungsteiler) an einen GPIO angeschlossen.
Die Impulse vom Flowmeter werde ich über einen Zeitraum von 15sek zählen und dann
entsprechend in Volumenstrom umrechnen.
Um den FHEM nicht zu blockieren wird der Mechanismus in ein externes Script ausgelagert,
non blocking aufgerufen (mehrfach am Tag und nur unter bestimmten Umständen, z.B. nur wenn
die Pumpe an ist) und die Rückgabewerte mit nc in ein Dummy-Device geschrieben.

Spricht irgendetwas gegen die Lösung?

gruss, jones

PeMue

Zitat von: JonesFXR am 05 August 2019, 20:34:14
Spricht irgendetwas gegen die Lösung?
Nicht aus meiner Sicht. Bitte poste Deine Lösung, wenn sie funktioniert.

Gruß Peter
RPi3Bv1.2 rpiaddon 1.66 6.0 1xHM-CC-RT-DN 1.4 1xHM-TC-IT-WM 1.1 2xHB-UW-Sen-THPL-O 0.15 1x-I 0.14OTAU  1xCUNO2 1.67 2xEM1000WZ 2xUniroll 1xASH2200 3xHMS100T(F) 1xRFXtrx 90 1xWT440H 3xTFA30.3150 5xFA21
RPi1Bv2 LCDCSM 1.63 5.8 2xMAX HKT 1xMAX RT V200KW1 Heizung Wasser

AxelSchweiss

Hi
Bin auch gerade am Pool automatisieren.
Nachdem mir vor zwei Jahren die Pumpe wegen Kavitation (Blätter im Skimmer) verreckt ist werde ich das mit zweierlei zu lösen versuchen.
a) Ich messe die aufgenommene Leistung. Mit der Homatic Leistungsmessdose geht das recht genau. Wird aber später abgelöst.
b) Wenn ich mich Recht an den Bernouli und die Kontinuitätsgleichung erinnere sollte ich mittels Differenzdruckmessung ( Saug- und Druckseite der Pumpe) auf die Fördermenge kommen.

Den Flowmeter hatte ich verworfen weil er:
a) ein mechanisches Bauteil ist
b) einen nicht unerheblichen Strömungswiderstand darstellt.
c) auch Blasen und somit Luft zählt
d) schmutzanfällig ist

Allerdings ist deine Idee mit der Ultraschallmessung sehr interessant.
Wie geht das den ?  :o

JonesFXR

Hi Axel S. ;-),
Physik-Leistungskurs ist Jahrzehnte her, trotzdem bin ich mir nicht sicher, ob Differenzdruckmessung
funktioniert. Es kann ja eigentlich aus der Pumpe hinten nur rauskommen, was vorne reingeht.
Das würde bedeuten (vereinfacht ausgedrückt): Nimmt vorne die Wassermenge ab (und damit auch der
Unterdruck), sinkt hinten ebenfalls die Wassermenge und somit der Druck.
Aber vielleicht liest ja jemand mit, der, im Gegensatz zu mir, davon wirklich Ahnung hat und korrigiert mich.
Dann würde eher eine Einzeldruck/- unterdruckmessung, wie Peter vorgeschlagen hat, Sinn ergeben.

Ultraschallmessung ist vorerst nur eine Idee. Wobei ich da zumindest einige DIY-Ansätze im Netz
irgendwann mal gefunden hatte. Allerdings noch nicht weiter verfolgt.
Es gibt teure Lösungen, die auf diese Weise Volumenstrom messen bzw. die Strömungsgeschwindigkeit.
Dabei werden Ultraschallsender und -empfänger in einem bestimmten Abstand und Winkel an der Leitung
befestigt. Je nach Geschwindigkeit des Mediums (beim Pool wäre das das Wasser) in der Leitung, verändert
sich auch die Geschwindigkeit des Ultraschallsignals. Das mal im Groben.

gruss, jones

Wuppi68

hab das ganze hier gerade mal gelesen ...

ich würde einfach den Strom der Pumpe messen - so sich diese nicht von alleine irgendwie regelt

Jetzt auf nem I3 und primär Homematic - kein Support für cfg Editierer

Support heißt nicht wenn die Frau zu Ihrem Mann sagt: Geh mal bitte zum Frauenarzt, ich habe Bauchschmerzen

AxelSchweiss

Zitat von: JonesFXR am 06 August 2019, 19:33:57
Hi Axel S. ;-),
Physik-Leistungskurs ist Jahrzehnte her, trotzdem bin ich mir nicht sicher, ob Differenzdruckmessung
funktioniert. Es kann ja eigentlich aus der Pumpe hinten nur rauskommen, was vorne reingeht.
Das würde bedeuten (vereinfacht ausgedrückt): Nimmt vorne die Wassermenge ab (und damit auch der
Unterdruck), sinkt hinten ebenfalls die Wassermenge und somit der Druck.
Aber vielleicht liest ja jemand mit, der, im Gegensatz zu mir, davon wirklich Ahnung hat und korrigiert mich.
Dann würde eher eine Einzeldruck/- unterdruckmessung, wie Peter vorgeschlagen hat, Sinn ergeben.

Ultraschallmessung ist vorerst nur eine Idee. Wobei ich da zumindest einige DIY-Ansätze im Netz
irgendwann mal gefunden hatte. Allerdings noch nicht weiter verfolgt.
Es gibt teure Lösungen, die auf diese Weise Volumenstrom messen bzw. die Strömungsgeschwindigkeit.
Dabei werden Ultraschallsender und -empfänger in einem bestimmten Abstand und Winkel an der Leitung
befestigt. Je nach Geschwindigkeit des Mediums (beim Pool wäre das das Wasser) in der Leitung, verändert
sich auch die Geschwindigkeit des Ultraschallsignals. Das mal im Groben.
Differenzdruck war natürlich falsch ... oder unpräzise.  ;D
Ich meinte den Druck vor und nach der Pumpe.
Ich muss mir das ganze aber mal herleiten ...  irgendwo im Keller stehen noch die Bücher aus der Strömungslehre Vorlesung.