Electronic – arduino – Multiple Ultrasonic Rangefinder Question

arduinoaudioroboticssensorultrasound

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?

Best Answer

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.