Arduino piezo vibration measurement circuit
Using almost any article posted on the Internet, about sensing a piezo sensor digitally will provide the frequency of the vibration. This has the huge advantage that a digital pin can be sensed about 1000 times faster than the ADC.

A problem with using the ADC to sample the actual signal is the Arduino ADC is so slow that the the samples my suffer aliasing (the signal is sampled below the Nyquist-Shannon criteria), and give very unreliable information.

The signal voltage from the piezo sensor will oscillate about zero. That will be detected by a digital sample, recovering the frequency. 

Protect the MCU's pins using a resistor and diode, connecting the signal to the pin via the resistor to the MCU pin, and to ground via the diode. I'd probably use a Schottky diode to stop the signal going much below ground.

Further, protect the input from the potentially very high voltages with a zener diode (3.3V for a 3.3V MCU, 5V/5.1V for a 5V MCU) also tied to ground, so that the signal can't rise above the Arduino pin's operating range. 

While it might be okay to rely on the ESD protection diodes, relying on the ESD diode for protection is going beyond the spec of the device. Further, I know a guy who damaged several arduino pins, using a piezo sensor. It isn't worth saving a few pence.







simulate this circuit &ndash; Schematic created using CircuitLab

If you really want to sample the amplitude, then put a low-pass filter in too. I would probably stick with the digital input (in that circuit) for frequency, and use a second ADC pin to try to measure amplitude.

It isn't clear exactly what motors you wish to measure. For something like a washing machine, at say 1200rpm spin, that is 20 Hz. So a low pass filter at 100Hz+, and sampling at 1KHz+ should be good enough. That should be within the capabilities of the Arduino.