I've been doing some research on ultrasonic range finders as sensors for robotics. I've seen them being attached to servos and pivoted to effectively "look" in front of the robot and make sure the path is clear.

While this approach is very effective for the most part, I am hoping it can be improved. What I need to know is if it is possible to use several ultrasonic transducers (lets say 4) at the same time by having each one emit and listen for a different frequency?

Here's a picture of what I mean:

robot with colored rays, each ray symbolic of the direction of a different ultrasound transducer, each color represents a different frequency

In this picture, the green box represents my robot. The tiny blue box represents a panel with 4 separately angled ultrasonic transducers. The rays emitting from the blue box represent the angle at which each transducer is aimed. The different colors of the rays represent different frequencies. Say, for example: 34KHz, 36KHz, 38KHz, and 40KHz.

If this is possible, how would I go about getting ultrasonic transducers that produce different frequencies, most of them seem to come with 40KHz. Can I just regulate the frequency of them through my Arduino board somehow?

edit Furthermore, is it possible to use one ultrasonic transducer to produce the full range of frequencies? IE: I rotate the servo 4 times as fast, ping 4 times as fest, but step up a frequency interval after each ping? Can a single transducer listen for variable frequencies?


2 Answers 2


A typical piezoelectric ultrasonic transducer won't be as efficient when driven at frequencies other than it's rated one. They act a bit like a resonant LC tank, so sensitivity drops off quite sharply.
A typical figure seems to be ~2kHz -6dB bandwidth (e.g. with 40kHz transducer if will be half as sensitive or give half the output at 39kHz and 41kHz)

40kHz seems to be the most common (and cheap) but you can get different frequencies like 25kHz, 60kHz, 180Khz, etc.

Rather than doing this though, why not just use 4 of the same and pulse each one separately, or use one and rotate through desired angle with servo.
Unless your robot is travelling very quickly it shouldn't matter if you stagger the pulses slightly. You can even make a basic SONAR this way, here's an interesting PIC based example.

  • \$\begingroup\$ Well the whole reason for this is that I am concerned that in areas that contain a lot of obstacles (IE boxes), the signals could bounce around and one transducer could receive a response from a different one before it receives a response from itself, thus making the readings wildly inaccurate. The idea of using 4 separate frequencies would be so that it could scan 4X as fast without losing accuracy, and thus be capable of moving faster. \$\endgroup\$
    – JonathonG
    Commented Jan 10, 2012 at 8:46
  • \$\begingroup\$ that sonar is exactly what I intend to make, but I want to make it scan very fast so that my robot can use it while moving at decent speeds, instead of going forward, scanning, going forward a bit more, scanning, etc... or going forward very slowly while scanning. \$\endgroup\$
    – JonathonG
    Commented Jan 10, 2012 at 8:54
  • \$\begingroup\$ do you know if the transducer will be able to accurately sense differences as small as, maybe, 100mhz? IE 39.8, 39.9, 40.0, 40.1, 40.2 khz? That way I could use a standard 40khz transducer without losing as much power? \$\endgroup\$
    – JonathonG
    Commented Jan 10, 2012 at 8:57
  • \$\begingroup\$ Each pulse will quickly decay, if you set a reasonable threshold in your detection routine you should be able to deal with this (note the distance your are able to sense will decrease with high settings). If you want to get clever about it you could maybe have an adaptive algorithm that scans the reverberative characteristics of the room and sets time/threshold accordingly. It all depends on how fast you need to do this - if very fast then using different rated transducers is probably a good idea. \$\endgroup\$
    – Oli Glaser
    Commented Jan 10, 2012 at 9:05
  • \$\begingroup\$ The transducer will sense small frequency changes around the resonant frequency, but you would still need to detect/filter these afterwards. \$\endgroup\$
    – Oli Glaser
    Commented Jan 10, 2012 at 9:09

Is it possible to use multiple ultrasonic sensors on a single robot? Yes: "Using Multiple Sonar Sensors".

As you have already figured out, one sensor often receives echoes of pings sent by another sensor. There are several ways to deal with cross-sensitivity, roughly in order of simplest first:

  • ping only one transducer at a time, ignoring all the other transducers while waiting for the "ghost echoes" from the current transducer to die down before pinging the next transducer. This is much faster than mechanically rotating a single transducer. Perhaps this will be fast enough, unless your robot is ramming into things at nearly the speed of sound :-).
  • Use relatively narrow beam angle transmitters or receivers (or both) per sensor, and increase the angle from one sensor to the next so one sensor can't hear the echo from another (unless the stuff in front of the transducer causes some weird lateral reflections) -- sensors angled apart roughly the same as the beam angle. Alas, this leaves "blind spots" between transducers where objects can't be seen by any transducer.
  • Some combination -- for example, increase the angle from one sensor to another so one sensor only hears echoes from its 2 neighbors (about half the beam angle); then alternate between pinging the even transducers (ignoring the odd transducers) and pinging the odd transducers (ignoring the even transducers).
  • each transducer operating at a different frequency. Alas, all the low-cost ultrasonic transducers, with few exceptions, are tuned to resonate at 40 kHz. When listening to a variety of signals, these transducers can only "hear" signals that are within a few kHz of 40 kHz. You'll have to balance (a) The further away from 40 kHz you use on a transducer designed for 40 kHz, the less sensitive it is, so you want a frequency "relatively close" to 40 kHz; and (a) The closer all the frequencies are together, the more difficult it is to discriminate between them, so you want a set of frequencies that are spread "relatively far apart". I don't know if there is a good compromise or not -- if not, you're stuck with (c) use more expensive sensors tuned to other frequencies, or more expensive "wide-bandwidth" sensors not tuned to any particular frequency.
  • Use various transmit timings to rule out ghost echoes. Say you transmit from the left, delay 2 ms (not nearly enough to let the echoes die down), then transmit from the right, ... after the echoes die down, then transmit from the left, delay 3 ms, then transmit from the right. If the right reciever gets an echo back 5 ms later both times, then you can be pretty sure it's a real echo; if the right receiver gets an echo back 5 ms later the first time, 6 ms later the second time, it's probably a ghost from the left receiver. (There are much more sophisticated "spread spectrum" techniques for separating out many transmitters all using the same frequency at the same time).
  • Combine the signals from all the receivers. If you have one central transmitter that pings in all directions (or equivalently you have transmitters pointed in every direction, and you ping them all at the same instant), and the first echo you get back hits the left receiver first (then later the right receiver hears an echo), you know that the nearest obstacle is closer to the left side than the right side. (There are more sophisticated "phased array" techniques that combine signals from all the receivers, and even more sophisticated "beamforming" techniques for slightly adjusting the transmit times of all the transmitters).

p.s.: Have you seen "Infrared vs. Ultrasonic - What You Should Know" ?

  • \$\begingroup\$ Wow, thank you so much for all the info! I wish I could give you and Oli Glaser both the accepted answer! I would give it to you, but I don't want to take away reputation points that I already awarded him. I can't believe that wide bandwidth sensor Is only ~$7.00.. I would need two of them per frequency though, wouldn't I? I will try some of the techniques you've listed here with normal 40khz sensors, and if it's easy enough to filter out echoes from the other transducers, I will not buy the more expensive ones. \$\endgroup\$
    – JonathonG
    Commented Jan 18, 2012 at 19:37

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.