Measuring Water Level With Ultrasonic Sensor

197,801

121

58

About: I am an engineer and a maker who loves technology challenges.

For my next big project (automated plant watering system) I was in need of having water level meter. I was choosing from contact and contactless methods of measuring fluid level in tank. Contact methods are resistive method, capacitive and inductive methods (magnetostriction). Most often contactless methods are optical method, radar and ultrasonic method. Because we didn’t want to affect the quality of water in tank we implement one of the contactless methods.

What method to choose? All contactless methods work on same principle: we send a signal and we measure time that send signal needs to come back. Optical method uses optical signals. Optical method can be very accurate, but sensors can get dirty over time and we are not able to make measurement at all. Radar method uses radar signals. Because of that (radar signals are high RF signals) it is not suitable for DIY. Ultrasonic method is similar to radar. Instead of radar wave we are sending ultrasonic wave. This procedure is ideal for our needs because ultrasonic sensors are accessible and low priced.

We made water level meter with Arduino platform (we used Arduino Mega2560, but any arduino will work).

For damage occurred during reproduction I am not hold responsible.

Teacher Notes

Teachers! Did you use this instructable in your classroom?
Add a Teacher Note to share how you incorporated it into your lesson.

Step 1: Parts and Materials

Parts:

- Arduino (Uno, Mega 2560,...)

- ultrasonic sensor HC SR04

Materials:

- wires for connecting censor to Arduino

- acrylic glass for housing (optional)

Step 2: Theory Behind Ultrasonic Level Sensor

First, let us talk about some theory behind ultrasonic method of fluid lever measuring. The idea behind all contactless methods is to measure distance between transceiver and fluid. As said before, we transmit short ultrasonic pulse and we measure travel time of that pulse from transceiver to liquid and back to transceiver. Ultrasonic pulse will bounce from liquid level since because change of density of ultrasonic pulse travel medium (ultrasonic pulse first travel through air and bounce of liquid with higher density than air). Because water has higher density, majority of pulse will bounce off.

Two disadvantages exist with ultrasonic method:

- 1st: because of pulse length there is small window that we cannot receive pulse with transceiver because transceiver is transmitting. This problem is simple to solve: we placed our sensor higher from maximum water level for few centimeters allowing receiver to start receiving.

- 2nd: because of the beam width we are limited with tank diameter. If tank diameter is too small, signal could bounce of tank’s walls and could cause false readings.

Before installing sensor in tank we tested it for those two disadvantages. We established that we could have stable measurements from minimum distance of 5 cm from sensor. That means, we must install our sensor 5 cm higher then maximum water level. We also established that we didn’t have any problems with signal bouncing from tank’s walls with 7.5 cm diameter tank (tank’s length was 0.5 m). We complied these two results at construction of water tank and at the setting up of ultrasonic sensor.

Step 3: Water Tank

Watering system will use free fall for water feeding. Because of that, water tank needs to be lifted up from floor level. We made water tank from drainpipe 1m in length and 16 cm in diameter. We divided pipe into two sections. Lover section (first 50 cm) will house valves. Upper section will serve as water tank. On the upper section we are using pipe end cap as water tank cover. On end cap we mounted ultrasonic sensor. For larger stability we added wooden base, which will also house electronics and battery pack.

Here comes the mathematical specification of the tank. This part is essential, because we want to codify fluid height measurement in %. Starting point of codifying is measurement alone. Measurement can be between 6 and 56 cm (6 cm offset). This is codified into 0 to 100 %. It comes down to simple cross calculus.

We chose homogeneous tank because of easier calculations of volume (we are using pipe – cylindrical shape). Diameter of pipe is the same through the length of the pipe. We have also made equation whit which we can measure volume of water still in the tank. We didn’t implement this because there was no need for it. For now!

Step 4: Ultrasonic Sensor, Schematics

We soldered wires to ultrasonic sensor (we used FTP or UTP cable; it can be one of them). Then we installed sensor in small custom made housing from acrylic glass. Casing with sensor in it was sealed off and mounted on tank’s cover. Housing was a bit improvised and it is not essential. Because of that, there are no picture and no plans for it. You can figure it out somehow by yourself.

We connected sensor on Arduino board following schematic in picture.

Step 5: Program

