---
title: "Reading a motor spectrum without overreading it"
description: "What each fault in the Lab does to a machine, why it lands where it does in the spectrum, and where the simulation is kinder than a real drive."
url: "https://emazaheri.com/notes/reading-a-motor-spectrum"
published: "2026-09-08"
format: "Field note"
topics:
  - "Signal processing"
  - "Fault diagnosis"
  - "Evaluation"
author: "Ehsan Mazaheri Tehrani"
---

# Reading a motor spectrum without overreading it

Field note · Sep 8, 2026 · 5 min read

> What each fault in the Lab does to a machine, why it lands where it does in the spectrum, and where the simulation is kinder than a real drive.

The [motor-fault Lab](https://emazaheri.com/lab/motor-fault) generates stator-current windows and runs a classifier on them in the browser. The generator is a few dozen lines of arithmetic, so the path from a selected condition to a line in the spectrum can be followed the whole way rather than taken on trust.

This note describes that generator. It explains where each signature comes from, and then where the simulation is easier than the machine it stands for.

## What each condition is

Every window starts from the same baseline: a fundamental at $f_0$ whose amplitude tracks load, plus fifth and seventh harmonics from magnetic saturation. Saturation deepens faster than current does, so those two grow with the square of load. A fault adds components on top of that.

The rotor turns once per $p$ electrical cycles, so its frequency is the supply frequency divided by the pole pairs.

$$
f_r = \frac{f_0}{p}
$$

*Rotor frequency. At 50 Hz and four pole pairs, 12.5 Hz.*

| Condition        | Adds                             | Scales with     |
| ---------------- | -------------------------------- | --------------- |
| Healthy          | nothing beyond $5f_0$ and $7f_0$ | load squared    |
| Demagnetization  | $kf_r$ for $k = 1, 2, 3$         | severity        |
| Eccentricity     | $f_0 - f_r$ and $f_0 + f_r$      | severity × load |
| Inter-turn short | $3f_0$, and a droop in $f_0$     | severity        |

### Demagnetization

A permanent magnet loses part of its remanent flux, through heat, through a demagnetising current, or through age. The rotor field is then no longer identical pole to pole, and the machine gives less torque per amp. Because that asymmetry is fixed to the rotor, it sweeps past each stator tooth once per revolution, and writes itself into the current at the rotor's own frequency and its multiples. It is independent of load in the generator, which is the honest choice: a weakened magnet perturbs the rotor field whether or not the stator is working hard, so the signature fades against a growing fundamental instead of growing with it.

Worth knowing that only _local_ demagnetization does this. If every magnet weakens equally the rotor stays symmetric, the fundamental shifts, and no new harmonics appear at all.

### Eccentricity

The rotor is not centred in the stator bore, from a worn bearing, a bent shaft, or an assembly that was never quite square. The air gap is then a function of rotor position, and since the gap sets the magnetic permeance, the flux linking the stator is modulated once per revolution. Modulating a carrier is what puts a matched pair of sidebands either side of it, which is why the signature is $f_0 \pm f_r$ and not a single line. Because it is a modulation _of_ the fundamental, it scales with the fundamental, so it is one of the few faults that gets easier to see under load. The off-centre rotor also pulls unevenly on its own bearing, so the fault tends to deepen itself.

### Inter-turn short

Insulation fails between adjacent turns of one phase and shorts a few of them together. The shorted loop is a closed circuit sitting in a rotating field, so it carries a large circulating current and heats quickly; of the four conditions this is the one that escalates fastest and the one most worth catching early. Electrically, that phase now has fewer effective turns than the other two, so the three-phase set is no longer balanced. The asymmetry introduces a negative-sequence component and lifts the odd harmonics, of which the third is the most visible: in a healthy machine the third and fifth sit near zero, and both climb with the number of shorted turns. Fewer effective turns also means slightly less back-EMF, which is the small droop in the fundamental the generator applies alongside.

## Connect the waveform to the spectrum

**Why amplitude modulation creates sidebands**

The product-to-sum identity gives a compact explanation:

$$
\sin(\omega_0 t)\cos(\omega_r t)
= \frac{1}{2}\left[\sin((\omega_0+\omega_r)t)+\sin((\omega_0-\omega_r)t)\right].
$$

Modulating a carrier at $\omega_0$ with a signal at $\omega_r$ produces nothing at $\omega_r$ itself. It produces a pair straddling the carrier. That is the whole reason eccentricity shows up as two lines rather than one, and why the spacing between them measures shaft speed rather than supply frequency.

## Where the simulation is kinder than a machine

Published motor current signature analysis generally places demagnetization at $f_0 \pm kf_r$: sidebands around the fundamental, which is the same _form_ eccentricity takes. Separating the two in a real drive is a research problem in its own right, with a literature of its own. This generator instead places demagnetization at $kf_r$, which makes the two conditions far more separable than they are in the field.

At four pole pairs the arithmetic makes the point sharply. The rotor frequency divides the supply frequency exactly, so the generator's demagnetization lines at 12.5, 25 and 37.5 Hz land precisely on the lower-sideband grid $f_0 - kf_r$, and one of them, 37.5 Hz, is also the eccentricity sideband $f_0 - f_r$. Two of the four conditions share a spectral line, and what separates them in this data is the presence of 12.5 and 25 Hz against 62.5 Hz, plus how each scales with load.

> **How to read the Lab's accuracy**
>
> High accuracy here is evidence that a small model can learn this generator. It
> is not evidence that these faults are easy to tell apart on a real machine,
> and it is not a validated diagnostic. The generator and the model are a
> matched pair, trained and evaluated on the same physics.

## Keep the interpretation bounded

> **Assumptions & scope**
>
> A particular synthetic signal model, a fixed sampling setup, and a classifier
> trained on generated windows. Behaviour should be read inside that setup.

The useful move is to read the selected condition, the waveform, the spectrum and the probability distribution together, and to push the noise slider until the answer breaks. A confident classification on an input the model never trained against is still a confident classification, and that is the failure worth seeing for yourself.
