Vibration sensor

Hi, I want to read the fundamental frequency at which an object is vibrating. I bought a MEMSIC2125 Acceleration for this purpose but I've been reading on the forums and it says the arduino will only be able to identify frequencies below 50Hz because of a filtering cap. Is this true?

My understanding is that to get frequency I just capture acceleration measurements in the time domain and then use a Fast-Fourier-Transform to find the frequencies, and then just pick out the strongest one.

Is this feasible with an Arduino Uno R3? Or do I need something else?

I wonder if a piezo device would work like used here http://www.dtic.upf.edu/~jlozano/interfaces/blow_sensor.html if the output was passed through a Schmitt trigger http://en.wikipedia.org/wiki/Schmitt_trigger then you could do digital reading and that's faster than analogue.

Is this right one: http://www.parallax.com/tabid/768/ProductID/93/Default.aspx
Spec says, output is 100 Hz PWM, no caps.

glitch003: Hi, I want to read the fundamental frequency at which an object is vibrating.

Just out of curiosity, why? When you say fundamental frequency, are you talking about the resonant frequency for the object? Something like the technique where a singer can break a glass by hitting the "right" note? If so, a simple measurement will not provide that, unless you are measuring the frequency at the moment the object shatters...

If you mean something different, I would suggest choosing a different sensor, one that provides an analog, non-filtered, output. That way you can provide your own filtering for the frequency range you want to work with.

Magician: Is this right one: http://www.parallax.com/tabid/768/ProductID/93/Default.aspx Spec says, output is 100 Hz PWM, no caps.

You're right, I just looked at the thread I was reading and I misread it.

wanderson:

glitch003: Hi, I want to read the fundamental frequency at which an object is vibrating.

Just out of curiosity, why? When you say fundamental frequency, are you talking about the resonant frequency for the object? Something like the technique where a singer can break a glass by hitting the "right" note? If so, a simple measurement will not provide that, unless you are measuring the frequency at the moment the object shatters...

If you mean something different, I would suggest choosing a different sensor, one that provides an analog, non-filtered, output. That way you can provide your own filtering for the frequency range you want to work with.

Essentially I want to do vibration analysis on an object. The object vibrates, I pull out the frequencies that it's vibrating at and then keep those as the "baseline" parameters. Then the device just waits for the frequencies to change and sounds an alarm if they have changed too much. Because if the frequencies changes a lot, then something has changed mechanically and the object may be malfunctioning.

Essentially I want to do vibration analysis on an object. The object vibrates, I pull out the frequencies that it's vibrating at and then keep those as the "baseline" parameters. Then the device just waits for the frequencies to change and sounds an alarm if they have changed too much. Because if the frequencies changes a lot, then something has changed mechanically and the object may be malfunctioning.

I wonder if it needs to be that complicated. Suppose you made two sensors with different resonant frequencies; one below the normal frequency of the machine, and one above. Imagine a microswitch with a small mass on the lever. You could calibrate it by adjusting the position of the mass. Then all you would have to do is sound the alarm if either switch closed.

If so, a simple measurement will not provide that, unless you are measuring the frequency at the moment the object shatters...

I don't think so. Almost everything around us vibrate, w/o destruction, as long as resonance is dumped. Putting a finger on a glass edge would prevent it from breaking, doesn't matter how powerful singers ultrasound overtones.

To OP: regarding a sensor, you have to sample PWM back to "normal" units, using PulseIn, . Do you think, you need two channels to pass to FFT? I just thinking, it's really unlikely object will vibrate with different frequencies for two axis, but still probably, possible. If one array combine values, than how you gonna sum them up, as A + B, or sqrt ( A^2 + B^2 ) ?

Magician:

If so, a simple measurement will not provide that, unless you are measuring the frequency at the moment the object shatters...

I don't think so. Almost everything around us vibrate, w/o destruction, as long as resonance is dumped. Putting a finger on a glass edge would prevent it from breaking, doesn't matter how powerful singers ultrasound overtones.

To OP: regarding a sensor, you have to sample PWM back to "normal" units, using PulseIn, . Do you think, you need two channels to pass to FFT? I just thinking, it's really unlikely object will vibrate with different frequencies for two axis, but still probably, possible. If one array combine values, than how you gonna sum them up, as A + B, or sqrt ( A^2 + B^2 ) ?

I figured that I would just do the FFT twice, once for X axis and once for Y axis. Then I would have the X frequencies and the Y frequencies separate. Or is that idiotic and inefficient?

For two axis you will have to sample in two different arrays, consuming more memory. With Uno 2k only memory available, fft-256 (int-16) is maximum size, so for two sample pulls only fft-128 would be possible. It still 'd be able to get 1 Hz resolution. What your expectations?

Magician:

If so, a simple measurement will not provide that, unless you are measuring the frequency at the moment the object shatters...

I don't think so. Almost everything around us vibrate, w/o destruction, as long as resonance is dumped. Putting a finger on a glass edge would prevent it from breaking, doesn't matter how powerful singers ultrasound overtones.

Yes everything vibrates, but the resonant frequency is a different thing altogether. At the resonant frequency the vibrations reinforce themselves, which is what causes the shattering though it doesn't have to. The reason that putting a finger on the glass prevents shattering is because it alters the resonant frequency of the object.

Typically the way to determine the resonant frequency of an object is to induce vibrations at varying frequencies and observing the objects behavior. In this way "measuring" the resonant frequency is as simple as recording which frequency produces resonant behavior... your not measuring the frequency (which you are controlling) you are measuring the magnitude of the physical response. The real trick is that the physical means of recording the objects response can alter its resonant frequency...