We converted program for measuring distance to program for measuring water level. Program for measuring distance is not of our making but was found on internet in this tutorial we cannot find anymore.

First we transmit signal and then we wait and measure time between transmitted signal and received signal. This time is then converted to centimeter and centimeters are then converted to % and send via serial connection to computer. We could also calculate water volume that is still in the tank.

Step 6: Testing

Because in the future we wish to implement automatic watering system with two stages regulator, we must measure tank’s flow characteristic. Question is why we must do that? You see, outgoing flow in the tank depends on hydrostatic pressure inside of the tank. With basic knowledge of physics anybody see that hydrostatic pressure id decreasing with falling water level in tank. Because we want to feed plants every time with same amount of water, we must adjust valve opening time. With tank’s flow characteristic we can calculate how much water can flow out of tank at any time and with that we can determine how long valve must stay in open position.

Also we wanted to test our level meter. We filled up water tank to maximum height. Then we opened a valve and let all the water run out. Because drain pipe is mounted to prevent sucking out sediments, tank was emptied to 2%. In picture is presented response to step function. From this response we can approximate function on which water level is changing (with Excel, Matlab, or other powerful mathematical tool).

We can conclude that sensor works in accordance with expectations.

Step 7: What's Next?

Implemented water level meter serves as a concept of principle. If we would want to use this meter in DIY project and in semi industrial or other applications we would have to make test of sensor endurance and resistance to water splattering. After that test we would be able to see if sensor is appropriate for use in DIY projects or any other environments. Right now I can only say that sensor is working fine within this short period of time.

Because sensor is measuring water level with contactless method water can stay unspoiled. Implemented meter is also cheap and accessible and because of this it is very suitable for DIY.

Please feel free to comment and let me know if I made any grammar mistakes (english is not my first language).

5 People Made This Project!

Recommendations

  • Indoor Lighting Contest

    Indoor Lighting Contest
  • Make It Fly Challenge

    Make It Fly Challenge
  • Growing Beyond Earth Maker Contest

    Growing Beyond Earth Maker Contest

58 Discussions

0
None
minkhantzaw1210

2 months ago

I'm trying this for my school project, please help me whit code.I can't download the code.please can anyone help me with code for this project?

0
None
Jurinstar

Question 4 months ago

Hello, can this same procedure be used to determine the level of gas in a gas bottle,? instead of placing the transducer above the liquid level guess it will be placed at the bottom

0
None
DwoodsF

3 years ago

can this sensor pass sound wave through arcylic sheet ? or you need to make two holes for each sensor ?

reply at

look4ursoul@live.com

thanks

1 reply
0
None
harshjainLDH1DwoodsF

Reply 9 months ago

The acrylic will reflect part of the ultrasonic and the rest will go further and get detected when it comes back. You may need to ignore this time by including it into dead zone as @andytechdude mentioned.

0
None
muralivirat

10 months ago

does this applicable for bigger tanks like water tanks.

0
None
FLOWBEN

Question 11 months ago

Loved this! Thankyou.
Quick question. Can i measure the volume of an irregular shaped tank?
Thanks Ben.

1
None
andytechdude

1 year ago

Great use of ultrasonics!

Refering to your comments regarding the longevity of the system. Past work experience with the cheap readily available ultrasonic transducers has taught me that they do not like water. The aluminium case and grille corrode and the internals of the piezo electric transducer eventually gives up. There are water proof versions as used on car reversing devices but their sesitivity is much lower than the cheap common open versions. The reduced sensitivity may be OK for shorter range and larger targets that produce larger echo.

A few tips for increasing the life of these open transducers.

1/ Prevent water spray onto the transducer. In the past I have used barrier materials to take the energy out of spray and prevent the majority of direct water contact. Utrasonics have strange properties and what may look opaque to you may be perfectly transparent to utrasonics. The coarse nylon material that pan scrubbers are made from produces a good barrier that drains easily and the transducer simply "sees" straight through.

2/ Humidity. The interior of a water tank gets very humid under the right conditions and that humidity will make short work of your tranducers. Try to provide ventilation arround your tranducers to keep the humidity low, vent to the outside. Your transducers can "look" in through a well placed hole while enjoying the fresh dry air outside the tank.

