• Skip to main content
  • Skip to primary sidebar

Homemade Circuit Projects

Need circuit help? Post them in the comments! I've answered over 50,000!

Blog | Categories | About | Contact | Calculators-online
You are here: Home / Arduino Projects / Simple Digital Water Flow Meter Circuit using Arduino

Simple Digital Water Flow Meter Circuit using Arduino

Last Updated on December 5, 2024 by Swagatam 9 Comments

In this post I will show how to construct a digital water flow meter using Arduino and 16 x 2 LCD display. We will be taking a look at YF-S201 water flow sensor, its construction and working and how to interface with Arduino to extract some useful readings.

The proposed project can measure the rate of water flow in litre / minute and total water flow in litres.

Let’s take a look at YF-S201 water flow sensor.

Illustration of YF-S201:

img 20170929 184835

YF-S201 is a Hall Effect based water sensor. It has three terminals 5V (nominal working voltage), GND and output. The +5V is red coloured wire, the black one is GND and yellow one is output.

The sensor gives out frequency directly proportional to water flow. The YF-S201 sensor can measure from 1 litre / minute to 30 litre / minute. The water pressure should be less than or equal to 1.75 MPa.

The water can be injected from one end and water flows through the other end.

The sensor may be placed after the main gate-valve of tank; if you want to measure the water flow in a network of water pipes or you can place just before a water tap to measure the water flow of single tap.

The placement of the sensor can be anywhere according to user’s need but, care must be taken to avoid leakage of water.

The sensor has a magnet and Hall Effect sensor; if we take a look at the sides of the water flow sensor, we can witness a plastic turbine in the path of water flow.

A round shaped magnet is embedded at the center of the turbine and the Hall Effect sensor is sealed and protected from moisture and placed above the magnet. The Hall Effect sensor produces a pulse for every revolution of the turbine.

Water Flow Waveform on Serial Plotter

We can see the pulses generated by water flow sensor on serial plotter of arduino IDE, shown below (Using Arduino Single channel Oscilloscope).

waveform

We have blown air through the sensor to rotate the turbine as a test and the waveform generated is shown above. The denser waveform on left hand side represents higher frequency and faster rotation of turbine, the less dense waveform at right hand side signifies the vice versa.

A consistent water flow gives out consistent frequency output.

We have to convert the frequency into litre/minute scale. To do this, the manufacturer has given a formula:

Water flow rate (litre/min) = frequency / 7.5

So, we need to measure the generated frequency and apply the above formula in the program code.

Technical Specifications of YF-S201:

·        Accuracy: +/- 10%, if you need better precision, we need to calibrate.

·        Working Temperature: -25 to + 80 degree Celsius.

·        Working humidity: 35% to 80% RH.

·        Output duty cycle: 50% +/- 10%.

·        Maximum water pressure: 1.75 MPa.

·        Pulses per Litre: 450.

·        Maximum current draw: 15 mA at 5V

That concludes the YF-S201 water flow sensor.

Now let’s move to the schematic.

Schematic Diagram:

LCD bb

The water flow sensor’s output pin is connected to A0 of Arduino. Use the 10K potentiometer for adjusting display contrast. Wire the Arduino and LCD display as per the above diagram.

Program Code:

//-----Program Developed by R.Girish-----//
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
int X;
int Y;
float Time = 0;
float frequency = 0;
float waterFlow = 0;
float total = 0;
float LS = 0;
const int input = A0;
const int test = 9;
void setup()
{
Serial.begin(9600);
lcd.begin(16, 2);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Water Flow Meter");
lcd.setCursor(0,1);
lcd.print("****************");
delay(2000);
pinMode(input,INPUT);
pinMode(test, OUTPUT);
analogWrite(test,100);
}
void loop()
{
X = pulseIn(input, HIGH);
Y = pulseIn(input, LOW);
Time = X + Y;
frequency = 1000000/Time;
waterFlow = frequency/7.5;
LS = waterFlow/60;
if(frequency >= 0)
{
if(isinf(frequency))
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("L/Min: 0.00");
lcd.setCursor(0,1);
lcd.print("Total: ");
lcd.print(total);
lcd.print(" L");
}
else
{
total = total + LS;
Serial.println(frequency);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("L/Min: ");
lcd.print(waterFlow);
lcd.setCursor(0,1);
lcd.print("Total: ");
lcd.print(total);
lcd.print(" L");
}
}
delay(1000);
}
//-----Program Developed by R.Girish-----//

Author’s Prototype:

img 20170929 184740

The “L/Min” indicates the current water flow rate and the “Total” indicates the total water flowed since the circuit turned ON.

You can also flow any liquids whose viscosity value is near to water.

If you have any questions regarding this digital water flow meter using Arduino, feel free to express in the comment section, you may receive a quick reply.

You'll also like:

  • 1.  Digital Clock Activated Water Level Controller Circuit
  • 2.  Arduino RGB Flowing Sequential Light Circuit
  • 3.  Introduction to I2C LCD Adapter Module
  • 4.  Make this Advanced Digital Ammeter using Arduino
  • 5.  Making a Multi-function Water Level Controller Circuit
  • 6.  Making a Single Channel Oscilloscope using Arduino

About Swagatam

I am an electronics engineer with over 15 years of hands-on experience. I am passionate about inventing, designing electronic circuits and PCBs, and helping hobbyists bring their projects to life. That is why I founded homemade-circuits.com, a website where I share innovative circuit ideas and tutorials. Have a circuit related question? Leave a comment.... I guarantee a reply!

Previous Post: « Joystick Controlled 2.4 GHz RC Car Using Arduino
Next Post: Buck Converter Circuit Using Arduino »

