my field of engineering is condition monitoring. I use vibration analysis to determine the current state of health of a machine and then recommend any course of action required to ensure it does not fail during a production period. See www.efftek-uk.com for further description.

The most important tool I have is ESP which stands for envelope signal processing in other words, demodulation. The instrument I use to collect my vibration readings does this in the analog realm. The steps involved in this are as follows. The signal from the accelerometer is first passed through a high pass filter, then it is rectified and finally passed through a low pass filter before acquisition. The values of the LP and HP filters are selected according to the speed of the machine being tested for instance 2.5 & 5 kHz filters.

Another point which may not be relevant is that in VA, we use spectras with multiples of 400 lines, the top 112, 224 etc. are discarded for anti-aliasing. For example, we would use a 2.5-5kHz ESP filter and take 1024 samples at 1280 samples per second giving us a 512 line spectra of 0-640Hz and a final 400 line spectra of 0-500Hz

I have developed an ADC board for the Raspberry Pi (available of eBay at £19.50 - shameless advertising!!!) which was originally for use with displacement sensors so I could plot shaft centreline positions during operation of a gearbox to detect bending forces. I have decided to experiment using the board with MEMS accelerometers and would like to try and emulate what my very expensive data collector does in the analog realm with DSP. This is where I would like some advice.

I have already written code to sample, window and do fft's so I can look at the unfiltered acceleration and velocity spectras. Now I would like to implement filtering especially demod filtering.

I did read a thesis paper a while ago from a Swedish student who did demodulation using matlab and his results were encouraging but a) I don't have matlab and b) I can't find his paper.

I don't want anyone to write my code for me (but I may be back if my code doesn't seem to be living up to expectations) I simply want some advice on the process involved in DSP demodulation - is it the same as I mentioned above - HP filter, turn all values positive (rectification) then LP filter followed by FFT? and if so, what filters do I use - as a newbie to DSP, I don't know the difference between IIR and FIR etc. - what should I use?

I am coding on the Pi in C++ and have installed the Aquila-DSP library though as of yet, I haven't made use of it, I wrote the window function myself as the only window recommended for VA is Hanning and that was quite straightforward.

Thanks for reading, any advice will be gratefully accepted and do go to eBay if you are interested in an 8 channel 12 bit ADC with trimmers so the input voltage can be calibrated for each channel up to 0-20V for the Raspberry Pi.

Best wishes, Steve. s.ferry @ efftek-uk.com

  • $\begingroup$ There are a number of good math software like GNU Octave, Scilab and R Project - all free and open source. Do you use either of these or some other? My question isn't related to the math itself, but will help to give more helpful answer. Or maybe you're going to use C++ only? $\endgroup$ – werediver Jun 26 '14 at 13:15
  • $\begingroup$ Hi, I need to use C++ only. The programming is not my problem, its the steps to get the result I am interested in. Thanks. $\endgroup$ – Steve Ferry Jun 27 '14 at 17:07
  • $\begingroup$ You're interested in amlitude demodulation, is this right? If so, your scheme (rectify & LP) seems conceptually consistent. Try to outline the main questions in your post. $\endgroup$ – werediver Jun 30 '14 at 7:29

Your Answer

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

Browse other questions tagged or ask your own question.