Self-Powered Automatic Water Tap

by taifur in Circuits > Sensors

67586 Views, 469 Favorites, 0 Comments

Self-Powered Automatic Water Tap

cover.jpg
Self-Powered Automatic Water Tap
cover1.jpg

Recently, I made an automatic water tap which does not require any external power. It can power itself from a micro generator. I used a rechargeable Li-ion battery to store energy when water flows out from the tap. It can be manually controlled from a button. The treasure behind it is very simple. I used an IR receiver & transmitter pair to sense the presence of hand below the tap. IR transmitter transmit infrared light and when something obstruct the light it reflect back to the receiver. The resistance of the receiver decrease with increased infrared light. The output of IR receiver is taken by a microcontroller and compared it to a preset value. If it receive more light compare to preset vale of threshold then it sent a signal to a servo motor and servomotor rotate the knob of the water tap.

Features of the project:

1. Self-Powered

2. Automatic & Manual Control

3. Simple design

4. Low cost

Bill of Materials

3.6V Micro Hydro Generator Pro.jpg
mhg_01_LRG.jpg
9gsm.jpeg
31.jpg
thread tap.jpg
screw.jpg

1. 3.6V Micro Hydro Generator (you can use SeedStudio 3.6V Micro Hydro Generator Pro with Built-in Lithium Battery & built-in Lipo Charging Circuit).

2. Screw thread (G 1/2", female) (you can get it from local hardware store)

3. Thread seal tape (you can get it from local hardware store)

4. Arduino Uno (Sparkfun)

5. IR Transmitter (Sparkfun)

6. IR Receiver

7. 56k Resistor

8. 220 ohm resistor

9. PCB board

10. Micro servo motor (Sparkfun)

11. Polymer Lithium Ion Battery (Sparkfun)

12. 1.25" diameter plastic pipe

13. Some wires

Required Tools

1. Hot glue gun

2. Soldering Iron (Sparkfun)

3. Solder (Sparkfun)

4. Wire cutter (Sparkfun)

Prepare the Tap

1.jpg
2.jpg
3.jpg

First, remove the handle from the water tap by opening the screw. Fix the servo horn to the stem of the water tap using any strong glue. I used hot glue and is working perfectly. Be careful when connecting, the axis of the servo horn and the axis of the stem should be perfectly aligned. Take 2 inch plastic pipe with the diameter of 1.25 inch. Truly speaking, the size of the pipe is dependable on the tap. A 3D printed part will be a great replacement of the pipe. Cut the pipe in one side according to your servo size to put the servo on it.

Adjust Servo to Pipe

4.jpg
5.jpg
6.jpg
7.jpg

Rotate the fixed servo horn by your hand and place it in a position where it close the valve of the water tap. Now put the servo motor to the pipe and connect the pipe to the tap. Be sure it perfectly match to the servo horn you fixed previously with the stem of the water tap otherwise it will not work.

Fix the Pipe to Water Tap

7.jpg
8.jpg
9.jpg
10.jpg
11.jpg

Fix the pipe to the water tap using hot glue. Use glue around all the side to strongly connect and prevent from entering water into it.

Join the Servo Using Hot Glue

12.jpg
13.jpg
14.jpg
15.jpg
16.jpg

Join the servo motor to the pipe using hot glue. Make sure no gap is present to prevent entering of water. Are you sure it perfectly matched to the servo horn fixed on stem of water tap previously? If yes, then you completed the hardest part of the entire task. Now you can check it either it will work perfectly or not.

Give air from your mouth blowing into one side of the water tap and observe from the other side. As you set the valve of the tap in close position before, air should not pass.

Now, connect the servo motor to the Arduino and upload the servo program given below.

#include <Servo.h>

Servo myservo;  // create servo object to control a servo
// twelve servo objects can be created on most boards

int pos = 0;    // variable to store the servo position

void setup() {
  myservo.attach(9);  // attaches the servo on pin 9 to the servo object

myservo.write(90); // tell servo to go to position in variable 'pos'

} void loop() { }

Now, test it again by flowing air. This time air should pass from one side to the other. If so then it is working well.

Connect Screw Thread to the Hydro Generator

19.jpg
20.jpg
22.jpg
23.jpg

Now, we will work with another vital thing of our system, the hydro power. For that we will use 3.6V micro hydro generator which will be enough for our system. Hydro generator produce power when water flows within it. Connect a BSP female screw thread to the hydro generator. Use seal tape to prevent leak of water. Note the arrow mark on the top of hydro generator when connecting screw thread.

Connect Water Tap to Hydro Generator

24.jpg
25.jpg
26.jpg
28.jpg
30.jpg

Now connect the prepared water tap to another side of the screw thread using seal tape. One important thing, always wrap the seal tape in clockwise direction.

Make Sensor Module

222.jpg
circuit.jpg
31.jpg
36.jpg
37.jpg

Make the sensor module according to the circuit diagram. The long lead of the IR receiver and transmitter is anode and short lead is cathode. Transmitter led is connected as forward bias and receiver must be connected as reverse bias. Solder all the components to the PCB according to the circuit diagram and then cut extra lead using a diagonal cutter. According to my experience, an old nail cutter works well even better than a diagonal cutter. Then solder three long wire to VCC, GND and Signal point of the PCB.

Fix Sensor Module to the Water Tap

41.jpg
42.jpg
43.jpg

Fix the sensor module you just made to the bottom side of the water tap according to the photo using hot glue.

Make Control Circuit & Upload the Program

automation-schematic.png
generator block.png
46.jpg
47.jpg
48.jpg
49.jpg

Make the control circuit according to the circuit diagram. ATmega328P microcontroller was used for the main controlling unit of the project. I used this microcontroller for the project because this is the main microcontroller of Arduino Uno board. Using this controller makes my work easy. It can be program easily using Uno board. External 16MHz crystal was used as clock source. I added 1 button to manually control the tap. If you press the button for the first time the tap will be on and if you again press the button the tap will be off. I used a hydro generator which has no built-in battery and for that I had to used external Li-ion battery & charging circuit.

To connect hydro generator and battery charging module follow the block diagram shown above. I used a 5V regulator between hydro generator and charging module to stabilize the output of hydro generator because charging module can tolerate maximum 5.5V. If you used Seeedstudio micro hydro generator then you need not to connect these external parts. Just connect the button and upload the following Arduino sketch and enjoy it.

#include <Servo.h>
int value = 0;
int avg_value = 0;
int sensorPin = A5;  //connect ir receiver output to this pin
int buttonPin = 18;  // button pin to A4
boolean buttonState = HIGH; 
boolean tapState = LOW;
int ledPin = 13; //this is for testing purpose
int tapForState = 0;
Servo myservo;  // create servo object to control a servo
// twelve servo objects can be created on most boards

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  pinMode(buttonPin, INPUT);
  pinMode(ledPin, OUTPUT);
  digitalWrite(buttonPin, HIGH);
  //servo motor is connected to Arduino digital pin 3
  myservo.attach(3);
}

