Introduction: Proximity Sensor for Arduino MCU Using 555 Timer IC
Hi friend I'm Aravind Chowdary and today we're going look into the building of an IR proximity sensor. This was my contest entry so if you like my project don't forget to vote me for the contest. Let's get started!
After setting up
your robot’s motors and letting it run, one of the first things
you’ll realize, is that most likely it will run straight into a wall.
How do get your robot to detect obstacles, you may wonder. Well, there are
a number of different solutions for this problem, such as radar, sonar
(sometimes SODAR in air), bump switches, and one of the most widely used
solutions, Infrared obstacle detection. This type of sensor is called a
proximity sensor, because it can only detect if an obstacle is within
or without a set range. If your application needs an actual distance
returned, then you probably should use sonar or DIRRS (digital
infrared rangefinding system). An infrared proximity detector (IRPD),
works by illuminating in front of the robot with infrared light, this
type of light is invisible to the human eye, but your home camcorder
see this type of light quite well. When the light is reflected by an obstacle
in front of the robot, your IR detectors will register that light, and, an
obstacle. Variables such as texture, surface, color , and reflectivity
affect reliability. The type of infrared light used is called near
infrared, and operates at 800 – 1000 nm, as opposed to the IR light
used in security systems or night vision goggles, which is called the
far infrared type of light, and operates from 2000 – 10,000 nm. The
type of detectors used in this type of IRPD
only allows a certain frequency of light to pass, usually from 35 to
40 kHz. Since there are very few sources of IR light at these frequencies
there is very little interference. In the system we will be building,
we will us a 555 timer to produce the desired frequency. There are
many other type of frequency generating circuits, but the 555 is the
easiest. This frequency can be tuned using a potentiometer.
Step 1: Get Your Parts
1 – breadboard for
prototyping (very highly recommended!)
1 – 555 timer
1 – 1-10k potentiometer (value is not imperative)
1 – 0.01 uF cap
2 – 1k resistors
2 – IR receivers (preferably Panasonic 4602 available a Digi-Key.
If you buy Radio Shack detectors don’t expect it to work well at all)
2 – IR LEDs
2 – 470 ohm resistors
2 – 0.1 uF caps
If you're ready with the parts let's get started!
Step 2: Circuit Diagram
This project involves two
parts, first, we set the 555 circuit to produce the desired frequency,
then, we set up the IR detectors, and LEDs, and write the
code. We will cover part one this month, and part
two next month.
The first step in building this circuit is to place all the
components on your bread board using the schematic above.
Step 3: Program Your Controller
program your controller using the code below. If you are using something
other than a Basic Stamp, you should have some sort of display, or
oscilloscope so you can tune the circuit to the required frequency.
‘Frequency count Basic Stamp code
frequency var word
high 5 ‘turn on oscillator unless vdd
is connected to the reset pin
‘count frequency on pin 6
debug dec5 frequency*10,cr
Once your processor has been programmed you then should
turn the potentiometer until the debug screen, o-scope, or LCD display shows
38,000 (or the correct frequency for your detectors). Once your
circuit is set to the correct frequency, then we can move on to the next
section of our project…
Step 4: Let's Recape What We Done
Lets recap what we’ve done
so far. First, we created a 555 timer circuit to produce a 38-40khz pulse.
We did this so that the detectors would be able to recognize the infrared
light coming from our robots LEDs and no other type of IR light. After
setting up the circuit we then fine tuned it using a simple Basic Stamp
program. At this point in the process we need to put in the LEDs IR
detectors, and write some code to utilize our infrared proximity detection
Step 5: Infrared Detection
The first step is to assemble
all your components on your circuit board or bread board according to the
Before setting up the detectors first find out if the IRLEDs are doing
anything. You can do this by either using you home video cassette recorder
or using a IR an IR detector card from Radio Shack. Although using the
card is probably easier, it’s a bit pricey at $5.00 US. Camcorders are
able to pick up the higher wavelength light than a human eye, so therefore
you can "see" the IR LEDs by looking through your viewfinder. If
you DON’T see any light from the LED’s then you need to verify that your
circuit is receiving power, and that the output pin is outputting. Next
you need to wire up your detectors using the schematic below. The physical
setup of the detectors and IRLEDs are at a 45 degree angle. The picture
below gives a good representation, with detectors in yellow and IRLEDs in
red. Follow the above circuit to build the detector.
Step 6: Coding
Got your detectors set up? Verify the pin
connections and fire up your stamp using the code below.
‘Basic Stamp Code
‘Basic Proximity Detection Part 2
Once you have this
code running, try and put your hand down in front of you detector and LED.
Depending on what detector you have at which pin, on of the debug number
should change from 1 (high) to 0 (low), and remain that way as long as
your hand is in front of it. Now try the other detector, and then both at
the same time.
Once both of your detector and LED pairs are functioning correctly then
try out the code below.
RIRdetect var nib
LIRdetect var nib
RIRdetect = 0
LIRdetect = 0
‘check 10 times
for right detection
for x = 1 to 10
RIRdetect + in0
LIRdetect + in9
if (RIRdetect <
4) and (LIRdetect < 4) then center
if RIRdetect <
4 then rdetection
if LIRdetect <
4 then ldetection
"A right collision was detected!"
"A left collision was detected!"
Note: I have NOT
tested this code as of yet. It came all FROM MY HEAD. If it doesn’t work
correctly check for errors. My IRPD circuit is disassembled at the
moment, and I haven’t had time to put it back together.
Step 7: Lastly
is just some basic code that checks for a greater than 60% hit ratio.
Since an output low (0) signals a hit, we test for a value lower than 4.
You can put any code you want into the r and l detection and center
subroutines. Once you have it working congratulations! You now have a
working, albeit, simple obstacle detector.
Thanks for spending your time in reading my instructable.