Introduction: Arduino Controlled Personal Fan With Ping Sensor / ATtiny2313
What does this do?
This is a fan that will automatically come on when i sit at my workbench and off when i leave.
It uses an Ultrasonic Distance Sensor, or commonly called a "Ping " sensor for detection.
An ATtiny2313 to handle the processing.
A power supply from a router. ( Wall wort )
A relay to switch the AC power.
The ping sensor works by sending out radio waves and times how long it takes for the radio waves to bounce off of an object then return. From this time we can calculate distance. I know it is more complicated than this but this is the simplified version
Video Link
Step 1: BOM
- ATtiny2313
- 6v relay
- 20 pin socket
- Ping sensor
- Fan
- 2n2222 transistor
- 1N4004 Diode (2)
- 10K resistor
- 330R Resistor
- 8.2v power supply
- Perf board
- Switch
Step 2: Circuit
Not much to say here it is pretty straight forward.
The one thing that needs explaining is the power supply.
It is a 5v ( wall wort ) that puts out 6.08v whether under a load or not. Just rite for a 6v relay, but not a micro-controller
Scenes the ATtiny2313 needs 5v i put a 1N4004 diode in the VCC line to reduce the voltage by .6v. That is the standard voltage drop for a rectifier diode.
6.08v - .6v = 5.48v.
Maximum allowable operating voltage is 5.5v in the data sheet. Yes it is pushing to run piratically at max volts. But it is an experiment to see how it works out. So far it has been running for 3 months and all is well.
Data Sheet
Step 3: Power Supply
I could of just plugged the wall wart directly into the wall outlet then powered the circuit with a power jack but that means i would use 2 plugins. With taking the wall wart apart and using only the circuit i could make this all on one board and one plugin.
Step 4: Main Board
Arrange the components for best fit and clearance. Solder everything down and run traces as per the circuit diagram.
Step 5: Fan Motor
This was of those little 6" all plastic fans. After it had dropped for the umpthteen time the glue just couldn't hold it together any longer. After it sat in my junk box for a year or so i decided i found a good place i could make use of it. I stripped it down and glued the motor in the corner of a shelf that sits on top of my workbench.
Step 6: Ping Sensor
- Ground
- Trigger
- Echo
- VCC
While this sketch is for a 4 pin sensor, i have successfully ran this 4 pin sensor on a 3 pin sketch also. Tie the Trigger and Echo pins together on the same output pin of the Arduino. It works just as well either way.
Step 7: Programing
For programming i used the methods found in this Instructable as well as this Instructable.
Step 8: Code
#include "Ultrasonic.h"
int RELAY = 9; // RELAY Pin.
int TRIG = 11; // Trigger Pin
int ECHO = 10; // Echo Pin
int Range; // The range of the object from Ping Sensor
int Dist; // The Distance value
Ultrasonic ultrasonic(TRIG,ECHO); // Create and initialize the Ultrasonic object.
void setup() {
pinMode(RELAY, OUTPUT); //To the relay via the transistor
Dist = 32; //The distance in inches. Change this for increasted or dicreasted range.
}
void loop() {
//Range = ultrasonic.Ranging(CM); // Range is calculated in Centimeters.
Range = ultrasonic.Ranging(INC); // Range is calculated in Inches.
if (Range < Dist) {
digitalWrite(RELAY, HIGH);
} else if (Range > Dist) {
digitalWrite(RELAY, LOW);
delay(9000);
}
}
Don't forget to make sure you have the "Ultrasonic.h" library installed or this sketch wont work.
Here is a link to the "Ultrasonic.h code if needed.
There is a delay on the end so that if something passing quickly by the sensors range it will not trigger it. Only if an object has been in the sensor range for more that the delay time will the fan come on.
Step 9: Thank You
Thanks for looking!
If there is any questions i can answer i am happy to.

Participated in the
UP! Contest
18 Comments
8 years ago on Introduction
please tell me the min range of the sensor
8 years ago on Introduction
wwc have u ever used a PIR Sensor?
8 years ago on Introduction
Wow... simple and good example on how to use ultrasound sensor... I've made something similar... but trying to get the ultrasound sensor to activate the relay... but cant figure out the configartion... fairly new to arduino...
8 years ago on Introduction
Nice idea. I came here to find some inspiration for my project where the Ultrasonic Sensor trigger the relay for the light. Anyway, two things I noticed and I believe should be said for the newcomers:
1. The so called ping sensor does not emit radio waves. As the name suggests it emits ultrasounds. Sound which cannot be heard by humans. The following is true - by measuring the time needed for the sound to bounce we can calculate the distance.
2. Please work on your spelling :) I am not an English speaker but fortunately I understood what you meant by 'scenes' :) It's spelled 'since'.
Reply 8 years ago on Introduction
You come to this site and the first thing you do is complain about one of my projects. This is your one and only contribution to this community. I suggest you actually do something of your own instead of complaining about somebody else hobbies. I am sure you do not realize that making an Instructable is far more work than the actual project and is done for the sure pleasure of sharing with other DIY'ers. If you do not like somebody's Instructable i suggest you move on and not try to fix people to conform to the way you think the world should be. This explains why your FB link on your Instructables page shows only one friend.
9 years ago on Introduction
I am working on a project which requires that a very powerful bulb gets brighter as a person aproaches it.
How could I modify this to give an output voltage which increases in a linear fashion from 0 to 10 volts?
There
are many projects on instructables and elsewhere that either use the
distance information to output to a digital display or light up a few
leds in steps as with car reverse sensors, but I have not found anything
which will give a continous analogue output voltage neccessary to
operate a lighting dimmer. Can anyone point me in the right direction?
10 years ago on Introduction
When I upload the code it gives an error saying that 'class Ultrasonic' has no member named 'Ranging'
What do I do now?
Reply 10 years ago on Introduction
Did you install the Ultrasonic library?
Reply 10 years ago on Introduction
It works fine, just had to install a newer version of the Ultrasonic library, thanks for the tutorial :D
Reply 10 years ago on Introduction
Your welcome.
I also was trying to get the ranging adjustable with a pot but never got that worked out.
10 years ago on Introduction
Nicely done!
Well suit for the tropical climate!
Reply 10 years ago on Introduction
Thanks
10 years ago on Introduction
Following the advise of my spiritual guide Saint Ozzy I'd have used an electric eye.
http://www.youtube.com/watch?v=tsLkL8DTHeg
10 years ago on Introduction
You do good work !
And that is a heavily well worked bench.
A
Reply 10 years ago on Introduction
Thanks A
i was trying to prevent myself from getting tennis elbow from turning the fan switch on and off, You know how dangerous that can be.
Reply 10 years ago on Introduction
Extremely elbow hazardous !
And very humid by the iron oxide on the fan lamination :-P
Especially since I see you are using a 220VAC style of power connector.
10 years ago on Introduction
Clever idea! Nice work.
Reply 10 years ago on Introduction
Hi
Thank You for looking at one my Instructable and it is a honor to have you comment also.
I follow you work as well.
Thank You