Ultrasonics may pick up features that you do not wish them to see. Features on a tank wall or the rim of a hole for example. The beam shape from ultrasonic transducers can be shaped to prevent this. Similarly as you can with light, reflectors and baffles may be applied to tranducers to shape / limit the beam. Trial & error is the only easy method for the home inventor for getting this right.

Minimum detection range. When attempting to detect in the coser ranges, problems can be encountered due to cross-talk directly between the tranducers. Software can be modified to include a "dead zone" an echo time interval below which the readings are ignored. Isolating the transmitter and receiver sound can also help with this problem.

Keep inventing.

2
None
pagalprojects

Question 1 year ago

What is the maximum depth that we can measure using this sensor ?

0
None
fazila4

Question 1 year ago

Using Port : COM17

Using Programmer : arduino

Overriding Baud Rate : 115200

avrdude: stk500_recv(): programmer is not responding

avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x68

avrdude: stk500_recv(): programmer is not responding

avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x68

avrdude: stk500_recv(): programmer is not responding

avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0x68

avrdude: stk500_recv(): programmer is not responding

avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0x68

avrdude: stk500_recv(): programmer is not responding

avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0x68

avrdude: stk500_recv(): programmer is not responding

avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0x68

avrdude: stk500_recv(): programmer is not responding

avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0x68

avrdude: stk500_recv(): programmer is not responding

avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0x68

avrdude: stk500_recv(): programmer is not responding

avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0x68

avrdude: stk500_recv(): programmer is not responding

avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x68

avrdude done.

I facing this kinda error. Help me. Thanks.

0
None
Johnny J

4 years ago

Excellent idea! I suspect the sensors could be covered with food-wrap film to splash proof them without interfering too much with their operation.
I'll be trying it!

7 replies
0
None
vonPongracJohnny J

Reply 4 years ago on Introduction

Hmm... Food foil could work but I am a bit skeptical! Ultrasonic (or ultrasound) wave are same as sound just frequency is to high for you to hear it. Ultrasonic waves are mechanical waves of presure. Because of that, foil can interupt with measurment! This is why radar method is better in industry because it use high frequency electromagnetic waves which can penetrate some materials and waterproofing a transceiver is not so hard.

0
None
Johnny JvonPongrac

Reply 4 years ago

I was thinking of the thin plastic film ("cling film" in the UK).
It's very thin and flexible, and I think it would vibrate with the ultrasound to transmit the vibrations if it was stretched over the sensors.
The calibration may need some adjustment, but I think it might work.
I'll try it and report back. :)

0
None
vonPongracJohnny J

Reply 4 years ago on Introduction

Let me know about the results! I am very curious if this foil you are talking about will work! =)

0
None
Johnny JvonPongrac

Reply 4 years ago

It does. :)
I tried it.... You need stretch the film over each sensor individually to avoid vibration transfer between the two, but otherwise it seems fine.
I just stretched film across the front of the sensors, folded it back along the sensor bodies and held it in place with rubber bands.
I couldn't see any difference in readings between the sensor with or without the film.
I suspect it would work with thin polythene as well, but I haven't tried that yet.

0
None
SandeepT23Johnny J

Reply 1 year ago

Waw thats nice.. That was something I was also looking for. Since you already tried it, I have no worries. Out of a curiosity can you find any difference in result after wrapping it in film.

I made a similar one at my home water tank. but at summer when water getting vaporized and it getting on the sensor.

0
None
amorarunvonPongrac

Reply 4 years ago on Introduction

Very nice instructable...

If the cling wrap method makes the sensors waterproof of sorts. Will definitely implement it in the water storage tank at my home. But I don't think it is a possibility..

0
None
BoydG1

2 years ago

I want to measure the fluid level of sewage in a tank. Will the sensor work if glued to the outside of the top of the tank? If it will, does the thickness of the tank wall make a difference? The tank is 9mm thick plastic.

Thanks

1 reply
0
None
GabrielP96BoydG1

Reply 2 years ago

BoydG1 it wont work, plastic being much more dense material than air, the sound signal will bounce right back at the sensor, and then the readings will be always 0, for this to work, you would need to cut a hole in the sewage tank (on the top) and install the sensor there. And further more, you got to check the specs of your sensor for the max distance it reads.

0
None
SanathK9

2 years ago

What will be the max depth this sensor can measure??