Você está na página 1de 23

Make your own IR obstacle detection sensor

Tip/walkthrough

By OddBot @ Tue, 2008-11-11 03:06


Detects objects at close range. Can be used for object tracking.
Cost to build:
$4
• Target environment: indoors

Description:
Now with video of the sensor being used as a Mintvelt inspired object tracker! This sensor is a
short range obstacle detector with no dead zone. It has a reasonably narrow detection area which
can be increased using the dual version. Range can also be increased by increasing the power to
the IR LEDs or adding more IR LEDs
The photo below shows my test setup with some IR LED's (dark blue) as a light source and two
phototransistors in parallel for the reciever. You could use one of each but I wanted to spread
them out to cover a wider area. This setup works like a FritsLDR but with IR. It has a range of
about 10-15cm (4-6 inches) with my hand as the object being detected.
I'm only running my LEDs about 20mA. My LEDs are capable of 50mA continuous and some
LEDs are capable of 100mA (see "Getting the most from a LED").
I'm using this setup on Junior as a general purpose object advoidance sensor to prevent him
backing into anything. I'm getting a good response with less than a volt when my hand is up
close and reflecting the IR and over 4.5V with no IR.

To get this to work well with an A/D input it needs to have a much lower impedance (needs to let
more current through). You can do this with an op-amp but most op-amps like more than 5V and
are usually more expensive than my one transistor and three resistors. This is a simple one
transistor amplifier that gives my ADC good resolution. Click on the schematic for a larger
picture.
Starting from the
left you can see
my two IR LEDs
with a resistor and
transistor in series.
The transistor
allows the
processor to turn
the LEDs on or
off. This is
necessary to tell
the difference
between the
ambient IR from
daylight and indor
lighting and the
reflected light
from the LEDs that
indicates the
presence of an
object.
Next are my two phototransistors in parallel with a 1M resistor in series. You could use only one
but I wanted to cover a wider area so my transistors will point in slightly different directions. If
either one detects IR it will allow more current to flow. Since volts=current x resistance, even a
small increase in current will create a reasonable increase in voltage across the 1M resistor.
Unfortunately the low input impedance of many AD converters will act like a small resistor in
parallel with the 1M resistor and dramatically reduce the output to the processor. This is where
our BC549 transistor comes in to save the day. In conjunction with the 1K and 10K resistors it
amplifies the signal so that the analog input on your processor gets a nice strong signal. The
BC549 is not too critical, just about any general purpose signal transistor should do. My
transistor had a hfe of 490 when measured with a multimeter. You should probably have a hfe of
at least 200-300.

As you can see my


sensor is made
from liberal
amounts of
hotglue. Click
image for a bigger
picture. This has
the advantage that
you can flex the
leds and transistors
outward to cover a
larger area. This is
juniors reversing
sensor to prevent him reversing into anything and as such will cover a wide area. I will make
single Led/Phototransistor sensors for front left and front right. This will allow him to avoid
crashing into obstacles when his rangefinder/object tracker is looking elsewhere.
Note that the phototransistors are slightly forward of the blue LEDs. This helps stop stray light
from the LEDs being detected.

Below is the sensor hooked up to Juniors mainboard which has three of my amplifiers built in.

Using a simple test program that turns on the IR LEDs, stores the value of the ADC, turns off
the LEDs, reads the ADC again and then subtracts the stored value from the recent value I was
getting readings from 6 to 940. This was with the curtains closed and the lights off. When the
reading was 6, my hand was about 300mm (1ft) away. With the lights on the values ranged from
about 60 to 940 with a value of 60 being with my hand only about 150mm (6inches) away.
Considering the max possible resolution with a 10bit ADC is 0 to 1023, I thought 60-960 with
the lights on was a very good result.
After a comment about using sleeves I repeated these test with heatshrink sleeves on the LEDs
and phototransistors. The sleeves actually had a negative effect and reduced the range. After I
removed the sleeves I did not get the same reduction in range with the lights on. I don't know if it
is because during the first test it was daylight outside and the curtains didn't block it all or if it
was the way I held the sensor but the second set of test gave an almost identical range of
approximately 300mm (12 inches) reguardless of the lights being on or off. I'll have to try again
tomorrow when it is daylight again. It seems my initial test was at fault, maybe the way I held
the sensor?
This is the single
version of the
sensor and will
cost about half. In
the photo you can
see the current
limiting resistor
for the LED.
Ignore the value as
I had different
requirements for
Junior. Use the
values shown in
the schematic.
I've joined the positives together so there is only three wires going back to the mainboard.
Note that the phototransistor is slightly in front of the LED to prevent stray light from the LED
being detected.

