The objective is to read the angle of displacement of the device enclosure in a noisy vibration environment. I need just angular displacement but somehow be able to eliminate the interference of the dynamic noise. Presently I measure the static value at start (base) and then subtract new readings a device is rotated in the field to derive the angle. That works quite well. Of course under vibration, this becomes impossible. Can this be achieved through a DSP process?
Thanks for your feedback.
Are you interested in only one angle (e.g., the angle to up)? How much delay can you tolerate?
The obvious answer to you question would be to derive the noisy angle using your present approach and to low-pass filter it.
Yes, only the angle relative to the top of the circle.
At present there is a basic LPF using 39nF caps on the outputs of X-Y-Z for a cutoff around 250Hz. Once I have the signals sampled would a DSP filter suffice in the controller? It's a Cortex-M4 and can run DSP instructions. I think the obvious thing is to measure the frequency and energy of the vibration. Assuming I do this and get a resonant peak of let's say 60Hz, how far below should the DSP filter be to effectively cut it off?
If the vibration has a strong resonant frequency then use a notch filter. If it is white (i.e., noisy) then you have to consider the frequency content of the signal of interest (or at least the speed you need to track it) and filter out above the spectrum of interest.
The M4 is good enough for a basic FIR filter, but isn't a real DSP and I don't know if you will be able to implement a sharp enough filter. It also depends on what your sampling rate is, the length of your word, whether you need linear phase in the pass-band, etc.
Thanks, all good information. The M4 has its limitations but that's what I have in the tool kit right now. I find the CMSIS libraries are a bit funky too. To start the right way I will use a slamstick to collect the vibration data. Running an FFT or PSD should reveal what is needed. If I can post that here in a few days and get some further feedback I would really appreciate that.