I would like to know if so, how raw 3-axis accelerometer data could be analyzed and manipulated real-time to register periods of vibration. The device being used has a max sample rate of 62Hz (I understand this is quite low), and aims to recognize when it is in a state of vibration as opposed to freely moving when mounted on a users person.

I have gathered some test data and have plotted resultant acceleration magnitude, although it is looking difficult to recognize contrast between vibration and free movement. I have also looked into plotting the change in angle between each two contiguous readings, thinking along the lines that the angle should be greater than 90 degrees (in the case that the vibration isn't resonating with my hardware's frequency) due to uniform oscillation - would I be along the right lines with this?

Just to clarify, I do not need to measure the vibrations, just acknowledge them.


  • $\begingroup$ How do you define "vibration" as opposed to "free movement"? Once you clear this up, alswers will flow… $\endgroup$ – Nicolas Oct 20 '15 at 11:41
  • $\begingroup$ Unfortunately there is no universal notion of "vibration". You're going to have to look into what kinds of vibration - spectrum (its frequency content), amplitudes (how intense it is) as well as possibly correlations with other signals - you are trying to identify and tell apart from "free movement" and what causes it in your particular application. You're going to have to do the same thing for "free movement" too. Only when you have studied the two experimentally thoroughly can you begin to think about algorithms to tell the two apart. $\endgroup$ – Selene Routley Oct 20 '15 at 11:42
  • $\begingroup$ Vibration will be a result of heavy machinery or power tools being held in the hand of the user, meaning the amplitudes/frequencies will differ. I understand the amplitude will be dampened through arm tissue before being registered by the accelerometer. And my apologies, by 'free movement' I was trying to define periods whereby the user would be stood still, walking, or other 'normal' human movements (if you're with me), where tools may be carried but not in use. $\endgroup$ – Harry Oct 20 '15 at 11:47
  • 1
    $\begingroup$ 31 Hz (remember the sampling theorem) is a rather low frequency to be called a vibration. What you probably want is a vibration sensor. The sensor contains accelerometers and internally samples them at a very high rate (sometimes tens of thousands of samples per second). You don't want those high rate raw measurements. What you want is the frequency response sampled at a much lower rate, and that's exactly what those vibration sensors provide as output. $\endgroup$ – David Hammen Oct 20 '15 at 12:06

In principle it is possible to do what you are asking for by taking the Fourier transform of the signal coming from the accelerometer. During normal motion, the energy will be distributed among different bins of the FFT with most energy in the lowest (DC) frequency bins. However, if you have a "vibration" component present, you will see a significant amount of energy in the higher frequency bins.

Note that it is possible to see frequencies above 31 Hz (Nyquist) if the response of the sensor itself is sufficiently fast, and there is no filter in front of the sampling / digitization. Such higher frequencies will appear "aliased" to a lower frequency bin - this makes it hard to determine their actual frequency, but that's not what you were asking for.

  • $\begingroup$ Thanks for the answer Floris, that's definitely a solution that hadn't even crossed my mind, I'll have to do a bit of looking into it though and see if it is possible for me to extract this data. I'd upvote but sadly I've not got the rep on here! $\endgroup$ – Harry Oct 20 '15 at 13:45

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.