Project Mocha (v1.0)

I built this bench to see what I feel. It doesn’t replace my opinion, it backs it up. Every base gets measured at its full potential, and at the settings I actually enjoy it with. What it won’t do is tell you which base you’ll love. That part, no one can tell you.

Equipment

Sreeka 50 Nm reaction (static) torque transducer
STM32F411CEU6 microcontroller
AD620 instrumentation amplifier
L7809 9V linear regulator

Setup & Mounting

The bench sits on a 12040 aluminium profile, with three 4040 profiles attached laterally underneath. The wheelbase mounts on its own plate near the centre, and the torque transducer sits opposite to it on a custom height-adjustable mount, which lines up the transducer’s axis with the wheelbase’s shaft. The two are coupled through a quick release. The base turns against the fixed transducer, and that reaction torque is what gets measured. No coupling or adjustment is touched while the base is powered. A stalled motor is a loaded spring.

The profile is clamped to the table with Taparia industrial C-clamps rated 2,125 kg each. A sudden burst of torque can do things I don’t want to find out. So the clamps keep it anchored to the table.

Power

The entire bench runs from the PC’s USB port. Total draw is well under the 500 mA a standard USB port provides. The STM32’s 5V rail feeds a boost converter, and an L7809 regulates its 12V output down to the 9V that excites the transducer and powers the amplifier. The amplifier module generates its own negative rail, so its output can swing below ground. A series resistor and Schottky diodes on the ADC input limit fault current and keep voltages outside the safe range off the STM32’s pins.

Calibration & Accuracy

A weighed mass at a measured distance applies a known torque to the transducer, and the system’s response to it sets the scale. The whole chain, from transducer to readout, is calibrated together, so no component is trusted on its datasheet alone. Static end-to-end accuracy is ±0.5% of reading, or ±0.05 Nm, whichever is larger.

To ensure consistency across runs, all measurements are taken after a 30 minute sensor warm-up. The zero is verified before and after each run, and full system recalibration is performed whenever any major change takes place.

The reference masses, two dumbbells (4.979 kg and 4.932 kg) and two plates (1.747 kg and 1.763 kg), were weighed individually on a digital scale with 1 g readability. They are placed one at a time into a bucket hanging from a rope looped around the end of the arm, 144.1 mm from the transducer’s axis. The zero is taken with the empty bucket hanging, so only the added masses count. Masses are only ever added on the way up and removed on the way down, so the load never dips mid-run and hysteresis shows up cleanly. With local gravity of 9.78619 m/s², this gives four reference torques from 2.46 Nm to 18.93 Nm in each direction.

Calibration Log (15 Oct 2026)

Zero (empty bucket): 1655 mV, placed mid-scale so torque in either direction has full swing. Identical before and after each run.

Sign convention: Clockwise torque is positive and drives the voltage above 1655 mV. Counterclockwise is negative and drives it below.

Calibration table (DMM readings)

LoadTorqueCW up (mV)CW down (mV)CCW up (mV)CCW down (mV)
Plate 1 (1.747 kg)2.46 Nm1729172915821582
Both plates (3.510 kg)4.95 Nm1804180415071507
Both plates + dumbbell 1 (8.489 kg)11.97 Nm2016201612951295
All masses (13.421 kg)18.93 Nm2225222510851085

Sensitivity: 30.13 mV/Nm clockwise, 30.09 mV/Nm counterclockwise. The two directions agree within 0.13%, so the bench uses a single constant of 30.1 mV/Nm.

Linearity: Every point sits within 0.04 Nm of a straight line through zero, about the size of one digit on the meter.

Hysteresis: None resolvable. Every reading on the way down matched the way up to the last digit (below 1 mV, or 0.03 Nm).

Error budget (root sum square): Reference mass ±0.1%, lever arm ±0.2%, DMM resolution ±0.2% at full load (UNI-T UT61D+, 1 mV, 6000 counts), linearity ±0.2%, hysteresis below resolution. Combined: about ±0.4%, stated as ±0.5% of reading. Below 10 Nm, the meter’s 1 mV step and linearity scatter dominate, hence the ±0.05 Nm floor.