Once again I've


used hotglue and
heatshrink to make
it solid and well
insulated.

This is the
schematic for the
single version.
Click on it and the
photos for larger
images.
Because this sensor only has a single phototransistor it isn't quite as sensitive. To compensate
I've increased the current to the LED to almost 50mA which is the maximum continuous current
allowed. Because the LED is pulsed on and off this is quite safe and could have been increased
to 100mA. The problem with pushing a LED to its limits when controlled by a proccesor is that
if a fault occurs in the software then the LED could be destroyed.
When tested, The readings from the ADC of the picaxe ranged from about 100 - 910 reguardless
of background lighting. Despite the slightly reduced resolution due to a single phototransistor the
range was about 400mm (16inches). This increased range was due to the increased power to the
LED.
Make certain your LED and phototransister are parallel to each other for good range.
It was asked how wide is the detection area. Using my hand as the object at a distance of
aproximately 300mm (12 inches) from the single sensor the detection area was about 150mm (6
inches) wide. The double sensor can detect a wider area if the phototransistors are spread out at
different angles.
Using my hand sideon to the single sensor the detection area was only about 60-70mm (2-3
inches). This is reasonably narrow due to the lenses in the LEDs and the phototransistors.
It should be noted that this is not a linear sensor because the intensity of light from the LEDs is 1
divided by distance squared. In other words, when the object is twice the distance away, the IR
from the LEDs is 1/4. As a result, the closer the object, the better the resolution.
This would be a useful sensor to fill in for the dead zone of other IR sensors such as the SHARP
GP2D12. To prevent interferance, one should be disabled when using the other.

As mentioned at the start, I've also experimented with using two of these sensors for a simple
object tracker inspired by Mintvelt's "four eyes". This version can't tell the size or distance of an
object but can track an object well enough for a robot to recognise a moving object and give
chase. Wish I still had a cat, imagine a robot with a waterpistol chasing a cat around the house :
I've attached the code used in the video as well as an improved version (V1.7) that eliminated the
servo jitter.
Good luck and enjoy :)

Sunday 4-1-2009

This is the latest version of my object tracker as used in SplatBot. I've used 20 IR leds to increase
the range. They are limited to 50mA at the moment so that they can't be damaged by faulty code.
If I was to push them to their limit then the range could be increased further but they could then
be damaged by something like an interupt routine occuring when the LEDs are on.
This is the schematic.

Click on it for a larger picture. I found with all The LEDs on that the sensors were swamped by
reflected IR from my hand even at a distance of about 400mm. The circuit works fine and I
definitely get a lot more range but I'm going to have to remove the sensors from the board and
mount them seperately so that I can adjust their distance relative to each other to optimise
tracking and so I can better shield them from ambiant IR.
This is a work in progress.

Updated: 19-1-2009
I've experimented with improving and simplifying the detection circuit. This will give you better
range.
The MPSA13 is a high gain darlington transistor with a hfe of over 5000. If you get the MPSA14
it has about twice the gain. By adjusting the 500 ohm trimpot you should get much better range
than the old circuit.

Top of Form
node 2907

2 80 /fivestar/vote/nod Great

Poor
Okay
Good
Great
Awesome
Your rating: None Average: 4 (2 votes)
node/2907 Rate fivestar_form_no

Bottom of Form

• Login or register to post comments



