Durchfluss die Zweite

Hallo,

Erst einmal vielen Dank an alle, die mir geholfen haben. Leider funktioniert der Sketch für den Durchfluss es immer noch nicht wie es soll und neben den ganzen unterschiedlichen Sketchen zur Anzeige des Durchflusses, macht mich alles andere einen nur irre, deswegen:

  1. Kann mir bitte jemand eine Seite empfehlen oder mir kurz beschreiben, wie ich mit einem Durchflusssensor den aktuellen Durchfluss und den gesamten Durchfluss seit Programmstart auslesen kann? Ich habe was von Flanken gehört, kann mir aber nichts darunter vorstellen

  2. besser wäre gleich ein Sketch. Hat jmd. einen zur Hand? (Ich weiß, sowas fragt man nicht, aber nach zig Stunden such ich eigentlich nur eine Lösung. Ich programmiere lieber gern mit dem LCD oder den NeoPixel....diese Sache hier ist mir zu schwierig).

Angezeigt werden solle es über ein 20x4 LCD

Hier der Durchflussensor:

Ich kenne mich leider nicht mit dem Sensor aus, aber auf der von dir verlinkten Seite findest du den Download eines Beispielsketches.
Hast du den schon getestet?

Ganz allgemein: Durchflußsensoren haben keinen Speicher, demzufolge kann man da auch nichts "auslesen".

Durchflußsensoren geben pro gemessener Menge Medium einen Impuls ab, den muss man zählen und sich merken. Die Anzahl wird dann mit der Mediummenge pro Impuls (einer Eigenschaft des Sensors) multipliziert und du kennst die Menge.

Man darf aber keine Impulse verpassen oder den bisherigen Zählerstand vergessen, sonst stimmt die Berechnung nicht.

Wenn der ausführende Controller durch die Impulse allzusehr belastet wird oder aufgrund anderer Prozesse die Gefahr besteht, Sensorimpulse zu verpassen, kann man natürlich z.B. einen hardware-basierenden Puffer einbauen, z.B. einen 8-Bit-Zählerchip. Dann laufen die Impulse zunächst dort auf und müssen nur noch in größeren Abständen abholt werden, spätestens, wenn der Zählbereich erschöpft ist (8-Bit = 256 Impulse). Nach dem "Auslesen" muss man den Zählerchip zurücksetzen ...

Letztlich musst Du nur die Impulse zählen. Und jeder Impuls hat 2 Flanken - also praktisch der Moment, wo sich das Signal ändert.

____| ist bildlich dargestellt ne steigende Flanke, von 0 auf 5 Volt beispielsweise. Also von Low auf High. Zurück von High auf Low ist dann die fallende Flanke.

Soweit klar?

Dein Sensor gibt sowas aus. Und je nach Anzahl der Impulse pro Zeit entspricht das dem Durchfluss.

@ HotSystems

ja kenne ich. Der Sketch zeigt die Liter pro Minute an. Aber den habe ich gesucht, da kann ich vlt was machen, danke

@ qualidat & Klaus_ww danke!

Gibt es eine Methode mir die Liter "endlos anzeigen zu lassen"? Wenn ich den Rechner 10 Stunden im Betrieb hab und pro Min. ca. 3 Liter durchlaufen, müsste auf dem LCD 1800 Liter stehen. Bislang hing er sich bei ca. 200 auf. Wenn das nicht geht, wie kann ich einen automatischen Neustart des Programmes durchführen lassen?

Wenn sich der Controller aufhängt oder eine Variable überlauft hast du was falsch gemacht. Da muss man herausfinden was und das abstellen.

Okay, kann mir bitte jemand mal diese Stelle erklären bzw. eine Syntax erstellen? Ich versteh das nicht ganz

// if a plastic sensor use the following calculation
// Sensor Frequency (Hz) = 7.5 * Q (Liters/min)
// Liters = Q * time elapsed (seconds) / 60 (seconds/minute)
// Liters = (Frequency (Pulses/second) / 7.5) * time elapsed (seconds) / 60
// Liters = Pulses / (7.5 * 60)

float liters = pulses;
liters /= 7.5;
liters /= 60.0;

der ganze Code:

Code

Das Beispiel zeigt den Durchfluß in Liter pro Minute an, addiert aber die Liter nirgendwo auf, sehe ich zumindest nicht. Daher wüßte ich auch nicht, welcher Wert überlaufen könnte.

Ja, das Beispiel ist aber keine Formel, nur eine Wegbeschreibung. Ich bräuchte jetzt eine Formel bzw. eine Syntax.

Ich weiß nicht, ob der Sketch oben, sich überschlägt. Das kann ich erst heut Abend sagen, da ich auf Arbeit bin. Er sollte wenigstens bis 2000 Liter zählen können.

Ich habe mich jetzt an diesem Sketch (dieser hier) orientiert und dieses zeigt mir nur die Liter an, die insgesamt durchgelaufen sind. Da man l/min mit 2 Sensoren berechnen kann. Einen Brass und einen Plastik. Der Programmierer hat nur eben die Formel weggelassen und schildert nur den Weg der Berechnung

Als nächstes würde ich gern eben die l/min DAZU anzeigen lassen und bräuchte Hilfe bei der "Formelerstellung", weil

// Sensor Frequency (Hz) = 7.5 * Q (Liters/min)
// Liters = Q * time elapsed (seconds) / 60 (seconds/minute)
// Liters = (Frequency (Pulses/second) / 7.5) * time elapsed (seconds) / 60
// Liters = Pulses / (7.5 * 60)

sagt mir gar nix. Q ist wohl die Quantität....k.A. wo ich das sehen soll/kann, da Q schon mit l/min angegeben ist.

Hz ist mein mir so um die 52, d.h.: 52 = 7.5 * ?

Den Rest verstehe ich erst recht nicht (time elapsed). Deswegen frage ich, ob mir jmd. dazu eine Formel/ Syntax schreiben kann

Ich habe das jetzt mal beobachtet. Wenn Puls auf ca. 65000 steht, fängt er natürlich von vorn an. Ich gehe davon aus, dass der Arduino ungeeignet dafür ist

Nein. Schau dir mal den Werte-Bereich der Datentypen an. In diesem Fall unsigned int (auch system-unabhängig als uint16_t bekannt):
https://www.arduino.cc/en/Reference/UnsignedInt

Was du willst ist unsigned long (uint32_t):
https://www.arduino.cc/en/Reference/UnsignedLong

Kannst du auch so ausrechnen. Ein Integer ohne Vorzeichen geht bis 2 ^ n - 1. unsigned int hat 16 Bit. Unsigned long hat 32 Bit