Stawamus deck · predictive maintenance

Column health monitoring

Learn what a healthy column looks like on the jig. Then the deck's main PC tells a technician which tile, which column and which part to fix, before it fails.

Standard test movesEmpty column, fixed speeds, up and down. The average tracks friction; half the difference tracks load.
Column vs. itself and its neighboursOwn baseline (first 8 tests), drift and step detectors, comparison with the other columns on the tile.
Alert names the part"Tile 7, column 12: friction rising → clean and re-grease screw and nut; if it returns, replace the nut."
Jig runs on the TMC5240 dev kit. MPS TBMA732 (MA732) on the motor's rear shaft, its A/B/Z outputs into the chip's encoder inputs. No rework, no setup. The chip flags lost steps itself.

1 · Parts

PartNote
TMC5240 dev kit: NUCLEO-G474RE + TMC5240-BOBThe bench board for every test, from first moves to the encoder (Order 1)
MPS TBMA732-Q-LT-00A encoder board (MA732, 14-bit)3.3 V only; A/B/Z at 1,024 ppr out of reset. Solder 5 wires, bridge TEST to GND. USD 11.91, 13 at Digi-Key (2026-10-13)
Diametric magnet 6 × 2.5 mm N35SH (Radial 9049)150 °C max (motor side reaches ≈ 80 °C at 2.0 A)
M2.5 screws: 2 × 5, 2 × 8, 2 × 6Mount to motor (rear holes only 3 mm deep), tray to mount, board to tray
Printed: encoder_magnet_holder, encoder_mount, encoder_trayFrom print/make_parts.py; measure the rear shaft and the board thickness first

Prices and order: parts page ↗

2 · Wire it

Wiring and power-up order: bench guide, TMC5240 dev kit section ↗; encoder steps in its part L.

Encoder in the chipSetting
InputA/B/Z → BOB ENCA/ENCB/ENCN, 1,024 ppr = 4,096 counts/rev
ScaleFirmware boots at enc_counts_rev 4096 (nothing to set) → ENC_CONST = 3.125 (binary, 0x00032000; 12,800 microsteps/rev). The firmware converts to 16,384 counts/rev (1 count = 4), so the analysis is unchanged.
Lag and hysteresis8–10 µs ≈ 2 counts at 50 rev/s; ABZ hysteresis 0.52° ≈ 6 counts (MA732 datasheet). For the load-angle signal subtract a ≈ 0.26° direction offset (estimate).
Lost-step flagENC_DEVIATION = 128 microsteps (2 full steps) → deviation_warn, read every 1 ms → event ENC_DEVIATION
Must stay offGCONF.stop_enable (else ENCA high stops the motor)

3 · Run it

Firmware: firmware/dist/firmware_nucleo_g474re_cube.bin. Add --board nucleo-g474re --no-estop to every bench command (.venv/bin/bench from the repository root) (no E-stop wired on the bench: the supply's output button is the stop).

  1. First run: bench --board nucleo-g474re --no-estop health-run --db jig.sqlite --encoder --ambient 21. Homes, full strokes at 50 and 200 mm/s, ±2 mm reversal probe for nut play. Refuses to start without a valid encoder. Magnet field: MGL and MGH pads both off (meter).
  2. Load ladder: --steps load. 0, 0.5, 1, 2, 3, 4 kg on the weight tower. Gives signal per kg.
  3. Heat soak: --steps soak --soak-min 30. Temperature effect on the readings.
  4. 24/7 endurance: --steps stroke,reversal,endurance --cycles 2000 --repeat 0. Standard test every 100 cycles, homing check every 250. Telemetry off (50 Hz = 0.5 GB/day).
  5. Weekly: load ladder, dial-gauge reading of play and height.
  6. Report: deck-health report --db jig.sqlite → HTML with alerts, baselines, a chart per signal.
  7. After a part swap: add --new-unit --unit nut-B2 to restart the baseline.

Stops at the first E-stop, driver fault or unexpected stall. Everything goes into one SQLite file.

4 · Run to failure

Cycle one column until it fails: play above 0.3 mm, more than 5 lost steps per km at 2 kg, or a stall in the standard test. Then look back: which signal moved first, and how many km before. That sets the alarm limits and the production test rate.

Simulated wear

Real firmware on a simulated 4-column tile: 30 test sessions over 40 km, one column wearing, 8 seeds. Wear models are plausible, not measured: this proves the chain, not the warning times.

ScenarioFails atWarned before failure
Healthy columns—0 false alarms
Friction rising3 × new (30 km)14 km
Nut play> 0.3 mm (24 km)4–6.7 km
Tight spotfirst lost steps17–20 km
Coupler slipping0.5 mm slip1.3 km (more with more homing)
Open until the jig runs
Where it lives