ENTREFER

The curve we publish

The field is not linear, so the precision is not uniform.

Everything else on this site follows from one equation and one graph. Here they both are.

The equation

For an axially magnetised cylinder of radius R and length L, the flux density on the axis at a distance z from the pole face is exactly:

B(z) = Br⁄2 · [ (z+L)⁄√((z+L)²+R²) − z⁄√(z²+R²) ]

Not a fit, not a lookup table, not a curve someone drew through measured points. With our magnet (R = 1.0 mm, L = 2.5 mm, Br = 1.32 T) and our travel (4.30 mm of gap closing to 0.70 mm), it gives 10.13 mT at rest and 251.47 mT at the stop.

That is 24.8× more signal at the bottom of the key than at the top. But signal is not resolution. Resolution comes from the slope — how much the reading moves per millimetre of finger — and that varies by 42× across the same travel.

What follows from it

The sensor converts ±300 mT to 14 bits, so one count is 36.62 µT. Divide that by the slope and you get the distance one count is worth. Divide the noise floor (0.08 mT RMS) by the slope and you get the distance the reading wanders on its own.

Near the top of the key that wander is 13.2 µm. Near the bottom it is 0.31 µm.

Three things follow, and we would rather say them than not:

  1. The actuation range starts at 0.10 mm, not zero. Below that the setting is finer than the measurement.
  2. A board advertising 0.005 mm of adjustment near the top of the travel is quoting a number 2.6× smaller than its own noise floor. Real in the firmware; not a real distance.
  3. Two keys can differ. So every board is measured, key by key, and leaves with the sheet. Here is one.

Drag across either chart

Flux at the sensor

depth1.20mm
air gap3.10mm
flux21.60mT
slope15.5mT/mm

Depth into the key, mm → Drag across the chart.

Position noise

depth1.20mm
noise5.16µm
slope15.5mT/mm
flux21.60mT

Depth into the key, mm → Drag across the chart.

The shaded bands at each end are outside the settable range. Both axes are logarithmic, because on a linear axis a 42× change draws as a flat line with a spike at one end and tells you nothing.

The same thing as a table

DepthmmGapmmFluxmTSlopemT/mm1 countµmNoiseµm
0.104.2010.726.16.0313.16
0.254.0511.686.85.3711.73
0.503.8013.578.34.399.60
1.003.3018.7712.92.856.22
1.502.8027.0120.91.753.83
2.002.3040.8636.21.012.21
2.501.8065.9067.90.541.18
3.001.30115.14138.70.260.58
3.400.90191.66256.20.140.31

Computed at build time from src/lib/field.js, which is the same module the charts above and the instrument on every page run on, and which agrees with the independent Python implementation in assets-src/blender/ to the last printed digit.

esc