Quote:
Originally Posted by manderson5192
I think I remember reading a little about how to design time-domain filters based on a Fourier Transform, but I couldn't glean much from the website's brief description.
I'm assuming that taking a Fourier Transform of the signal could reveal the frequencies of the high-frequency signals of vibrations and electronic noise. Using this information, one could then design a time-domain filter to extract the "real" acceleration signal. If this assumption is wrong, would you so enlighten me  .
Also, I would like to know what the name of such a time-domain filter would be. I'd like to do some research on it...
Thanks!
-Matt
|
Matt -
Do you have access to MATLAB? There is a nice digital filter design tool that you can use to accomplish the goals you are putting forward.
To design a filter, there are generally a few steps that you will want to follow. Basically, you capture some representative sample data, take its FFT, and examine its Bode plot. From this you should be able to surmise what frequencies are useful, and what are noise. You can then pick a "cutoff frequency" above which your filter will reject the signal as noise (for a low-pass filter, which is what you want here). Finally, you pick your filter type and size (number of poles) and you can compute all of the necessary coefficients from the selections you've made. Voila!
So from the above you will see you need three things to design a (low-pass) filter:
1. A characterization of the noise (Which is what the FFT can help you with)
2. A filter architecture
3. A filter size
For #2, there are hundreds of well-known filters out there. All linear filters are either FIR (finite impulse response) or IIR (infinite impulse response). A moving average is an FIR filter, since there is no feedback from prior filter outputs into the next filter output. A filter like "x_filtered = 0.1*x + 0.9*x_filtered" would be IIR, since there is feedback from the last value of "x_filtered" to the next. Generally, FIR filters are easiest to implement and are always stable. IIR filters can achieve better noise rejection performance, but you have to worry about stability and other tradeoffs.
Once you have your filter type, it's time to address #3. Clearly, a moving average of the last 100 readings will reject higher frequency noise than a moving average of the last 3 (since in the 100 "tap" case, a single spike would only be 1/100th of the output, whereas in the 3 tap case, a single spike would be 1/3rd of the output). This applies to all types of linear filters. Unfortunately, with increased smoothing comes increased phase (time) delay. To go back to our moving average example, if the input stepped from 0 to 1 at time T, it would take 50 readings before our 100 tap moving average registered even half of the change.
I hope this helps (and isn't too confusing). For more information, Wikipedia has some great filtering articles. Try:
http://en.wikipedia.org/wiki/Digital_filter
http://en.wikipedia.org/wiki/Low_pass_filter
http://en.wikipedia.org/wiki/Filter_design
For particular types of filters that tend to work well in practice, try:
http://en.wikipedia.org/wiki/Chebyshev_filter
http://en.wikipedia.org/wiki/Butterworth_filter
http://en.wikipedia.org/wiki/Elliptic_filter
Good luck!