I’ve wanted to build a sonar for a while now, and I was hoping to be able to do it with a design someone else had made, but alas, I’ve never had much luck. I’ve done many searches of web pages, and all that ever comes up are sonars that give a single range to one object. Nothing that would be useful for my purposes: an imaging sonar.
Over 10 years ago, I’d guess, there was an article in Radio-Electronics magazine about an imaging sonar that was using one of the Polaroid sonar modules and a stepper motor for azimuth. This only gave one range per azimuth step- still not what I really wanted.
So it ends up that I’ve built my own. I have two 40KHz ultrasonic transducers, one for transmit, one for receive. These transducers are steered by an R/C servo over 180 degrees of azimuth. I’m using 2 Microchip PIC microcontrollers, a 16C71 for the sonar portion, and a 16F84 for the servo control. There are two microswitches that sense the ends of travel of the servos, and this information is stored in non-volatile memory on the ‘F84. It can scan the full 180 degrees, or it will scan just a sector, or it will give multiple readings in a single direction. All control and output is over a single 19.2 Kbps serial port.
The analog portion of this is pretty involved- I need to receive, amplify, detect and filter the signal before I put it into the ‘C71. I built an extremely wide dynamic range full wave rectifier which rectifies the 40KHz signal without (much) distortion from 10mV P-P to about 3V P-P. I also incorporated a receiver protector circuit that shorts out the receiving transducer during the outgoing pulse and for 1ms afterwards.
The range right now is somewhat limited: about 6 inches to about 4 feet. The near range is limited by the ringing of the receiver caused by the coupling between the tansmitting and receiving transducer. I could have used just one transducer, but that would have extended the close-in blind period, because the ringing would have been harder to quiet. The far range is limited by the RAM of the ‘C71. I’m hoping to get a 16C711 which has more RAM, which will let me double the range.
As it is, the transducers have a response that is much too wide in azimuth. I do need to figure out a way to focus the signal. I’m exploring the possibility of a phased array or a parabolic reflector.