Which accelerometers can detect vibration?
Accelerometers measure motion, vibration, and mechanical shock. Inside of an accelerometer is an internal mass that is static until it experiences a change in velocity. This acceleration causes the mass to press to move, and it will press upon either a piezoelectric material or a capacitive sensor. In this way, a mechanical force is transmitted to an electrical signal, and the acceleration can be deduced. Most cell phones use a capacitive sensor.
I used:
ADXL345 3-axis accelerometer (+/- 2,4,6,8, or 16g)
- digital I2C and SPI breakout (can use 5V or 3.3V)
- This board/chip uses I2C 7-bit address 0x53
- MEMS
- lower g good for slower movements
-
How it Works (from: https://learn.adafruit.com/adxl345-digital-accelerometer)
MEMS - Micro Electro-Mechanical Systems
The sensor consists of a micro-machined structure on a silicon wafer. The structure is suspended by polysilicon springs which allow it to deflect smoothly in any direction when subject to acceleration in the X, Y and/or Z axis.
Deflection causes a change in capacitance between fixed plates and plates attached to the suspended structure. This change in capacitance on each axis is converted to an output voltage proportional to the acceleration on that axis.
I found that 100Hz was sufficient to capture a phone vibration (shown above).
You can set the range of the frequency response from 10 Hz to 3.2kHz, but "rates above 100Hz will exhibit increased noise". I found that 100Hz was the minimum to detect a phone vibration, with phone laying on my desk, and accelerometer in a breadboard which was also sitting on my desk, separated from each other by a few inches. I did not observe egregious noise (see gif above).
I found this library to be quite useful: https://learn.adafruit.com/adxl345-digital-accelerometer/library-reference .

