Arduino Frequency Detection: How do you detect frequencies reliably in a noisy signal?

Detecting the frequencies of signals reliably is something that occurs fairly often in projects from guitar tuners to heart rate monitors, but reliable techniques to achieve this are often beyond the casual hobbiest because they involve digital signal processing.

I’m not saying it’s difficult. It’s not difficult. It’s just that you’d need to have studied DSP to know about frequency estimation techniques and the various tradeoffs to select the right one for your application, and many hobbyists haven’t studied DSP.

Here’s a project on using Autocorrelation to detectÂ  the frequecy of a signal. It works in noisy environments and is suitable for many hobby projects.

Reliable Frequency Detection Using DSP Techniques

2 Replies to “Arduino Frequency Detection: How do you detect frequencies reliably in a noisy signal?”

1. Gary says:

I’m searching for an efficient algorithm to detect the begin and/or end of 3 overlapping ultrasonic signals of different frequencies. My goal is to develop a system to give accurate positioning at distances of up to 100m from 3 ultrasonic speakers by means of trilateration. The 3 “tones” are requested simultaneously via RF from the mobile unit needing to chart its relative position from the 3 fixed bases. Its distance from the 3 speakers is determined from the length of time it takes for the ultrasonic replies to reach it. This can be useful for various robotic applications.

For reasons of health/safety, I wish to use 3 frequencies in the 25kHz-40kHz range at 80db. Since the mobile unit may be moving at up to 5% of the speed of sound, making the 3 requests serially introduces undesirable inaccuracy. Digital processing of such high frequencies, when superimposed on each other, seems challenging, but hardware filtering, i.e., bandpass electronics, is not a trivial undertaking either.

I would be very interested in any information in this regard.

Gary

2. Gary says:

Sorry, I left something out. I meant to say I follow the Autocorrelation theory, but I wonder if it holds much promise for this application.

Thanks,
Gary