- Erforderliche Komponenten
- YFS201 Wasserdurchflusssensor
- Schaltplan
- Code des Arduino-Wasserdurchflusssensors
- Arduino Wasserdurchflusssensor funktioniert
Wenn Sie jemals große Produktionsunternehmen besucht haben, werden Sie als erstes feststellen, dass alle automatisiert sind. Die Softdrink-Industrie und die chemische Industrie müssen die Flüssigkeiten, mit denen sie während dieses Automatisierungsprozesses umgehen, ständig messen und quantifizieren. Der am häufigsten verwendete Sensor zur Messung des Flüssigkeitsflusses ist ein Durchflusssensor. Mithilfe eines Durchflusssensors mit einem Mikrocontroller wie Arduino können wir die Durchflussrate berechnen, das Flüssigkeitsvolumen, das durch ein Rohr geleitet wurde, überprüfen und nach Bedarf steuern. Neben der verarbeitenden Industrie finden sich Durchflusssensoren auch in der Landwirtschaft, in der Lebensmittelverarbeitung, im Wassermanagement, im Bergbau, im Wasserrecycling, bei Kaffeemaschinen usw. Ein Wasserdurchflusssensor ist eine gute Ergänzung für Projekte wie den automatischen Wasserspender und intelligente Bewässerungssysteme, bei denen wir den Flüssigkeitsfluss überwachen und steuern müssen.
In diesem Projekt werden wir einen Wasserdurchflusssensor mit Arduino bauen. Wir werden den Wasserdurchflusssensor mit Arduino und LCD verbinden und ihn so programmieren, dass er das Wasservolumen anzeigt, das durch das Ventil gelaufen ist. Für dieses spezielle Projekt werden wir den Wasserdurchflusssensor YF-S201 verwenden, der einen Hall-Effekt verwendet, um die Durchflussrate der Flüssigkeit zu erfassen.
Erforderliche Komponenten
- Wasserdurchflusssensor
- Arduino UNO
- LCD (16x2)
- Stecker mit Innengewinde
- Kabel anschließen
- Rohr
YFS201 Wasserdurchflusssensor
Der Sensor hat 3 Drähte ROT, GELB und SCHWARZ, wie in der folgenden Abbildung gezeigt. Das rote Kabel wird für eine Versorgungsspannung zwischen 5 V und 18 V verwendet, und das schwarze Kabel wird an GND angeschlossen. Das gelbe Kabel wird für die Ausgabe (Impulse) verwendet, die von einer MCU gelesen werden können. Der Wasserdurchflusssensor besteht aus einem Windradsensor, der die durch ihn hindurchgelaufene Flüssigkeitsmenge misst.
Die Funktionsweise des Wasserdurchflusssensors YFS201 ist einfach zu verstehen. Der Wasserdurchflusssensor arbeitet nach dem Prinzip des Hall-Effekts. Der Hall-Effekt ist die Erzeugung der Potentialdifferenz über einem elektrischen Leiter, wenn ein Magnetfeld in der Richtung senkrecht zu der des Stromflusses angelegt wird. Der Wasserdurchflusssensor ist in einen magnetischen Hall-Effekt-Sensor integriert, der bei jeder Umdrehung einen elektrischen Impuls erzeugt. Das Design ist so konzipiert, dass der Hall-Effekt-Sensor vom Wasser abgeschottet ist und der Sensor sicher und trocken bleibt.
Das Bild des Sensormoduls YFS201 allein ist unten dargestellt.
Für die Verbindung mit dem Rohr- und Wasserdurchflusssensor habe ich zwei Steckverbinder mit Innengewinde verwendet, wie unten gezeigt.
Gemäß den YFS201-Spezifikationen beträgt der maximale Strom, den es bei 5 V zieht, 15 mA und der Arbeitsdurchsatz 1 bis 30 Liter / Minute. Wenn die Flüssigkeit durch den Sensor fließt, berührt sie die Rippen des Turbinenrads, das sich im Weg der fließenden Flüssigkeit befindet. Die Welle des Turbinenrades ist mit einem Hall-Effekt-Sensor verbunden. Aus diesem Grund erzeugt jedes Mal, wenn Wasser durch das Ventil fließt, Impulse. Jetzt müssen wir nur noch die Zeit für die Pluspunkte messen oder die Anzahl der Impulse in 1 Sekunde zählen und dann die Durchflussraten in Liter pro Stunde (L / H) berechnen und dann das Volumen mithilfe einer einfachen Umrechnungsformel ermitteln von dem Wasser, das durch es gegangen war. Um die Impulse zu messen, werden wir Arduino UNO verwenden. Das Bild unten zeigt Ihnen die Pinbelegung des Wasserdurchflusssensors.
Schaltplan
Das Schaltbild des Wasserdurchflusssensors ist unten dargestellt, um einen Wasserdurchflusssensor und ein LCD (16x2) mit Arduino zu verbinden. Wenn Sie mit Arduino und LCDs noch nicht vertraut sind, können Sie diesen Artikel über Schnittstellen zwischen Arduino und LCD lesen.
Die Verbindung des Wasserdurchflusssensors und des LCD (16x2) mit dem Arduino ist unten in Tabellenform angegeben. Beachten Sie, dass der Poti zwischen 5 V und GND angeschlossen ist und Pin 2 des Potis mit dem V0-Pin des LCD verbunden ist.
S.NO. |
Pin des Wasserdurchflusssensors |
Arduino Pins |
1 |
Rotes Kabel |
5V |
2 |
Schwarz |
GND |
3 |
Gelb |
A0 |
S.No. |
LCD |
Arduino |
1 |
Vss |
GND (Bodenschiene des Steckbretts) |
2 |
VDD |
5V (positive Schiene des Steckbretts) |
3 |
Überprüfen Sie für den Anschluss an V0 den obigen Hinweis |
|
4 |
RS |
12 |
5 |
RW |
GND |
6 |
E. |
11 |
7 |
D7 |
9 |
8 |
D6 bis D3 |
3 bis 5 |
Ich habe ein Steckbrett verwendet, und als die Verbindung gemäß dem oben gezeigten Schaltplan hergestellt wurde, sah mein Testaufbau ungefähr so aus.
Code des Arduino-Wasserdurchflusssensors
Der vollständige Arduino-Code des Wasserdurchflusssensors befindet sich unten auf der Seite. Die Erklärung des Codes lautet wie folgt.
Wir verwenden die Header-Datei des LCD, die die Verbindung des LCD mit Arduino erleichtert, und die Pins 12,11,5,4,3,9 sind für die Datenübertragung zwischen LCD und Arduino vorgesehen. Der Ausgangspin des Sensors ist mit Pin 2 von Arduino UNO verbunden.
volatile int flow_frequency; // Misst Durchflusssensorimpulse // Berechnete Liter / Stunde Float vol = 0.0, l_minute; vorzeichenloser char flowsensor = 2; // Sensoreingang ohne Vorzeichen long currentTime; unsigned long cloopTime; #einschließen
Diese Funktion ist eine Interrupt-Serviceroutine und wird immer dann aufgerufen, wenn an Pin2 von Arduino UNO ein Interrupt-Signal anliegt. Für jedes Interrupt-Signal wird die Anzahl der Variablen flow_frequency um 1 erhöht. Weitere Informationen zu den Interrupts und ihrer Funktionsweise finden Sie in diesem Artikel über Arduino-Interrupts.
void flow () // Interrupt-Funktion { flow_frequency ++; }}
Im Void-Setup teilen wir der MCU mit, dass der Pin 2 des Arduino UNO als INPUT verwendet wird, indem wir den Befehl pinMode (Pin, OUTPUT) geben. Bei Verwendung des Befehls attachInterrupt wird die Flussfunktion aufgerufen, wenn das Signal an Pin 2 ansteigt. Dies erhöht die Anzahl in der Variablen flow_frequency um 1. Die aktuelle Zeit und cloopTime werden verwendet, damit der Code alle 1 Sekunde ausgeführt wird.
void setup () { pinMode (Durchflusssensor, INPUT); digitalWrite (Durchflusssensor, HIGH); Serial.begin (9600); lcd.begin (16, 2); attachInterrupt (digitalPinToInterrupt (Durchflusssensor), flow, RISING); // Setup Interrupt lcd.clear (); lcd.setCursor (0,0); lcd.print ("Wasserdurchflussmesser"); lcd.setCursor (0,1); lcd.print ("Circuit Digest"); currentTime = millis (); cloopTime = currentTime; }
Die if-Funktion stellt sicher, dass der darin enthaltene Code jede Sekunde ausgeführt wird. Auf diese Weise können wir die Anzahl der vom Wasserdurchflusssensor pro Sekunde erzeugten Frequenzen zählen. Die Impulseigenschaften der Durchflussrate aus dem Datenblatt geben an, dass die Frequenz 7,5 multipliziert mit der Durchflussrate beträgt. Die Durchflussrate beträgt also Frequenz / 7,5. Nachdem Sie die Durchflussrate in Litern / Minute ermittelt haben, teilen Sie sie durch 60, um sie in Liter / Sek. Umzurechnen. Dieser Wert wird jede Sekunde zur vol-Variablen addiert.
void loop () { currentTime = millis (); // Berechne und drucke jede Sekunde Liter / Stunde if (currentTime> = (cloopTime + 1000)) { cloopTime = currentTime; // Aktualisiert die CloopTime, wenn (Durchflussfrequenz! = 0) { // Pulsfrequenz (Hz) = 7,5 Q, Q ist die Durchflussrate in L / min. l_minute = (Durchflussfrequenz / 7,5); // (Pulsfrequenz x 60 min) / 7,5 Q = Durchflussrate in L / Stunde lcd.clear (); lcd.setCursor (0,0); lcd.print ("Rate:"); lcd.print (l_minute); lcd.print ("L / M"); l_minute = l_minute / 60; lcd.setCursor (0,1); vol = vol + l_minute; lcd.print ("Vol:"); lcd.print (vol); lcd.print ("L"); flow_frequency = 0; // Zähler zurücksetzen Serial.print (l_minute, DEC); // Liter / Stunde drucken Serial.println ("L / Sec"); }}
Die else-Funktion funktioniert, wenn innerhalb der angegebenen Zeitspanne keine Ausgabe vom Wasserdurchflusssensor erfolgt.
sonst { lcd.clear (); lcd.setCursor (0,0); lcd.print ("Rate:"); lcd.print (flow_frequency); lcd.print ("L / M"); lcd.setCursor (0,1); lcd.print ("Vol:"); lcd.print (vol); lcd.print ("L"); }}
Arduino Wasserdurchflusssensor funktioniert
In unserem Projekt haben wir den Wasserdurchflusssensor an ein Rohr angeschlossen. Wenn das Ausgangsventil der Rohrleitung geschlossen ist, ist der Ausgang des Wasserdurchflusssensors Null (keine Impulse). Am Pin 2 des Arduino ist kein Interrupt-Signal zu sehen, und die Anzahl der Durchflussfrequenzen ist Null. In diesem Zustand funktioniert der Code, der in die else-Schleife geschrieben wird.
Wenn das Ausgangsventil der Rohrleitung geöffnet ist. Das Wasser fließt durch den Sensor, der seinerseits das Rad im Sensor dreht. In diesem Zustand können wir Impulse beobachten, die vom Sensor erzeugt werden. Diese Impulse wirken als Interrupt-Signal an die Arduino UNO. Für jedes Interrupt-Signal (ansteigende Flanke) wird die Anzahl der Variablen flow_frequency um eins erhöht. Die aktuelle Variable time und cloopTIme stellen sicher, dass für jede Sekunde der Wert von flow_frequency zur Berechnung von Durchflussrate und Volumen herangezogen wird. Nach Abschluss der Berechnung wird die Variable flow_frequency auf Null gesetzt und die gesamte Prozedur von vorne gestartet.
Die vollständige Arbeit finden Sie auch in dem Video, das am Ende dieser Seite verlinkt ist. Ich hoffe, Ihnen hat das Tutorial gefallen und Sie haben etwas Nützliches genossen. Wenn Sie Probleme haben, lassen Sie diese bitte im Kommentarbereich oder nutzen Sie unsere Foren für andere technische Fragen.