понедельник, 8 января 2018 г.

Working with Water Flow Sensors & Arduino

Working with Water Flow Sensors & Arduino
arduino water flow sensor project

Effective water management involves supplying water according to the real requirement, and thus measuring water is very essential step in water management systems. There are many water flow measurement techniques as well as different types of water flow meters used to measure the volume of water flow in pipelines but these all are too costly. This article describes ideas for design and development of low cost automatic water flow meters, with the help of readily-available and low-cost water flow sensors.


YF-S201 Hall-Effect Water Flow Sensor


Accurate flow measurement is an essential step both in the terms of qualitative and economic points of view. Flow meters have proven excellent devices for measuring water flow, and now it is very easy to build a water management system using the renowned water flow sensor YF-S201. This sensor sits in line with the water line and contains a pinwheel sensor to measure how much water has moved through it. There is an integrated magnetic Hall-Effect sensor that outputs an electrical pulse with every revolution. The “YFS201 Hall Effect Water Flow Sensor” comes with three wires: Red/VCC (5-24V DC Input), Black/GND (0V) and Yellow/OUT (Pulse Output). By counting the pulses from the output of the sensor, we can easily calculate the water flow rate (in litre/hour – L/hr) using a suitable conversion formula.


yf-s201

yf-s201 water flow sensor

Hardware Hook Up


Connecting the water flow sensor to arduino requires minimal interconnection. Connect the VCC (Red) and GND (Black) wires of the water flow Sensor to the 5v and Gnd of Arduino, and link Pulse Output (Yellow) wire of the water flow sensor to Arduino’s digital pin 2. Note that the water flow sensor is not a power-hungry type; it draws a maximum of 15-20mA at 5V DC input!


yf-s201 arduino connection

Software Preparation


The Arduino Sketch (code) uses the external interrupt (int 0) on Arduino’s digital pin 2 (D2). This is used to read the output pulses coming from the water flow sensor. When Arduino detects the pulse, it immediately triggers the pulseCounter() function. This function then counts the total number of pulses detected (wanna know more about interrupts? http://playground.arduino.cc/Main/AVR).


/* YF‐ S201 Water Flow Sensor Water Flow Sensor output processed to read in litres/hour Adaptation Courtesy: www.hobbytronics.co.uk */ volatile int flow_frequency; // Measures flow sensor pulses unsigned int l_hour; // Calculated litres/hour unsigned char flowsensor = 2; // Sensor Input unsigned long currentTime; unsigned long cloopTime; void flow () // Interrupt function {    flow_frequency++; } void setup() {    pinMode(flowsensor, INPUT);    digitalWrite(flowsensor, HIGH); // Optional Internal Pull-Up    Serial.begin(9600);    attachInterrupt(0, flow, RISING); // Setup Interrupt    sei(); // Enable interrupts    currentTime = millis();    cloopTime = currentTime; } void loop () {    currentTime = millis();    // Every second, calculate and print litres/hour    if(currentTime >= (cloopTime + 1000))    {       cloopTime = currentTime; // Updates cloopTime       // Pulse frequency (Hz) = 7.5Q, Q is flow rate in L/min.       l_hour = (flow_frequency * 60 / 7.5); // (Pulse frequency x 60 min) / 7.5Q = flowrate in L/hour       flow_frequency = 0; // Reset Counter       Serial.print(l_hour, DEC); // Print litres/hour       Serial.println(" L/hour");    } } 

Flow sensors typically output a series of pulses proportional to the instantaneous flow rate which means that to interpret them it is necessary to implement a simple frequency counter. Since this project uses a water flow sensor containing a Hall-Effect sensor that outputs a pulse rate proportional to flow rate, so not only is it a useful project in its own right but it also demonstrates a very useful technique that you can use in a wide range of projects that need to measure the rate at which something happens (an electronic wind instrument, for example).


Little Math Work


Now, have a look at the maths behind this Arduino Sketch. In our lab experiment, we used one YF-S201 water flow sensor bought from ebay (www.ebay.in ), and done the homework well with observed readings (±10 accuracy). In order to measure the quantity of water being passed in particular time through the water flow sensor it was first passed through the water flow sensor which was taken as input interface in the flow. Formulas are applied in order to measure the number of rotations/pulses in a minute of rotation.


Flow rate can be determined inferentially by different techniques like change in velocity or kinetic energy. Here we have determined flow rate by change in velocity of water. Velocity depends on the pressure that forces the through pipelines. As the pipe’s cross-sectional area is known and remains constant, the average velocity is an indication of the flow rate. The basis relationship for determining the liquid’s flow rate in such cases is Q=VxA, where Q is flow rate/total flow of water through the pipe, V is average velocity of the flow and A is the cross-sectional area of the pipe (viscosity, density and the friction of the liquid in contact with the pipe also influence the flow rate of water).


  • Pulse frequency (Hz) = 7.5Q, Q is flow rate in Litres/minute
  • Flow Rate (Litres/hour) = (Pulse frequency x 60 min) / 7.5Q

In other words:


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

Behind The Curtain


WF-4

Really it was an awkward midnight experiment. We (me and my lab engineer diya missy) rolled up our sleeves and started the process with wet-hands. At first we made a simple construction comprised a rubber tube, plastic funnel, water flow sensor, and water bottles. Next we connected the water flow sensor’s output to the Arduino board (filled with the sketch) and allowed water flow through the water flow sensor at a steady rate of about 1 Litre/minute. Besides the Arduino’s serial monitor, we also used our DSO to measure pulse output from the water flow sensor. In that crude experiement, serial monitor displayed a rate of 56 Litre/hour (in lieu of the expected 60 Litre/hour rate)!


WF-5

Since this experiment is now at the halfway mark, you can expect inspiring updates in due time. Meanwhile, refer all related projects on pulse/frequency counting with microcontrollers, published in this website to keep your interest alive. An example link: http://www.electroschematics.com/10494/arduino-optical-position-rotary-encoder/


Original article and pictures take www.electroschematics.com site

Комментариев нет:

Отправить комментарий