void loop() {
  buttonState = digitalRead(buttonPin);
  delay(50);
  if(buttonState==LOW && tapState==LOW){
    digitalWrite(ledPin, HIGH);
    myservo.write(0);
    delay(7000);
    tapState = HIGH;
    tapForState = 1;  // check either tap was on for button press or not
    }
  else if(buttonState==LOW && tapState==HIGH && tapForState==1){
    digitalWrite(ledPin, LOW);
    myservo.write(80);
    delay(100);
    tapState = LOW;
    tapForState = 0;
    }
  // put your main code here, to run repeatedly:
  for(int i=0; i<20; i++){
     value += analogRead(sensorPin);
     delay(5);
    }
  avg_value = value / 20;
  Serial.println(avg_value);
  if(avg_value<=500){
    digitalWrite(ledPin, HIGH);
    myservo.write(0);
    delay(7000);
    tapState = HIGH;
    if(tapForState==0)
      tapForState = 2; // check tap was on using sensor data
    }
  if(avg_value>500 && tapForState==2){
    digitalWrite(ledPin, LOW);
    myservo.write(80);
    delay(100);
    tapState = LOW;
    }
    value = 0;   
}

Test Your Creation

cover.jpg
22.jpg

If you followed all the steps describe above, Congratulation!!! You successfully created your self-powered automatic water tap. Enjoy it and modify it in creative way to make it better.