What the bench measures

Delivered torque: How much torque the base actually produces when asked (held steady) in both directions.

Frequency response: How well the base keeps up as the force changes faster, from slow pushes at 5 Hz to quick vibrations at 125 Hz. That is, how much gets through (bandwidth) and how late it arrives (delay). See the bench’s limits below for how far up these results can be trusted.

Step response: How quickly the base goes from zero to a set torque and back (slew rate), how long it takes to start reacting, and whether it overshoots.

How the bench measures

The wheelbase shaft is locked to a calibrated torque transducer. The PC sends standard force feedback effects, the same kind games use, and the bench records the torque 10,000 times per second, timestamped against the moment each command is sent. Every point is repeated 10 times (5 at the heaviest step levels, to limit motor heat), and every run records the firmware and software versions that produced it.

Before testing, the base’s own software is set to pass the signal through as cleanly as possible, that is, full strength, filters at their lightest, and added effects like damper and friction turned off. The exact settings, and the reason for each, are listed on every base’s page.

How the tests are run

Frequency sweeps run at fixed torque levels in newton metres, not at a percentage of the base’s maximum. 50% of a 12 Nm base and 50% of a 20 Nm base are very different forces, so percentages would make bases impossible to compare. Fixed levels mean every base meets the others at the same points.

Base’s measured maximumLevels
Under 5 Nm2.5 Nm
5-10 Nm2.5, 6 Nm
10-14 Nm2.5, 6, 9 Nm
14-18 Nm2.5, 6, 9, 12 Nm
18 Nm and up2.5, 6, 9, 12, 15 Nm

Note: Measured maximum is the average of the clockwise and anticlockwise steady holds at full strength. A level is only run if the base can reach it with about 10% to spare.

Why these levels: 2.5 Nm is light force, where small details and textures live, and where smoothing shows up most. From there on, the levels climb in even steps, and a base gets a level only if it can deliver it. Every base shares the lower levels, so a 12 Nm base can always be compared with a 20 Nm base at 2.5, 6 and 9 Nm. Running several levels also shows whether a base behaves differently as torque changes, for example smoothing light forces more than heavy ones.

How a “level” is set: A level is the strength at which the base holds that torque steady on the bench. It isn’t calculated from the rating, because bases don’t scale perfectly. Some bases can’t make fine steps at light force, so each level is hit within ±0.3 Nm or ±5%, whichever is larger. Charts show the torque actually measured.

No sweeps at full power: At 100%, the peaks of the test signal push the base against its own limit, so the result would show the ceiling, not how the base responds. Full power is covered by the steady hold and step tests instead.

Extra runs: Sometimes an extra level is run to investigate a specific behaviour. These are always labelled as extra and never mixed into the standard results.

Limitations

Feel: Feel is judged separately, by driving, and recorded before the wheelbase is put on the bench.

No driving, no wheel: The base is locked to the bench, with no rim and no hands on it. Anything that depends on the wheel moving (friction, damping, inertia, behaviour at speed, cogging felt while turning) is outside what this bench measures. Your rim and grip also add their own filtering. Our bandwidth figure is the ceiling at the wheel-side half of the quick release, just before the rim, not what reaches your fingers.

Test signals: Games do mix many effects at once, some real, some artificial. We use clean, repeatable signals so bases can be compared fairly.

Frequency range: Level (how much gets through) is reliable up to about 80 Hz. Above that, the bench’s own mechanics start to affect the result. Delay is reliable up to about 50 Hz. Beyond that, USB timing jitter makes the results unreliable. A stiffer mount is planned to raise the level limit.

Multiple units: Usually only one unit is tested. If a unit behaves oddly, the manufacturer is asked for a second one to check, and the base’s page says whether that happened. Differences between individual units and hardware revisions aren’t covered. Major firmware updates, meaning ones whose release notes mention force feedback changes, are re-tested. Minor ones aren’t. Every result shows the firmware version it was measured on.