Forum: Mikrocontroller und Digitale Elektronik Impuls/Liter in Liter/Minute umrechnen


von Neuling A. (jesuisla)


Lesenswert?

Bonjour Leute.

mein Ziel ist eine automatisierte Wasservebrauchsmessung durch eine
Impulserfassung, als Hardware habe ich eine D1 Mini, eine Raspberry Pico
und eine Esp 8266, zur Erfassung der Impulse einer Kommunikationsmodul
für Modulzählwerk Impuls +m:
https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=&ved=2ahUKEwj6wOuK46L4AhXrm_0HHW1eCPsQFnoECAIQAQ&url=https%3A%2F%2Fwww.allmess.de%2Ffileadmin%2Fmultimedia%2Falle_Dateien%2FMA%2FMA_12715-AC%2520MA%2520BM%2Bm%2520PM%2Bm_TS0921.pdf&usg=AOvVaw2CZ3bYjB_D4O1cSOpSgazU
, also ich arbeite mit der MODULTYP: PM+m, der eine
Impulswertigkeiten von 1, 10 Liter oder 100 Liter.

ich habe hier einen Programm entwickelt der die Impulse per Interrupt 
erkennen soll:

from   machine import Pin
import time
import network
triggerPin = Pin(0, Pin.IN, Pin.PULL_UP)
count = 0
def TriggerCount(pin):
    global count
    count += 1
    print(count)
triggerPin.irq(trigger=Pin.IRQ_RISING, handler=TriggerCount)
while True:
    time.sleep(1)
    counted = count
    print("{} pulses".format(counted))

Ziel ist es noch den momentanen Durchfluss zu berechnen. Kann mir jemand 
einen Tip geben mit welchen Mitteln ich den Impuls in einer noch 
festzulegenden Periode abgreifen kann? Ein Zähler mit einstellbaren 
Zeitraum? in der Datasheet sehe ich nicht wie viel Impulse pro Minute 
oder die Ausgangsfrequenz, habt ihr Ideen?

Bspw: 2 Impulse / 10 sec = 12l/min

beste Grüße.

Youssef

von A. S. (rava)


Lesenswert?

überlege dir, ob du einen gleitenden Mittelwert brauchst, oder ob es 
genügt, den Zähler alle 10sec zu resetten.

Im ersten Fall speicherst du eine ganze Historie mit Zeitstempeln.

Man sollte vermutlich beide Methoden kombinieren, z.B. ein Ringbuffer 
von Zählern, jeder Zähler ist für eine Sekunde aktiv. Dann kannst du 
einen gleitenden Mittelwert über längere Zeiträume ausgeben, der aber 
jede Sekunde neu berechnet wird.

von Neuling A. (jesuisla)


Lesenswert?

also erstmal den Zähler alle 10s oder wie auch immer resetten aber mir 
fehlt die Formel um den Wasserverbrauch zu rechnen, da bin ich jetzt 
verwirrt, weil ich keine Infos hab, wie viele Impulse pro Minute diesen 
Impulsgeber gibt.. ich weiss nur, dass die Impulswertigkeit 1, 10L oder 
100 Liter ist und die Impulslänge 200ms für 1L und >3s ist für 10 und 
100 Liter, was versteht man jetzt darunter? reichen diese Infos um die 
Formel zu finden?

von A. S. (rava)


Lesenswert?

achso, dann musst du wohl oder übel erstmal die Länge der Impulsflanken 
messen, oder? Ein reiner trigger auf "rising" wird dafür nicht 
ausreichen.

von Neuling A. (jesuisla)


Lesenswert?

okey, wie kann das bitte machen? was brauch ich denn dafür, anstatt 
einen reinen Trigger auf rising?

von Karl (Gast)


Lesenswert?

Seit ihr komisch?

Der Zähler zählt den Verbrauch, nicht den Durchfluss. Wenn 5 l in einer 
min durchfließen gibt der Zähler 5 Impulse aus (steigende Flanken). Die 
Länge der Impulsflanken ist doch irrelevant. Den Durchfluss bekommt man 
einfach mit Zählen von Zeit und Anzahl:

q = (V2-V1)/(t2-t1)

q - Durchfluss
V - Volumen
t - Zeit

von Neuling A. (jesuisla)


Lesenswert?