By ViTek @ Sun, 2008-11-23 05:07

If you put sleeves on the IR


If you put sleeves on the IR LED's so it won't shine directly into the recievers it may improve
performance :)
• Login or register to post comments
By OddBot @ Sun, 2008-11-23 08:41

Sleeves
I tried using small black sleeves of heatshrink that fitted snugly over then LEDs and the
phototransistors. This actually reduced the response. I then tried very short sleeves on the
phototransistors only, with just the body (not the rounded front) covered. This did reduce the
fluctuations caused by the fluroesent lights but also caused the value to occasional go negative
(jumped to 65535).
The fluctuations are because the fluro lights pulsate rapidly with the AC from the wall. In
Australia it is 50Hz. Because the picaxe is sampling at a different rate the readings fluctuate.
The sleeves are not necessary because of the lenses moulded into the LEDs and the
phototransistors combined with the fact that the phototransistors are slightly forward.
• Login or register to post comments
By mintvelt @ Sun, 2008-11-23 09:43

Sharp Rangefinder
This configuration would probably have a nice wide beam. Dit you test the width of the detection
area?
I've read that the sharp IR rangefinder uses some sort if modulation to make sure it gives good
readings in differtent lighting conditions. I asume the frequency of the light is modulated, but
how do you do that with an LED?
• Login or register to post comments
By voodoobot @ Sun, 2008-11-23 10:28

You could use pwmout to


You could use pwmout to modulate the led or a 555 timer chip, but you'd then need a modulated
receiver as well(though those are sold in a nice small package like a tsop4840).
• Login or register to post comments
By OddBot @ Sun, 2008-11-23 11:33

Modulation
My sensor, like the FritzLDR and I presume the sharp sensor from what I've seen of its block
diagram all work by pulsing the IR LED on and off, This is necessary to eliminate false readings
due to background IR from indoor lighting and daylight. It is not the frequency of the light itself
that is modulated.
I've now updated the tip/walkthrough to include the width of the detection area but it is only
aproximates as it could vary slightly with different components used.
• Login or register to post comments
By rik @ Sun, 2008-11-23 09:58

good tutorial
This kind of writing is what we need on LMR! Forget about that pulsy thingy. We need high
quality walkthroughs!
This would be one of them. Thanks Oddbot. Your schematics are starting to become your
trademark. In a good sense.
One request though: could you name your sensor after its goal, rather than after its means? Sure
it uses IR, but in the end we all want to build a distance sensor, or an obstacle detector.I guess it's
all about that purpose thing again....
8ik
• Login or register to post comments
By OddBot @ Sun, 2008-11-23 10:45

Fair enough
Sorry Rik, I did do the tag thingy, now I'll work on the name thingy :D
I'm about to update with the single version of the sensor so I'll do a rename while I'm at it.
• Login or register to post comments
By rik @ Sun, 2008-11-23 12:18

nice!
now it's just plain perfect
• Login or register to post comments
By mintvelt @ Mon, 2008-11-24 09:56

Great!
very smooth indeed. So beautiful. So small. With the detector and LED so close together they
really look like two eyes.
It is strictly speaking not a mintvelt tracker as the eyes don't move individually. However: seeing
your tracker and the demo CTC made, I'm starting to wonder if the individual eye movement is
needed at all if you don't have a large range (600mm or more) and/or a very narrow beam. You'd
need to narrow the detection area if you increase the range of course.
• Login or register to post comments
By OddBot @ Mon, 2008-11-24 10:41
Strictly speaking
True it isn't the same as your tracker but I felt you deserved credit for the inspiration. It can't
determine the size or distance of an object but set it up with a waterpistol and the cat's in for a
nasty suprise :D
I've edited the intoduction text accordingly.
• Login or register to post comments
By OddBot @ Tue, 2008-11-25 09:13

