This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Vibration Analysis : In FFT, What is the Input and Output relation for an accelerometer's Data

10240 samplerate-2048samplesQ15_1.xlsx

Hi,

Please help me to get the relation between the input to FFT function and its output. i use arm_rfft_q15(); to perform FFT. 

 

below are the details

To do vibration analysis, i am using an accelerometer(analog output) which is interfaced to "MSP432" micro controller. 

 ARM CMSIS DSP library is used  to perform a 2048 point Real FFT.   The accelerometer's output range is (0 to 1.8 volts) and resolution of MSP432's ADC is 14bit.

I have taken the 2048 readings from accelerometer @ sampling rate 10240 samples/sec@ 3000Hz sine signal. I perform real FFT (Q15) for 2048 samples (which is ADC count itself i am not converting it into acceleration value). In the

output of FFT i calculate the magnitude for 1024 points in the FFT output data.  When i plot the magnitude data i am able to see a peak at the spectral line corresponding to 3000Hz.

# How can i show the output i.e. magnitude data in terms of  'g' units. Please help me to understand the relation between input and output.

My requirement is to convert the the acceleration values in time domain to frequency domain.

Please refer to the spread sheet "10240 samplerate-2048samplesQ15_1.xlsx".


Below is the partial code from my application

/****************************************************************?

#define MAX_COUNT  2048

  typedef int16_t q15_t;

arm_rfft_instance_q15 Rfft_instance;

uint16_t x_axis_count[MAX_COUNT];

q15_t x_axis_fft_opbuff1[MAX_COUNT*2];

status = arm_rfft_init_q15(&Rfft_instance,MAX_COUNT,0,1);

while(1)
{
memset(x_axis_count,0,MAX_COUNT);

ADC_start_sampling(1); // ADC takes 2048 samples from accelerometer

arm_cmplx_mag_q15((q15_t *)x_axis_fft_opbuff1,(q15_t *)x_axis_count,MAX_COUNT/2); // calculation of MAGNITUDE

}

/*********************************************************************************************/

 

  • Hi Sarath,

    The answer to your question depends on several things outside of the FFT itself.

    First, the accelerometer. You mentioned that it's output goes from 0V to 1.8V. The relationship between the output voltage and the amount of acceleration depends on the range of your specific accelerometer. For example, does 1.8V equal 1.2g or 120g? Does 0V equal -1.2g or -120g? Does 0.9V (mid-point) equal rest (gravity) at 1g? These specifications will allow you to relate the output voltage to a specific acceleration (V/g), and you should be able to find them in the datasheet.

    Next, the MSP432's ADC. Based on the specifications of the accelerometer, you'll need to adjust the ADC parameters accordingly. If you set up the ADC to measure 0V to 3.3V, this will reduce the resolution of the ADC (compared to 0V to 1.8V), which will affect the results fed to the FFT.

    Regarding the FFT, the magnitudes across the frequency domain can be correlated back to the amplitudes of the accelerometer signals, assuming everything discussed above has been setup properly. It's easy to describe, but much more work to actually implement.

    I'd encourage you to take a look at the following resources for more information.

    Regards,

    James

    MSP Customer Applications

  • James Evans said:
    Regarding the FFT, the magnitudes across the frequency domain can be correlated back to the amplitudes of the accelerometer signals

    Basically it means: you shall understand how FFT works. One way is: feed FFT with known simulated data and see what comes out :)

**Attention** This is a public forum