Karl schrieb:
> Seit ihr komisch?
>
> Der Zähler zählt den Verbrauch, nicht den Durchfluss. Wenn 5 l in einer
> min durchfließen gibt der Zähler 5 Impulse aus (steigende Flanken)

also ein delay für 1 Minute und counted ist ja dann wie viel Liter pro 
Minute? da Liter = Impuls?

von Karl (Gast)


Lesenswert?

Neuling A. schrieb:
> also ein delay für 1 Minute

Überleg dir wie es ohne delay geht.

von Forist (Gast)


Lesenswert?

Neuling A. schrieb:
> zur Erfassung der Impulse einer Kommunikationsmodul
> für Modulzählwerk Impuls +m:
> 
https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=&ved=2ahUKEwj6wOuK46L4AhXrm_0HHW1eCPsQFnoECAIQAQ&url=https%3A%2F%2Fwww.allmess.de%2Ffileadmin%2Fmultimedia%2Falle_Dateien%2FMA%2FMA_12715-AC%2520MA%2520BM%2Bm%2520PM%2Bm_TS0921.pdf&usg=AOvVaw2CZ3bYjB_D4O1cSOpSgazU

Schön, dass du uns jetzt erzählst, wie du das Dokument gefunden hast.
Meinst du nicht, dass der direkt Link auf die Montage- und 
Programmieranleitung für die BM +m und PM +m Kommunikationsmodule 
gereicht hätte?
https://www.allmess.de/fileadmin/multimedia/alle_Dateien/MA/MA_12715-AC%20MA%20BM+m%20PM+m_TS0921.pdf

von J. S. (jojos)


Lesenswert?

meinst du nicht das das Scheißegal ist und nicht jeder Lust hat die 
Links umzufummeln?

von Neuling A. (jesuisla)


Lesenswert?

Karl schrieb:
> Neuling A. schrieb:
>> also ein delay für 1 Minute
>
> Überleg dir wie es ohne delay geht.

hast Du bitte einen Hinweis?:)

von J. S. (jojos)


Lesenswert?

und das soll dann über den D1 Mini oder ESP8266 weitergeleitet werden? 
Das ginge mit den Standardpaketen wie Tasmota oder ESPEasy einfacher, da 
können Eingänge gleich als Zähler konfiguriert werden.

von Forist (Gast)


Lesenswert?

Neuling A. schrieb:
> hast Du bitte einen Hinweis?:)

aus wenn ich nicht direkt angesprochen bin:
millis()

von Forist (Gast)


Lesenswert?

J. S. schrieb:
> meinst du nicht das das Scheißegal ist und nicht jeder Lust hat die
> Links umzufummeln?

Wär's mir scheißegal, hätte ich den Till nicht hervorgeholt.

Aber jeder muss selber wissen, wieviel er von seiner Suchhistorie hier 
öffentlich posten möchte.

von J. S. (jojos)


Lesenswert?

millis() in micropython? Hauptsache an Formalismen hochziehen.

von Stefan F. (Gast)


Lesenswert?

J. S. schrieb:
> millis() in micropython?

Da Pendant in µPython ist time.ticks_ms()

von Karl (Gast)


Lesenswert?

Neuling A. schrieb:
> hast Du bitte einen Hinweis?:)

Blink without delay googeln.

von Biggi G. (Gast)


Lesenswert?

J. S. schrieb:
> meinst du nicht das das Scheißegal ist und nicht jeder Lust hat
> die
> Links umzufummeln?

Genau! Also mich interessiert der Lebenslauf des TO sogar brennend.

Also der TO hat es ja schon geschrieben:

 2 Impulse / 10 sec = 12l/min

Das muss man einfach umformen, zuerst mal die Minuten. Statt min 
schreibt erst man 60 sec:

 2 Impulse / 10 sec = 12l / 60sec

Dann tut man beide Seiten von der Formel mal 5 nehmen. Dann steht da:

 5 * 2 Impulse / 10 sec = 5 * 12l / 60sec

Und nun tut man mal die Zahlen ausmultiplizieren, also:

 10 Impulse / 10 sec = 60l / 60sec

So und nun kann man kürzen und erhält:

 1 Impuls/sec = 1l/sec

Nun kann man noch beide Seiten das sec eliminieren und erhält:

1 Impuls = 1 l

Voila!!!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.