Ive made a project for measuring G rms from accelerometers. i sample 512 samples, get the spectrum and calculate G rms overall value as described in this site:
this seem to be working fine. i test by using a function generator and feeding various voltage waveforms into the daq, and i get the same value when i calculate using spectrum as described above, as if i use labviews rms function and use it on time domain samples. So i assume this is working. Attached is a reduced version of this program, i hope this is also working (that i havent done mistakes when reducing the program).
Now i need to get velocity (mm/s) instead of acceleration. Ive read a couple of places that i can integrate in frequency domain by dividing each spectral line by omega. actually several places ive found that dividing by omega will double integrate to displacement (and a couple of places say it will just integrate). which is true? if dividing by omega is double-integrate is dividing by sqrt(omega) single integrate?
Please comment on my attached VI where i have tried to implement this to achieve overall RMS mm/s values.
i do not have access to SVT btw.
Also, if anyone is familiare with iso ISO 10816 and know if this is the reccomended way to integrate according to this standard it be glad to hear.
Solved! Go to Solution.
Sinusoidal displacement at angular frequency omega can be expressed as x = X*sin(omega*t) where t is time and X is the displacement amplitude.
Differentiating to get velocity gives v = omega*X*cos(omega*t), so omega*x with a 90 degree phase shift. This can be also expressed as v = j*omega*sin(omega*t) = j*omega*x where j^2 = -1.
Differentiating again to get acceleration gives a = -omega^2*X*sin(omega*t), so omega^2*x with a 180 degree phase shift or a = -omega^2*x. Expressing this in terms of velocity a = omega*v with a further 90 degree phase shift or a = j*omega*v.
To get velocity from acceleration, divide by (j*omega). However, if you are not concerned about phase (such as with an autopower spectrum), just ignore the j and divide by omega instead.
Thanks, this answers my question.
a follow up question; will the way im handling window correction factor and the way im summing into an overall rms value be affect by having done an integration?
please see how i did this in the code. seemed to work fine in the acceleration version (G).
Nevermind, Ive tested by feeding sinewave into the program and my handling window correction factor and the way im summing into an overall rms value seem ok. im getting same result when i test with this calculator:
so the mm/s-code is ok when i change sqrt(omega) to just omega.
Apply all the window corrections to the acceleration signal before any further calculation then calculate the overall level as an energy sum (the square root of the sum of the squared values).
I think this is mostly what you are already doing, but you have the energy correction in the wrong place.
You can apply the corrections directly to the 2D array of magnitudes before starting the overall level calculation.
Did you convert your g values to SI units first?
For the velocity-version i started with m/s^2 when i created the channel,
-then multiplied by 1000 to get mm/s^2.
-then i used the PS/PSD.vi to get power spectrum.
-spectrum unit conversion.vi to convert to mm/s^2 amplitude spectrum RMS
-i divide spectrum by 2 (i believe this is necesary for stripping hanning amplitude correction, which i think has been applied by labview VI's. and it seem to give correct results)
-i calculate overall level as an energy sum (the square root of the sum of the squared values).
-i multiply by 1.63 hanning energy correction
For the acceleration version, where i calculated G rms i stayed with G all the way thru.