Narrow beam
I thought about what you said. In the diagram below I exagerated the detection area.
As you can see the overlapping area is very small, this is where the object being tracked lies. The
yellow areas are like periperal vision, seeing something in the corner of your eye makes you turn
towards it for a better look.
Turning the eyes in and out is useful for determining the size of the object and changes the size
of the overlapping area to fit that object.
• Login or register to post comments
By mintvelt @ Tue, 2008-11-25 09:43

The Big Picture


it is! It is a big picture. :p
I see the eye are looking outward to narrow the overlapping area. What I mean by narrowing the
beam, is that if the outer edge of one detection area is angled at 45 degrees, the actual width of
the detectionarea is the detection range times 2.
So if you increase the range to 2 meters, your detection area is 4 meters wide. That is pretty
wide. Even for object tracking by getting both sensors to see the object.
Still, looking at your video, I'd say the angle is a lot less than 45 degrees
• Login or register to post comments
By OddBot @ Tue, 2008-11-25 23:32

The angle is narrow because


The diagram is exagerated, the angle is narrow because the sensors have lenses moulded in. The
downside is that the LED and the phototransistor need to be aligned optically. In my code for the
IR object tracking I had to calibrate the sensors. I found at least part of the reason for this was
that with one of the sensors, the hot glue set with the LED/phototransistor noticably out of
alignment. Correcting this drastically reduced the problem of getting both sensors to respond
equally. Other factors such as different amounts of transistor gain mean that some callibration in
the software will always be nescessary.
The real question is what do you want your robot to do with this ability? Is long range tracking
usefull? The greater the range, the more objects that will be detected and confuse the readings.
You need to either do high resolution scans (which require more proccesing power than a picaxe)
with a precision scanner (which is what I was trying to do with the laser range finder) and
determine whats moving and what isn't or stick to short range and simple sensors that detect
fewer objects and simplify programming.
So far from what i've seen of the more complex robots that use cameras and high end processors,
they don't do any more than our very simple object tracking systems except determine the colour
of an object. Three LDRs with different coloured cellophane filters (Red, Green, Blue) and a
white LED would work well enough to tell if an object is orange or pink or purple etc.
Oh crap! I'm rambling again. Sorry :|
• Login or register to post comments
By ViTek @ Sun, 2008-12-07 20:05

What if you turn the sensor


What if you turn the sensor pairs inwards?

/\ Inwards like that


• Login or register to post comments
By dikos @ Wed, 2008-11-26 12:33

nice!

www.GRobot.gr
• Login or register to post comments
By maneuver @ Fri, 2008-11-28 11:07

