I want to measure vibration from rolling element bearings and therefore I'm not interested in absolute acceleration measurement like most of the MEM accelerometers on offer.
Can anybody recommend a digital acceleration sensor that has the ability for dynamic acceleration to be directly read for its resisters? I'm after one on a breakout board if possible.
The Arduino is not good at DSP.
Handling sound or vibrations is not something for the Arduino.
What sample frequency do you want ?
If it is a low frequency (say 1000 samples / second), you could do a FFT with it.
Using the analog ADC of the Arduino itself is faster than an external chip.
You could glue a (piezo) microphone to the bearings and try to read that with the Arduino.
But in the end, it will not be accurate. You need specific sampling hardware for this.
The audio processor in a PC is not for lab measurements, but it can be used for this. Or an USB audio stick connected to a PC. With Audacity, you can do a FFT.
Yeah, I only need to sample up too 500 Hz Fmax and do an FFT on that.
Thing using the analog sensors is that you can't accurately remove the DC offset. I'm not too worried about the absolute accuracy of of the measurements - vibration trending is more concerned with changes in value.
I'm using the DUE which has a bit more capability than the other 8-bit boards.
The Arduino DUE with 500 sampler per second, that should work.
The very common analog ADXL335 can go up to 550Hz.
The digital ADXL362 can go up to 400Hz.
Newer (and less known) sensors can go higher. But you might have to write a library for it.
The FXOS8700CQ is up to 800Hz.
The H3LIS331DL goes up to 1000Hz.
That sensor would work however; it has an analog out put which would require an external ADC because the the output is +/- excitation voltage and the ADC in the Arduino can only take voltages between 0 - 3.3V or 0 - 5V on the other boards. I haven't come across any bread board compatible ADC's i.e. DIP mount ones that are worth using. I have found one DIP mounted 24-bit ADC for the strain gauging bit of my project however; it only has two channels with the spare needed for a pressure gauge. Also cost about $60... more than the Arduino board itself!
Hi Erdin,
I agree with your comment regarding the FFT however; lower frequency vibration is best in velocity which mean I need to integrate the acceleration readings therefore need to remove the DC offset before before I pass it through the FFT. One possible way of removing it is to use a high pass filter but I wouldn't know where to start coding that algorithm in C. Did a bit of Google on that subject and all I can see is some hack versions one one which really isn't a high pass filter... just removes the DC signal by taking a static sample and subtracts that from the current reading. Not very accurate because it assumes that the system wasn't vibrating when it goes through the setup loop and MEM's accelerometers produce a relatively noisy signal without any vibrations.
The LIS331HH looks OK because you can setup a HP filter in the config registers. Pain in the ass that it isn't temperature compensated through. As you probably know bearings operate at all different temperatures depending on their condition, load, speed etc etc. Normally with temperature compensated ones you can access the temperature sensor as well so you can just mount one of these to the bearing and access the vibration and temperature in one stop shop solution for monitoring these things.
The thing is about Sparkfun sensor breakout board is that you alway put the pull up resistors on the I2C line which means it cant be used on the DUE because it requires 1.5K Ohms pull-ups while most of the Arduino boards require anything between 4.7K to 10K pull-ups. Had MPU-9150 from Sparkfun and tried to remove the resistors and bridge the tabs with solder and ended up wrecking an expensive sensor.
I suppose it depends on the application but in this one defiantly 8-bit no good. Strain and pressure data needs to be accurate while the vibration and temperature not so much.
You might have to add a temperature sensor with the LIS331HH.
I think I2C is perhaps too slow (both the software and the hardware), that chip can do SPI as well.
I don't understand the problem with 1k5 pullup. I use a single 4k7 pullup near the Master and remove the pullup resistors from the sensor boards. I use a big blob of solder that heats up both ends of the smd resistor to remove it. Never had a problem with it.
adamatcooranbong:
I haven't come across any bread board compatible ADC's i.e. DIP mount ones that are worth using. I have found one DIP mounted 24-bit ADC for the strain gauging bit of my project however; it only has two channels with the spare needed for a pressure gauge. Also cost about $60... more than the Arduino board itself!
Yeah, that one looks OK but doesn't really offer any real advantage over using on board ADC other than the option of being able to program input pins to take differential measurements which does realy help because the analog vibration sensor has positive output.
I saw a tutorial where the guy plugged a piezo (90V!! Sparkfun one) straight into the A pins o.0
A comment from the tutorial suggested rectifying the output and clamping it with a zener, which was what I had been thinking (clamping the voltage at any rate). I have a couple of the small sparkfun ones (90V!), and want to measure vibration, so I am in the process of working out how to do it safely...
There's an 8 bit IIC D/A I like the look of, not sure 12bits is necessary over 8bits for my purposes.