How Do You Use an Accelerometer for Vibration Analysis and Predictive Maintenance?
Last updated 19 August 2026 · 13 min read
Direct Answer
Vibration-based predictive maintenance uses an accelerometer to capture raw time-domain acceleration from a rotating machine, then converts that waveform into a frequency spectrum with an FFT (Fast Fourier Transform), because most mechanical faults produce energy at specific, predictable frequencies rather than a general increase in overall vibration. Imbalance shows up near the shaft's running speed (1x), misalignment adds strong energy at twice running speed (2x) and above, and bearing wear produces energy at frequencies determined by the bearing's internal geometry, not just shaft speed. Capturing a spectrum that's actually useful requires a sample rate well above the Nyquist minimum for the highest fault frequency of interest, plus an anti-aliasing filter ahead of the ADC. This is a fundamentally different task from the tilt and orientation sensing covered by a typical IMU: orientation sensing wants a slow, low-noise estimate of gravity's direction, while vibration analysis wants a wideband, high-sample-rate capture of dynamic acceleration with gravity treated as an unwanted DC offset to remove.
Detailed Explanation
An accelerometer measures the same physical quantity whether it's sitting in a phone working out which way is up or bolted to a motor housing watching for a failing bearing: acceleration. What differs entirely is what you do with that measurement. Orientation and motion sensing, covered in what is an accelerometer and IMU and BNO055 interfacing and calibration, treats the accelerometer's steady 1g gravity reading as the signal of interest and filters out noise and short-term motion to get a stable tilt estimate. Vibration analysis for predictive maintenance does close to the opposite: it treats the steady gravity component as an unwanted DC offset to remove, and instead captures the fast, oscillating part of the signal, the part an orientation filter is specifically designed to smooth away, because that's where mechanical fault information lives.
This page covers the second problem: turning raw vibration into a frequency spectrum, choosing a sample rate that actually captures the frequencies that matter, and recognising the broad categories of what a fault signature looks like once you've got a spectrum in front of you.
Why Orientation Sensing and Vibration Analysis Pull in Opposite Directions
The two use cases push accelerometer selection and firmware design in different directions:
- Sample rate. Orientation sensing typically runs at tens to a few hundred hertz, enough to track how fast a device is physically capable of reorienting. Vibration analysis for bearing and gear-mesh fault detection needs a sample rate high enough to resolve fault energy that can extend into the kilohertz range, well beyond typical IMU output data rates.
- Filtering intent. Orientation sensing applies aggressive low-pass filtering (or a complementary/Kalman fusion filter) specifically to reject short-term dynamic acceleration as noise. Vibration analysis applies a high-pass or DC-block stage to reject the gravity offset instead, keeping the dynamic content the orientation filter would have discarded.
- What "accuracy" means. For orientation sensing, accuracy means the reported tilt angle matches true tilt. For vibration analysis, accuracy means the frequency spectrum faithfully represents the mechanical energy present at each frequency, which depends on the accelerometer's noise density and bandwidth at frequencies far above what an orientation-focused datasheet usually characterises well.
- Typical sensor choice. A general-purpose 6-DOF or 9-DOF IMU is usually adequate for orientation sensing. Condition monitoring more often uses a single- or dual-axis accelerometer purpose-built for the task, with a datasheet that specifies noise density and bandwidth out into the kilohertz range where fault energy actually appears (Analog Devices' ADXL1001/ADXL1002 datasheet).
None of this means an IMU can never contribute a rough vibration trend indicator. It means that genuine fault diagnosis depends on a sensor and signal chain characterised for the frequency range the faults live in, not on whichever accelerometer happens to already be on the board for orientation sensing.
From Raw Acceleration to a Frequency Spectrum
A raw vibration signal in the time domain, acceleration plotted against time, is difficult to interpret directly. Several fault types can each add roughly similar-looking jitter to a waveform, and a human (or a simple threshold) struggles to tell them apart from the time-domain trace alone. The FFT (Fast Fourier Transform) solves this by re-expressing the same signal as a set of frequency components: instead of "acceleration over time," you get "how much vibration energy is present at each frequency." Because different mechanical faults concentrate their energy at different, largely predictable frequencies (covered below), a frequency-domain view turns a tangle of overlapping vibration sources into a set of separable peaks that can be individually tracked over time.
The practical pipeline for this on an embedded system looks like:
- Capture a block of raw acceleration samples at a fixed sample rate, buffered in memory (commonly a few hundred to a few thousand samples per FFT block, depending on the frequency resolution needed and available RAM).
- Remove the DC offset (the gravity component and any static mounting offset) so it doesn't dominate the spectrum's lowest bin.
- Apply a window function (Hann and Hamming are common choices) to the buffered block before the FFT, to reduce spectral leakage that would otherwise smear energy from each true frequency component across adjacent bins.
- Run the FFT to produce a magnitude spectrum, one value per frequency bin, spaced at sample_rate / block_size Hz apart.
- Track specific bins or bands over time, comparing current amplitude at known fault frequencies against a baseline captured when the machine was known to be healthy, since absolute vibration levels vary enough between individual machines that trend-against-baseline is generally more actionable than a single absolute reading.
On a resource-constrained MCU, this is usually implemented with a fixed-point or single-precision floating-point FFT from a DSP library (for example, ARM's CMSIS-DSP), rather than a general-purpose signal-processing library sized for a desktop. See FIR vs IIR digital filters for the anti-aliasing and pre-processing filter choices that typically sit ahead of this pipeline, and how to design active filters for the analog anti-aliasing stage before the ADC.
Sample Rate and Nyquist Considerations for Vibration Capture
The Nyquist theorem sets the hard floor: the sample rate must be at least twice the highest frequency component you need to capture, or that content aliases down into a lower, false frequency in the resulting spectrum (see what is an ADC for the underlying theorem and worked aliasing example). In vibration analysis, that floor is rarely a comfortable working number, for two reasons.
First, sampling exactly at the Nyquist minimum leaves no room for a realistic anti-aliasing filter. A brick-wall analog filter with zero transition band doesn't exist; every real anti-aliasing filter needs some frequency span between "pass unchanged" and "fully attenuated." Practical designs commonly sample several times higher than the strict Nyquist minimum for the highest fault frequency of interest, specifically to give that filter a workable transition band. This is a general good-practice margin rather than a fixed regulatory figure, and the right factor for a given design depends on the anti-aliasing filter's achievable roll-off.
Second, "the highest frequency component you need to capture" is higher than it first appears for bearing and gear-mesh faults. Where a simple imbalance or misalignment signature sits at low multiples of shaft running speed (commonly well under a few hundred hertz for typical industrial equipment), bearing defect frequencies and gear-mesh frequencies can extend into the low kilohertz range and beyond, particularly on higher-speed machinery. This is why dedicated condition-monitoring accelerometers, such as the ADXL1001/ADXL1002 family, are characterised with a usable frequency response out to roughly 11 kHz: that headroom is what lets the same sensor resolve both low-frequency imbalance and higher-frequency bearing defect energy without a second sensor.
A useful design sequence is:
- Identify the highest fault frequency you actually need to resolve for your machine and fault types (this requires knowing approximate shaft speed and, for bearing faults, at least approximate bearing geometry; see below).
- Choose a sample rate with comfortable margin above twice that frequency, leaving room for a realistic anti-aliasing filter.
- Confirm the accelerometer's own datasheet bandwidth and noise density are adequate at that frequency, not just at low frequency, since many accelerometers optimised for tilt/orientation use are not characterised or even usable that far up the spectrum.
- Size the anti-aliasing filter's cutoff and roll-off against the chosen sample rate, following the same anti-aliasing principles as any other ADC front end (see sensor signal conditioning basics).
Common Fault-Frequency Signatures
The reason frequency-domain analysis is so much more useful than a raw overall vibration level is that different fault mechanisms produce energy at different, largely predictable locations in the spectrum relative to the machine's running speed. The following are the broad conceptual categories most vibration-analysis programs start from; the exact frequencies for a specific machine depend on its running speed and mechanical geometry, so treat these as starting points for interpretation rather than universal thresholds.
Imbalance
A rotating mass with its centre of mass offset from its axis of rotation produces a centrifugal force that repeats once per revolution. This shows up in the spectrum as a dominant peak at 1x running speed (the shaft's rotational frequency), typically with comparatively little energy at higher harmonics relative to that fundamental. Imbalance is one of the more straightforward signatures to recognise for this reason: a single strong peak at 1x running speed, without much else, is a classic imbalance pattern.
Misalignment
Two shafts joined by a coupling that aren't properly aligned, angularly, parallel offset, or both, produce a cyclic loading pattern that repeats more than once per revolution. This typically shows up as strong energy at 2x running speed (and often further harmonics at 3x and beyond), in addition to some energy at 1x. The relative balance between the 1x and 2x (and higher) components, rather than either peak in isolation, is generally what distinguishes a misalignment signature from a pure imbalance signature.
Bearing Wear
Bearing faults behave differently from imbalance and misalignment because their characteristic frequencies aren't simple multiples of shaft running speed; they depend on the bearing's internal geometry (the number of rolling elements, ball or roller diameter, pitch diameter, and contact angle). A defect on the outer race, inner race, a rolling element, or the cage each produces vibration at its own characteristic frequency as elements repeatedly strike the flaw, generally referred to as BPFO (ball pass frequency, outer race), BPFI (ball pass frequency, inner race), BSF (ball spin frequency), and FTF (fundamental train frequency, the cage's rotational rate). These frequencies are non-integer multiples of shaft speed and are specific to each bearing's geometry, which is why bearing analysis in practice usually starts from the bearing manufacturer's published geometry (or the bearing's part number cross-referenced against a published frequency table) rather than a generic rule of thumb. Bearing wear also tends to progress through recognisable stages, from high-frequency, low-amplitude energy in early-stage defects, through to broadband energy and eventually a rise in the 1x-adjacent low-frequency spectrum once damage becomes severe enough to introduce mechanical looseness, which is one reason condition-monitoring programs trend spectra over time rather than relying on a single snapshot. See the Brüel & Kjær Vibro application note on detecting faulty rolling-element bearings for a fuller treatment of how these frequencies are derived and interpreted.
Because these signatures overlap and interact (a badly worn bearing can eventually introduce enough looseness to also elevate 1x and 2x energy, for example), production condition-monitoring systems generally combine spectral analysis with broadband severity trending. ISO 20816-1 defines general guidelines for evaluating overall machine vibration severity, commonly expressed as RMS vibration velocity over a defined frequency band, as a complementary broadband health indicator alongside the detailed fault-frequency spectrum. Overall severity trending answers "is this machine's vibration getting worse," while spectral analysis answers "what specifically is causing it."
Choosing and Mounting an Accelerometer for Condition Monitoring
A few practical decisions determine whether a vibration-monitoring design actually resolves the fault frequencies it's meant to:
- Bandwidth and noise density at the frequencies that matter, not just at low frequency. Check the accelerometer's datasheet noise density specification across the full frequency range you plan to analyse, since a sensor with excellent low-frequency noise performance can still be unusable for higher-frequency bearing fault detection if its noise density rises or its response rolls off before the frequencies of interest.
- Mounting stiffness and location. A loosely mounted sensor, or one mounted on a thin, resonant bracket, introduces its own mechanical resonances into the measured spectrum, which can be mistaken for genuine machine fault energy. Rigid, direct mounting (stud-mounted or adhesive-mounted close to the bearing housing, following the accelerometer or mounting-pad manufacturer's guidance) preserves the fidelity of the measured spectrum far better than a mounting bracket with its own low-frequency resonance sitting in the band of interest.
- Full-scale range versus resolution. A wide full-scale range (needed to avoid clipping on high-amplitude events, such as sudden severe faults or shock loading) trades off against amplitude resolution for the much smaller, early-stage fault signatures a predictive-maintenance program most wants to catch early. Selecting range against the expected normal vibration level of the specific machine, rather than defaulting to the widest available range, generally gives better sensitivity to early-stage faults.
- Single-axis versus triaxial. A single well-placed axis, oriented in the direction most sensitive to the fault types expected (commonly radial to the shaft for bearing and imbalance detection), is often sufficient and simpler to implement than a full triaxial system; triaxial sensing adds value when fault direction itself is diagnostically useful, or when sensor placement can't be guaranteed to align with the most sensitive axis.
Sensor and firmware integration for condition-monitoring products, choosing between raw-vibration streaming versus onboard FFT processing, sizing sample buffers and DSP compute budget against the target fault frequencies, and validating spectral fidelity against real machine baselines, is the kind of signal-chain and embedded-firmware work Zeus Design's engineering team handles as part of full product development.
Common Mistakes
- Reusing an orientation-focused IMU's default output data rate for vibration analysis without checking whether that rate, and the sensor's bandwidth at that rate, actually covers the fault frequencies of interest. An IMU configured for a typical motion-sensing output rate can silently alias or simply fail to capture bearing-fault-range energy.
- Sampling right at the Nyquist minimum for the highest frequency of interest, leaving no achievable margin for a real anti-aliasing filter's transition band, and then blaming "noisy" spectral results on the sensor rather than on aliasing.
- Skipping the anti-aliasing filter entirely because the signal "looks periodic enough already" on a scope. Any energy above the Nyquist frequency, from higher-order mechanical harmonics, electrical noise, or unrelated machine vibration, aliases into the measurement band and corrupts the spectrum in a way firmware cannot undo after the fact.
- Comparing absolute vibration amplitude against a generic published threshold instead of trending against that specific machine's own healthy baseline. Mechanical tolerances, mounting, and installation vary enough between individual machines that a baseline-relative trend is usually far more actionable than an absolute number borrowed from an unrelated machine or a generic table.
- Treating a single spectral snapshot as a diagnosis. Fault signatures, especially early-stage bearing wear, develop and change over time; a condition-monitoring program that only captures a spectrum occasionally, or only compares against a fixed threshold rather than a trend, misses the gradual progression that is often the most useful early-warning signal.
Frequently Asked Questions
- Is this the same thing as the accelerometer and IMU basics page already covers?
- No, they answer different questions even though both start with an accelerometer. The accelerometer and IMU basics page, and the BNO055 interfacing page, cover orientation and motion sensing: using the accelerometer's steady-state gravity reading (plus a gyroscope) to work out which way a device is tilted or how it's moving, typically sampled at tens to a few hundred hertz and heavily filtered to smooth out noise. Vibration analysis for condition monitoring throws the steady-state gravity reading away as an unwanted offset and instead cares about the dynamic, oscillating part of the signal, sampled at a much higher rate and analysed in the frequency domain to find the specific frequencies where a mechanical fault shows up. The sensing element can be similar silicon; the sampling strategy, signal chain, and the question being asked are not.
- What sample rate do I need to capture bearing fault frequencies?
- There's no single number, because it depends on the highest fault frequency you need to resolve, which itself depends on shaft speed and bearing geometry. As a starting point, decide the maximum frequency of interest for your machine and fault types, then sample at least several times that frequency rather than exactly at the Nyquist minimum, so the anti-aliasing filter has a realistic transition band to work with instead of an unachievably sharp brick-wall cutoff. Dedicated condition-monitoring accelerometers such as Analog Devices' ADXL1001/ADXL1002 target a usable frequency response out to roughly 11 kHz specifically because bearing and gear-mesh fault energy commonly extends well above the frequencies a general-purpose motion-sensing IMU is designed to resolve well; check your specific accelerometer's datasheet bandwidth against your target fault frequencies before committing to a sample rate.
- Can I use a general-purpose 6-DOF IMU like the MPU-6050 for vibration monitoring, or do I need a dedicated vibration sensor?
- A general-purpose motion IMU can sometimes give a rough, qualitative sense that vibration has increased, but it's usually a poor fit for real fault diagnosis. Parts optimised for orientation sensing typically prioritise low noise at low frequency and modest output data rates, and their datasheets often don't characterise noise density or frequency response usefully out to the kilohertz range where bearing and gear-mesh faults show up. A part built for condition monitoring, like the ADXL1001/ADXL1002 family, instead publishes noise density and bandwidth specifically for that higher-frequency range. If the goal is genuine fault diagnosis rather than a coarse go/no-go trigger, select an accelerometer whose datasheet explicitly characterises performance at the fault frequencies you need to resolve, rather than repurposing whatever IMU is already on the board for orientation sensing.
References
- Analog Devices — ADXL1001/ADXL1002 Low Noise, High Frequency MEMS Accelerometers Datasheet
- Analog Devices — How to Build a MEMS-Based Solution for Vibration Detection in Condition Monitoring
- ISO 20816-1:2016 — Mechanical Vibration — Measurement and Evaluation of Machine Vibration — Part 1: General Guidelines
- Brüel & Kjær Vibro — Detecting Faulty Rolling Element Bearings (Application Note)
Related Questions
What Is an Accelerometer and IMU?
Covers IMU and accelerometer basics: MEMS principles, MPU-6050 and LSM6DSO interfacing, gyroscope drift, and complementary filter sensor fusion.
How Do You Interface and Calibrate a BNO055 Absolute Orientation Sensor?
How to interface a Bosch BNO055 absolute orientation sensor: fusion modes, quaternion vs Euler output, calibration status, and offset save/restore.
What Is an ADC (Analog-to-Digital Converter) and How Does It Work?
An ADC converts analog voltages to digital numbers. Covers resolution, LSB, sampling rate, Nyquist, SAR vs sigma-delta architectures, and anti-aliasing filters.
FIR vs IIR Digital Filters: Which Should You Use in an Embedded Design?
FIR filters are always stable with linear phase; IIR reaches a sharp cutoff with fewer taps. How to choose the right one for an embedded MCU design.
How Do You Design an Active Filter with an Op-Amp?
Active filters use op-amps for frequency roll-off without inductors. Covers Sallen-Key, MFB topologies, Butterworth response, and ADC anti-aliasing.
Sensor Signal Conditioning Basics
Covers signal conditioning for sensors: op-amp gain, offset, 4-20mA interface, anti-aliasing filter design, ADC input protection, and two-point calibration.
Related Forum Discussions
ICM-42688-P INT1 never fires after FIFO setup — FIFO count stuck at 0x0000 but WHO_AM_I reads back correctly
Working on a motion data logger: ICM-42688-P on an STM32F4 via SPI4 at 4 MHz. SPI seems fine: WHO_AM_I at register 0x75 reliably returns 0x4
STM32 GPIO interrupt configured but ISR never fires — what am I missing?
Trying to use a button on PA0 to trigger an interrupt on an STM32F411 Nucleo board. Using HAL, generated the init code with CubeMX. The GPIO
Can't decide between FreeRTOS and bare-metal for a simple sensor node — what's the tipping point?
Working on a temperature and humidity monitoring node: STM32F103 target, BME280 over I2C, reports data every 60 seconds over UART to a Raspb