Just a thought
I havent thought this through, I'm just blurting it out, ok?
What if you put IR film in front of the Phototransistors? Will that prevent the fluctuations
caused by the fluroesent lights to distract your readings`?
/ vzz-clck-"Maneuver"
• Login or register to post comments
By OddBot @ Fri, 2008-11-28 21:51
Good Idea
But the filtering is built into the phototransistors as they only respond to a narrow band of the
spectrum. The problem is that many light sources also put out some IR, even white LEDs. A
bigger problem is that sunlight contains so much IR it completely swamps the sensors so this
setup is only good for indoor / nocturnal aplications.
• Login or register to post comments
By mieczotronix @ Wed, 2008-12-03 12:46
my findings
Hi. I have tested this circuit, with somewhat different components (L-53F3C + L-53P3BT with
30deg lens + BC337) and since I had some problems with range I started playing with resistors.
My LED is rated 50 mA std (1.2 A peak)
I've found this page:http://ourworld.compuserve.com/homepages/Bill_Bowden/led.htm where I
calculated Ohms for the LED resistor and my findigs are:
150 ohm gives 18 mA through each LED - and that's to low for the circuit to sense anything
further than a few cms. 50 ohms would be ok to put 50 mA through each LED. I tested 75 ohms
(giving 35 mA) and found my LEDs still to dark.Since I only had 1 ohm and 47 resistors, I
finally decided to scrap the resistor alltogether and switch the LED on briefly before reading the
analog pin and OFF afterwards. Like that
digitalWrite(IRPIN, HIGH);
delay( 6 ); /// wait until the LED warms up - I've found that this delay is necessary otherwise
readings flucutate
val[buf_w] = analogRead( RANGERPIN );
digitalWrite(IRPIN, LOW);
// ... do some other stuff
delay( 50 );
I guess that for table-fall-prevent-kind-of sensors I'll use a resistor as it will improve resolution
of short-range measurements and I'll probably use one zero-ohm IR blaster for some obstacle
checks. Anyway I'm quite new to robots, so I'll se what's to come.
• Login or register to post comments
By mieczotronix @ Thu, 2008-12-04 00:35
I made a small PCB in Eagle
I made a small PCB in Eagle and fabricated it using (laser printer+iron). Now it's more handy
The gap in the middle free of tracks is meant to aid with fixing the board to a servo. Also LEDs
can be mounted vertically as well as the pin header.
• Login or register to post comments
By OddBot @ Thu, 2008-12-04 05:55

Really nice work!


Your board is very neat, looks great! I'm sorry if you had trouble with range. 20-50mA should be
enough to get at least 150mm range but since posting this tip I have found / confirmed a number
of things that can reduce your range.
1. if you IR LEDs are at a different wavelength to your phototransistors range of spectral
sensitivity. My LEDs and phototransistors were all rated at 940nm.
2. alignment between LEDs and phototransistors, a small difference in angle can have a big
effect on range. Keep them parallel to each other.
3. sunlight / background IR can swamp the light emmited by the LEDs.
I've been trying to find a datasheet for L-53P3BT with no luck. If you can supply some data on it
I might be able to help you increase the range.
• Login or register to post comments
By OddBot @ Thu, 2008-12-04 06:05

I think you've made a mistake?


I was looking at you board, it looks like you have mixed up your LEDs and photo transistors.
The LEDs are blue.
• Login or register to post comments
By mieczotronix @ Thu, 2008-12-04 08:51
thanks. Nope, they're not
thanks. Nope, they're not mixed. These LEDs are white and phototransistors are blue. If I mixed
would'nt work, would it. Anyway I checked them with my videorecorder while I was checking
their range. And it were LEDs that were blinking. According to the shop where I bought them,
both phototransistors and LEDs are rated 940 nm.
I confirm that ambient lighting has great effect - both my computer monitor and fluorescent lamp
above the desk can greatly disturb readings. I'll fiddle with the alignment.

• Login or register to post comments


By mintvelt @ Sun, 2008-12-07 17:38

Range improvement
I was looking at the specs of the picaxe IR sensor.
The one that is used to receive remote control
signals. This device has a build in amplifier,
bandpass and modulator and is very sensitive.
I built a test setup on a breadboard and measured
the output voltage of the signal pin with a
multimeter when I press a button on my (sony)
remote control unit. It drops from 5 to 2.5V and I asume that it's rapidly switching high and low
from the signal.
In the testsetup an IR-LED was sending a couple of bytes using the picaxe irout command. The
same picaxe 08M had its input pin (3) connected to the output pin of the ir sensor. Because the
picaxe cannot receive and send at the same time, an interrupt was set on pin3 to go off when pin3
was low. To signal that the interrupt had been triggered an red LED flashed.
I had to put the IR-LED allmost against the sensor to make it trigger the interrupt. But when I
used a remote control unit, no matter where I pointed it, it triggered the interrupt as soon as I
pressed a button.
When I compared the
IR-LED of the remote
control to the IR-LED
hooked up to the picaxe
by looking at them with
a video camera, the
difference in brightness
was huge! I mean
really huge. The LED
in the remote control
shines brightly and is
clearly visible, the one
on the breadboard
appears to be off unles
you point the camera
right at it. Then you see
a very dim spot of
light.
• Surely it must
be possible to
get an IR LED
connected to the
picaxe to shine just as bright?
• Surely it must be possible to shield part of the IR-sensor to obtain a narrower detecion
beam?
• Surely it must be possible to get those two set-up to build an IR object detector with a
range of at least 1 or 2 meters?
Especially when you look at the detectionrange of the IR-sensor when using a regular remote
control.

• Login or register to post comments


By robologist @ Sun, 2008-12-07 18:16
LED current
In your schematic you are limiting the current to the IR LED to 13 mA (4.3 v / 330 ohm) from
the PIC pin, which is only capable of 25 mA anyway. Oddbot has the PIC pin switching a
transistor, which allows the paired IR LEDs getting around 24 mA (ignoring the transistor loss),
driving them a bit harder. If you look up the datasheet for the IR LED being used, you should be
able to calculate how hard you can drive them. That remote could be putting a few 100 mA
across the LEDs it uses, though only briefly. Check this group of messages. At the same time, I
think Oddbot said that the LED current must be tuned to best functionality, as in highest LED
current may not always be best.
• Login or register to post comments
By mintvelt @ Sun, 2008-12-07 19:40

Tweak!
I guess I'll have to start tweaking until I get the LED brighter. I was hoping I could buy a 'special
ultrabright, built for remotes'-LED somewhere. Still.. The difference between the remote and the
breadboard LEDS is enormous. I can't imagine trippling the current can make that much of a
difference.
• Login or register to post comments
By mieczotronix @ Sun, 2008-12-07 20:20
but these IR sensors are not good
these IR sensors are no good for linear range measurements as they output binary signal (logical
1s and 0s), rather than analog, continuously voltages.
• Login or register to post comments
By mintvelt @ Sun, 2008-12-07 20:50

I know
I'm not trying to get a range measurement from the sensor. I'm trying to get it to pick up a signal
reflecting of an object in front of it. Like when you aim your remote control at the ground; the IR
signal is reflected on the floor and still picked up by the TV. If you can get the same sensitivity
but with focussed IR beam and sensor you could make a nice obstacle detector or even a range
finder like the laser rangefinder from Oddbot.
• Login or register to post comments
By OddBot @ Sun, 2008-12-07 21:14

LED intensity
In a IR remote, the LED can have 200mA pulsed through it for a short duration, Captain Tuna
had a forum on the subject. Mintvelt's idea of using the sensor is a good one. If you use the
pwmout command to generate a 38KHz pulse to the LED via a transistor then because internal
circuitry is automatically generating the pulse you can monitor the input. This should have good
range especially if you get a high powered LED like Captain Tuna was using which is
specifically designed for high powered pulses.
My initial design was only intended for short range but I think this is a great idea, you may
actually have too much range as I find with white walls I can bounce a remote signal off of the
wall behind me and still turn on a device in front of me. At least that can be adjusted by reducing
the power to the LED :)
• Login or register to post comments
By mintvelt @ Sun, 2008-12-07 22:08

It works!
I used a potmeter / variable resistor set to about 80 Ohms. I didn't think of using PWM, but I
used IROUT which pulses the LED as well. As soon as the receiver starts signalling and pulls the
input low, the IROUT gets interrupted. No transistor between the output of the picaxe and the
LED so I guess the LED will only get 25mA. Using a rolled up piece of plastic to shield the sides
of the led, I got a range of about 30cm. That was on a breadboard with the LED and the sensor
more or less bend in the same direction.
Removing the resistor alltogether (Bad! shouldn't do that! against all the rules) I figured both the
picaxe and the LED would surive and they did. I got it op to 40cm.
I've also looked up the specs for the LEDs they use to provide IR lighting for security CAMs.
Some of those LEDs are rated 100mA continuously and 500mA pulsed. Wow!
Haven't figured out where to get those LEDs.
• Login or register to post comments
By OddBot @ Sun, 2008-12-07 23:04
Great stuff Minvelt!
The way your going you shoulb be able to get at least 2-3 meters. If you can find an old remote
control, get the LED out of it, should handle at least 250mA pulsed. If you reduce the dutycycle
to about 10% you should be able to get 500mA plus but without a data sheet I can't make
promises.
Careful not to overheat the LED while desoldering!
Use two or more LEDs to increase the range.
• Login or register to post comments
v

Você também pode gostar