Reader Interactions

Comments

  1. Shaikh murad says

    May 15, 2018 at 5:45 pm

    Water pressure should be less than 1.75 mpa so . sir can we use this project for petrol pump pressure. Because im not sure about the pressure of petrol pumps in mpa thankyou

    Reply
    • GR says

      May 16, 2018 at 3:19 am

      Hi Shaihk,

      Petrol should work fine with this sensor. I won’t recommend using with petrol or any expensive liquids because this sensor has tolerance of +/- 10%. Meaning you will end up in pumping 10% more or 10% less petrol.

      Regards

      Reply
  2. Ameesha Singh says

    April 16, 2018 at 9:13 pm

    can you give the flow chart of this program?

    Reply
  3. Wexler says

    March 8, 2018 at 2:09 am

    Hi
    is it possible to add an Eprom Memory to the circuit in order to keep the consumption over time even the power is turned off? I suppose some changes must be done also over the code. Can You solve this issue ? Thank You!

    Reply
    • GR says

      March 8, 2018 at 5:35 pm

      Hi Wexler,

      Yes, we can add an SD card or utilize built-in EEPROM of ATmega 328P for saving data. We can provide you the solution.

      Customized Arduino code is premium as of now , if you are interested comment with your detailed requirements, we will proceed.

      Regards

      Reply
  4. rahul k says

    February 20, 2018 at 4:34 pm

    sir, i know that connecting LCD to potentiometer is for adjusting brightness but why did you connect the 5v pin of the flow sensor to the potentiometer? can i know why is that connection needed?

    Reply
    • GR says

      February 22, 2018 at 5:13 pm

      HI Rahul,

      Look at the circuit carefully, the 5V line is common for the potentiometer and flow sensor, it is just 5V path, red wire.

      Regards

      Reply
  5. afrid says

    October 3, 2017 at 8:32 am

    Sir kindly answer my question
    I made a transformer which have primery winding is 220 turn(18 swg wire 1kg) and secondary turn is 22 turn(10 swg 650gram) now the input voltage is 210 volt and output is 18 volt
    bobin size is ( 6inch×3inch) how much current given in output ?????
    Plz answer my question

    Reply
    • Swagatam says

      October 3, 2017 at 11:10 am

      Afrid,

      It cannot be possible to judge the current through a visual analysis…you will have to check it with an ammeter.

      Reply

Need Help? Please Leave a Comment! We value your input—Kindly keep it relevant to the above topic! Cancel reply

Your email address will not be published. Required fields are marked *

Primary Sidebar

Subscribe to New Circuit Ideas

Categories

  • Arduino Projects (87)
  • Audio and Amplifier Projects (132)
  • Automation Projects (17)
  • Automobile Electronics (101)
  • Battery Charger Circuits (82)
  • Datasheets and Components (102)
  • Electronics Theory (143)
  • Free Energy (37)
  • Games and Sports Projects (11)
  • Grid and 3-Phase (19)
  • Health related Projects (25)
  • Home Electrical Circuits (12)
  • Indicator Circuits (14)
  • Inverter Circuits (87)
  • Lamps and Lights (142)
  • Meters and Testers (69)
  • Mini Projects (46)
  • Motor Controller (64)
  • Oscillator Circuits (27)
  • Pets and Pests (15)
  • Power Supply Circuits (108)
  • Remote Control Circuits (50)
  • Security and Alarm (64)
  • Sensors and Detectors (100)
  • Solar Controller Circuits (59)
  • Temperature Controllers (42)
  • Timer and Delay Relay (49)
  • Transmitter Circuits (29)
  • Voltage Control and Protection (37)
  • Water Controller (36)

Calculators

  • Battery Back up Time Calculator
  • Capacitance Reactance Calculator
  • IC 555 Astable Calculator
  • IC 555 Monostable Calculator
  • Inductance Calculator
  • LC Resonance Calculator
  • LM317, LM338, LM396 Calculator
  • Ohm’s Law Calculator
  • Phase Angle Phase Shift Calculator
  • Power Factor (PF) Calculator
  • Reactance Calculator
  • Transistor Astable Calculator
  • Transistor base Resistor Calculator
  • Voltage Divider Calculator
  • Wire Current Calculator
  • Zener Diode Calculator
  • Filter Capacitor Calculator
  • Buck Converter Calculator
  • Boost Converter Calculator
  • Solar Panel, Inverter, Battery Calculator
  • Wire Current Calculator
  • SMPS Transformer Calculator
  • IC SG3525, SG3524 Calculator
  • Inverter LC Filter Calculator

People Also Search

555 Circuits | 741 Circuits | LM324 Circuits | LM338 Circuits | 4017 Circuits | Ultrasonic Projects | SMPS Projects | Christmas Projects | MOSFETs | Radio Circuits | Laser Circuits | PIR Projects |

Recent Comments

  • Swagatam on Simple Delay Timer Circuits Explained
  • Swagatam on The Role of Inductor Coil in SMPS
  • Swagatam on 7 Modified Sine Wave Inverter Circuits Explored – 100W to 3kVA
  • Swagatam on 7 Modified Sine Wave Inverter Circuits Explored – 100W to 3kVA
  • Victor on 7 Modified Sine Wave Inverter Circuits Explored – 100W to 3kVA

Company

  • Privacy Policy
  • Cookie Policy
  • About Me
  • Contact
  • Disclaimer
  • Copyright
  • Videos
  • Sitemap

Social Profiles

  • Twitter
  • YouTube
  • Instagram
  • Pinterest
  • My Facebook-Page
  • Quora
  • Stack Exchange
  • Linkedin
  • © 2025 · Swagatam Innovations