The basic theory behind the ParKontroller is the Sound Navigation and Ranging (SONAR) technique that is used for finding the distance and direction of a remote object underwater by transmitting sound waves and detecting reflections from it.
By counting the elapsed time between the transmitted signal and the received signal, the distance between the device and an object can be easily calculated by multiplying the elapsed time with the speed of sound.
All hardware parts used in this project were off-the-shelf components that are widely used in simple analog circuitry, hence using other parts from different manufacturer or vendor would not have given us better results. For instance, the 40kHz transducer we used as transmitter and receiver was a generic component that has the same electrical characteristics with any other 40kHz transducers. Nonetheless, there was a major tradeoff when choosing which voltage level to use for the transmitting signal. During our hardware-testing phase, we found out that the effective range of our ParKontroller is proportional to the power of the transmitted signal. Larger range was initially preferred, but we also know that higher power achieved by using operational amplifier will also amplify the noise. The effective range of our device was important, but acquiring a clean square pulses were much more important in terms doing calculation with the received signal. The voltage level of the transmitted signal can be amplified up to +18V, but that resulted in random spikes and noise in received signal hence producing random distance calculations. Tuning it down to +12V gave us reasonably clean signal, and in fact it was practical to use 12V since 12V can be tapped from the fuse box of any standard cars.
The biggest software tradeoff had to do with the timing. Our main priority was to produce a set of pulses at the operational frequency of the transducer of 40 kHz. This meant that we were restricted to only one interrupt; having more than one implied an overlap of the interrupt meaning one was going to be missed. Being limited to one timer also means that our freedom to code is limited. In order to generate the pulses we limited our capacity to expand our features:
Timing: in order to have the 40 kHz pulses we can’t have a very fast interrupt, so our timing of the pong was limited to the fastest interrupt we could have that generated our pulses.
Sound: having only one interrupt limited our capacity to generate precise sound.
In order to get a fast reading on a signal we had to have really fast code. This meant that the interrupt had to be fairly fast. We could not further exploit the interrupt without causing some problems in the functionality of the system.
Visit Here for more.