Ultra-Sonic Ranging Design
By Gerald Coe
[Archived from http://devantech.demon.co.uk/]
This project started after I looked at the Polaroid Ultrasonic
Ranging module. It has a number of disadvantages for use in small
robots etc.
- The maximum range of 10.7 metre is far more than is
normally required, and as a result
- The current consumption, at 2.5 Amps during the sonic
burst is truly horrendous.
- The 150mA quiescent current is also far too high.
- The minimum range of 26cm is useless. 1-2cm is more like
it.
- The module is quite large to fit into small systems, and
- Its EXPENSIVE.
Here in the UK from Maplin Electronics, the module costs
GB38.00 and the transducer costs a further GB17.00. In fairness,
the Polaroid module does the job it was intended to do, which
requires the range, but that job is not to provide the eyes of a
small robot.
Here is the schematic, You can download a better quality pdf
(161k) version srf1.pdf

The circuit is designed to be low cost. It uses a PIC12C508 to
perform the control functions and standard 40khz piezo
transducers. The drive to the transmitting transducer could be
simplest driven directly from the PIC. The 5v drive can give a
useful range for large objects, but can be problematic detecting
smaller objects. The transducer can handle 20v of drive, so I
decided to get up close to this level. A MAX232 IC, usually used
for RS232 communication makes and ideal driver, providing about
16v of drive.
The receiver is a classic two stage op-amp circuit. The input
capacitor C8 blocks some residual DC which always seems to be
present. Each gain stage is set to 24 for a total gain of
576-ish. This is close the 25 maximum gain available using the
LM1458. The gain bandwidth product for the LM1458 is 1Mhz. The
maximum gain at 40khz is 1000000/40000 = 25. The output of the
amplifier is fed into an LM311 comparator. A small amount of
positive feedback provides some hysterisis to give a clean stable
output.
The problem of getting operation down to 1-2cm is that the
receiver will pick up direct coupling from the transmitter, which
is right next to it. To make matters worse the piezo transducer
is a mechanical object that keeps resonating some time after the
drive has been removed. Up to 1mS depending on when you decide it
has stopped. It is much harder to tell the difference between
this direct coupled ringing and a returning echo, which is why
many designs, including the Polaroid module, simply blank out
this period. Looking at the returning echo on an oscilloscope
shows that it is much larger in magnitude at close quarters than
the cross-coupled signal. I therefore adjust the detection
threshold during this time so that only the echo is detectable.
The 100n capacitor C10 is charged to about 6v during the
burst. This discharges quite quickly through the 10k resistor R6
to restore sensitivity for more distant echos.
A convenient negative voltage for the op-amp and comparator is
generated by the MAX232. Unfortunately, this also generates quite
a bit of high frequency noise. I therefore shut it down whilst
listening for the echo. The 10uF capacitor C9 holds the negative
rail just long enough to do this.
In operation, the processor waits for an active low trigger
pulse to come in. It then generates just eight cycles of 40khz.
The echo line is then raised to signal the host processor to
start timing. The raising of the echo line also shuts of the
MAX232. After a while no more than 10-12mS normally, the
returning echo will be detected and the PIC will lower the echo
line. The width of this pulse represents the flight time of the
sonic burst. If no echo is detected then it will automatically
time out after about 30mS (Its two times the WDT period of the
PIC). Because the MAX232 is shut down during echo detection, you
must wait at least 10mS between measurement cycles for the +/-
10v to recharge.
Performance of this design is, I think, quite good. It will
reliably measure down to 3cm and will continue detecting down to
1cm or less but after 2-3cm the pulse width doesnt get any
smaller.
Maximum range is a little over 3m. As and example of the sensitivity of this
design, it will detect a 1inch thick plastic broom handle at
2.4m.
Average current consumption is reasonable at less than 50mA
and typically about 30mA.
Download the source code and a ready
assembled hex file.
You can also purchase a tiny, ready assembled, low cost module based on the above
design, here.
Feedback, by email or in the electronic/robotic newsgroups, is
very welcome.
Gerald Coe.
gerry@devantech.demon.co.uk
|