Go Down

Topic: Best method to extract a particular frequency from a raw signal (Read 231 times) previous topic - next topic

Grumpy_Mike

Yes an FFT is the way to do this, but as was said before the frequency range is not so high on a standard Arduino. On the Due however I should think this is just about possible.

However just like the bandpass filter an FFT has a band width as well and you will get a certain degree of noise as well. That is because noise contains all frequencies so if you filter out just say 33.3KHz there will be your wanted signal and also the 33.3KHz contents of the noise. These will add together to give you a changing signal at the required frequency.

The resolution or band width you can get out of an FFT is determined by the sample rate you can achieve, so the higher the sample rate the finer the bandwidth. Therefore for best results you need to sample much more than just twice the rate of your highest frequency.

There is a hardware technique for doing such things known as a "lock in amplifier", google for more information on that but it is complex and expensive to implement.

djayvin

Are they microvolt, millivolt or volts, and the signal to noise ratios of the wanted signals to the unwanted ones.

I believe the input from the antenna itself is in millivolts. and i would confirm that the next time i run to the lab. i used filterpro to design the bandpass filters with a maximum gain of 1000V/V. the first one i tested was allowing too many other components, i redesigned it to a narrower bandwidth and will be testing that tomorrow at latest. I will probably then get a better idea of what needs to be done.

djayvin

Yes an FFT is the way to do this, but as was said before the frequency range is not so high on a standard Arduino. On the Due however I should think this is just about possible.
I was going to do that on a Arduino MEGA, if it is possible to use the same on a Due, i might try that. Do you have any relevant programming method for the FFT? I tried googling it, the FFT programming i got is not clear. I saw projects like Spectrum Analyser, which seemed to suit my purpose.

However just like the bandpass filter an FFT has a band width as well and you will get a certain degree of noise as well. That is because noise contains all frequencies so if you filter out just say 33.3KHz there will be your wanted signal and also the 33.3KHz contents of the noise. These will add together to give you a changing signal at the required frequency.
I was going to compare it with itself, and i would be using the increase or decrease of the amplitude, to do a function. I believe the error from the should minus out on itself.

I just thought of a new approach, as i said i was only interested in the amplitude of the signal frequency and not the signal, if i can really locate the signal and amplify it by external circuitry, i could try and add an appropriate capacitor to make it constant, a rectified signal. then the high frequency would not be an issue. Now it seems that the system would depend mostly on how effective the bandpass filter is. Would that possibly work?

KeithRB

Sure. You could also use a phase locked loop like this:
http://www.ti.com.cn/cn/lit/ds/symlink/lm567.pdf

Grumpy_Mike

The problem is at a phased locked loop is good frequency modulation not amplitude.

To the OP, the problem is that it you can't tell what variation in amplitude is from the signal and what from the noise.
Yes you can use an FFT on a due, it will be an order of magnitude better than the Mega.

Go Up