Wireless Water level control system
Introduction:
In Domestic and industrial applications we use water tanks to store water. Filling water in tank using water pump is quite common. When water inside the tank is over we have fill it by pumping water using an ac motor and after tank is filled with water we have stop the motor to. This is manual system means turning ON motor when tank is empty and turning it OFF when tank is full is manual. But now it is no more manual. Automatic motor on and off system based on tank water level is already available in market. This system is wired system and connecting circuit and arranging wires and circuit is little bit complex. In this system the biggest drawback is wired connections between control circuit and motor. So we have to use lengthy wires from top of the home to water supply unit and control circuit unit. If we want adapt this system for big building it will become too expensive and too complex.
To overcome this instead of wire system if we adopt wireless system then we can reduce cost and complexity.
The new and different approach in this project is, the levels of water is monitored wirelessly and water pumping system is controlled based on water level by sending wireless signal from Tx to Rx. So as there is no wire connection between water tank and motor control circuit we can use this system in high rise building (having 10 or more floors) with less cost.
Description:
In this project transmitter is connected to the water tank, from water tank four water level sensors (connectors) are connected to encoder. Encoder data is transmitted to receiver. The receiver circuit is connected to display and motor units. It uses microcontroller to display water level and to control motor.
So, do you want to know how it is possible? How it is done? Let’s start. First collect all require components and equipments.
Required components and equipments:
Sr. no. Name of component Required quantity
1 RF Tx module(434Mhz) 1
2 RF Rx module(434Mhz) 1
3 HT12E 1
4 HT12D 1
5 LED 1
6 Resistor – 1KΩ (Quarter watt) 4
7 Resistor – 1MΩ (Quarter watt) 1
8 Resistor – 50KΩ (Quarter watt) 1
9 Arduino pro mini development board 1
10 16×2 LCD 1
11 BC547 transistor 1
12 1 C/O type PCB mount relay 1
13 1N4007 diode 1
14 100 Ω (Quarter watt) resistor 1
15 10 K pot 1
16 Battery – 9V 2
17 Bread board 3
18connecting wires
Circuit diagram:
Procedure:
Transmitter section:
Step1: Arrange a wire form water tank bottom to top and similarly arrange four levels with wires (Assume; 25%, 50%,75%,100%). Take total five connections from tank.
Step2: in this five connections connect last and bottom wire Vcc, and remain four level contacts to HT12E encoder 10,11,12,13, pins with pull down resistance of 1K.
Step3: connect 1MΩ resistor between 15 and 16 pins of HT12E.
Step4: connect 17 pin of HT12E to the 2nd pin of RF Tx module, and 14 pin to the ground.
Step5: 1-8 pins of HT12E are address pins, connect all of them to ground and connect pin 18 to Vcc and pin 9 to ground
Step5: connect RF Tx module pin 1 to the ground pin 3 to the Vcc and pin 4 to the antenna.
Receiver section:
Step1: connect the decoder 10,11,12,13 pins to Arduino pro mini micro controller board 10,11,12,13, pins.
Step4: connect 50KΩ resistor between decoder 15 and 16 pins of HT12D.
Step5: connect 14 pin of decoder to the 2nd pin of RF Rx module, and 17 pin to the LED indicator (LED indicates signal is received)
Step6: 1-8 pins of HT12D are address pins. Connect all to ground also connect pin 9 to ground. Connect pin 18 to Vcc
Step7: connect RF Rx modules pins 1, 6 & 7 to the ground pins 4-5 to the Vcc, and pin 8 to the antenna.
Step8: connect Arduino pin 2 to LCD En pin, pin 3 to Rs pin, and 4,5,6,7 pins to data pins D5-D8.
Step9: relay coil is connected between transistor collector and Vcc supply. A diode is connected in reverse bias across coil. AC load (bulb) is connected between common and normally open terminals of relay contacts.
Working:
1. The basic point in this project we have consider water is a good conductor, if water density increases then conductivity also increases(salt water), Pure water is not a good conductor of electricity. Ordinary distilled water in equilibrium with carbon dioxide of the air has a conductivity of about 10 x 10-6 W-1*m-1 (20 dS/m). Because the electrical current is transported by the ions in solution, the conductivity increases as the concentration of ions increases. Thus conductivity increases as water dissolved ionic species.
Typical conductivity of waters:
Ultra pure water 5.5 • 10-6 S/m
Drinking water 0.005 – 0.05 S/m
Sea water 5 S/m
Here S/m = Siemens per meter.
2. As per construction points, four water levels are measured in this project, the fifth wire (bottom wire) is to apply the power supply. When we are filling the tank with water, water touches the bottom wire so from initial point water carrying supply voltage (+5V). When water level increases and touches 25% level conductive wire, that dry wire conducts and gets +5V. This voltage changes the state of Encoder chip data pin. In similar way when water touches the remaining wires, they get +5 V and changes state of respective data pin. This is the working principle of this project.
3. The water level wires from tank are connected to HT12E encoder chip data pins using pull down resistors (10KΩ). Here, a chance to rise doubt about pull down resistance. Pull down resistance is necessary here, because, when electrical connections establishes between wire and water then current flows though the wire and this current converted in to proportional voltage by the pull down resistor.
4. When this voltage is applied at encoder input, it will convert parallel data to serial data and fed to Tx module pin 2. Then transmitter transmits the data in the form of ASK signal to the receiver.
5. Receiver receives the data and decoder converts serial data to parallel data. The decoder output pins connected to Arduino digital pins as inputs. If 1st input is high, then LCD displays water level is 25% as per program,.
6. Similarly LCD displays all other water levels as micro controller gets data from transmitter
7. When water tank is full, then relay changes its state and switch off the motor.
Pictures:
Troubleshooting:
The main problem I hadface in this project is, encoder pins are connected to the four wires and these four wires are connected to water tank in different levels. This arrangement helps in indicating the water levels. But water level wires are not giving sufficient voltage output to the encoder pins. By increasing contact surface of the conductor with the water I solved this problem.
When we are programming microcontroller to display levels in lcd, we should consider all levels at every stage, by observing program we can understand that.
Precautions:
1. Address lines status should be same at both transmitter and receiver side.
2. At transmitter 14th pin should be connect to ground or connect a switch between ground and the 14th pin to reset the encoder.
3. At transmitter Resistor between 15 and 16 should be between 750MΩ to 1MΩ and at receiver side resistor between 15 and 16 should be between 30KΩ to 50KΩ.
4. Incase want to use any other batteries please checkout once the data sheet of HT12E/D.
5. Take care about connections from tank to transmitter circuit and relay circuit.
6. In program we should mention all levels in every if loop, like, at starting only level1 is high but in 2nd level, 1st level and 2nd level are high. So we should mention that in condition. And mention remains two states in low state.
You may also like:
Project Source Code
Project Source Code
###
#include//decoder 10,11,12,13 output pins connected to arduino 10,11,12,13 digital pins as input.int tx1 = 10;int tx2 = 11;int tx3 = 12;int tx4 = 13;int relay = 8;int buzzer = 9;LiquidCrystal lcd(2, 3, 4, 5, 6, 7);void setup(){pinMode(tx1,INPUT);pinMode(tx2,INPUT);pinMode(tx3,INPUT); // decoder output microcontroller reading as input.pinMode(tx4,INPUT);pinMode(relay,OUTPUT);Serial.begin(9600);lcd.begin(16, 2);lcd.print("ENGINEERS GARAGE");lcd.setCursor(0, 1);digitalWrite(relay,HIGH);delay(1000);}void loop(){// reading data and storing in avariable for further use.int Tx1 = digitalRead(tx1);int Tx2 = digitalRead(tx2);int Tx3 = digitalRead(tx3);int Tx4 = digitalRead(tx4);if (Tx1 == HIGH && Tx2 == LOW && Tx3 == LOW && Tx4 == LOW ){lcd.setCursor(0, 2);lcd.print("Water Level");lcd.print(" 25%"); // change the analog out value:}if (Tx1 == HIGH && Tx2 == HIGH && Tx3 == LOW && Tx4 == LOW ){lcd.setCursor(0, 2);lcd.print("Water Level");lcd.print(" 50%"); // change the analog out value:}if (Tx1 == HIGH && Tx2 == HIGH && Tx3 == HIGH && Tx4 == LOW ){lcd.setCursor(0, 2);lcd.print("Water Level");lcd.print(" 75%"); // change the analog out value:}if (Tx1 == HIGH && Tx2 == HIGH && Tx3 == HIGH && Tx4 == HIGH ){lcd.setCursor(0, 2);lcd.print("Tank Full");lcd.print(" !!!! "); // change the analog out value:digitalWrite(buzzer,HIGH);delay(1000);digitalWrite(relay,LOW);}}//Program to
###
Circuit Diagrams
Filed Under: Circuit Design, Electronic Projects
Questions related to this article?
👉Ask and discuss on EDAboard.com and Electro-Tech-Online.com forums.
Tell Us What You Think!!
You must be logged in to post a comment.