Free tool
Max feedrate checker
Steps/mm times the controller’s maximum step rate, converted to mm/min — and the other way round, the pulse frequency a feed or rapid needs, checked against that limit. Anything past 100 kHz is flagged.
- m/min
- 3.75
- in/min
- 147.6
- Step-rate limit
- 100 kHz
- Set by
- TNC-M34
Pulse frequency at 3 000 mm/min
Within the limit80kHz
- Headroom
- 20 %
- Limit
- 100 kHz
0
TNC-M34 pulse widthIf 3 000 mm/min is this axis’s max_rate, the TNC-M34 holds step_pulse_us to 6 µs or less, half the step period. A drive that needs a wider pulse needs a lower max_rate or fewer microsteps.
| Microsteps | Steps/mm | Step (µm) | Max feed (mm/min) | At your feed |
|---|---|---|---|---|
| ÷ 4 | 400 | 2.5 | 15 000 | 20 kHz |
| ÷ 2 | 800 | 1.25 | 7 500 | 40 kHz |
| as set | 1 600 | 0.625 | 3 750 | 80 kHz |
| × 2 | 3 200 | 0.3125 | 1 875 | 160 kHz (over) |
| × 4 | 6 400 | 0.1563 | 937.5 | 320 kHz (over) |
How it is worked out
A step/direction controller moves an axis one pulse per step. The fastest feed is therefore the controller’s pulse rate shared out over the pulses each millimetre needs, and the frequency a feed needs is the same sum turned round.
pulse frequency (Hz) = steps per mm × feed (mm/min) ÷ 60 maximum feed (mm/min) = step-rate limit (Hz) × 60 ÷ steps per mm steps per mm = full steps per rev × microsteps ÷ screw lead (mm) headroom (%) = (limit − pulse frequency) ÷ limit × 100
The limit used is the controller’s, or the drive’s maximum input frequency if you enter one and it is lower. m/min is mm/min ÷ 1000, and in/min is mm/min ÷ 25.4.
Worked example
A 200-step (1.8°) motor on a drive set to 40 microsteps, turning a 5 mm lead ball screw directly, on a TNC-M34:
steps per mm = 200 × 40 ÷ 5 = 1 600 steps/mm maximum feed = 100 000 × 60 ÷ 1 600 = 3 750 mm/min (3.75 m/min, 147.6 in/min) 3 000 mm/min : 1 600 × 3 000 ÷ 60 = 80 000 Hz = 80 kHz, 20 % headroom 5 000 mm/min : 1 600 × 5 000 ÷ 60 = 133 kHz, past the limit
The 3 000 mm/min feed fits. A 5 000 mm/min rapid cannot be delivered at this resolution, whatever max_rate is set to.
Assumptions
- Steps per mm already includes any belt or gear ratio between the motor and the screw.
- The figures are for one axis at a steady feed. On a TNC-M34 the ceiling applies to the fastest-moving axis of a move; the other axes get fewer pulses from the same interrupt.
- For a rotary axis, enter steps per degree and a feed in degrees per minute; the arithmetic is the same.
- Headroom under 10 % is flagged as a warning. That margin is this tool’s choice, not a controller figure.
Why the step rate, not the motor, often limits rapids
Every microstep is another pulse the controller has to send for the same distance. At 1 600 steps/mm a 100 kHz ceiling runs out at 3 750 mm/min, which on a 5 mm lead is the motor turning only 750 rpm. Many stepper systems still have usable torque there, so the rapid stops at the pulse ceiling long before it stops at the motor. Typing a bigger number does not help: the TNC-M34 accepts a max_rate of up to 200 000 mm/min, but its pulse engine delivers no more than 100 kHz, and at this resolution that is 3 750 mm/min.
The trade-off of fewer microsteps
Halving the microsteps halves steps per mm and doubles the top feed at the same step rate — the table beside the result shows that ladder for your numbers. What it costs:
- Coarser steps: 1 600 steps/mm is 0.625 µm a step, 400 steps/mm is 2.5 µm. Both are usually finer than a stepper holds position under load, so the loss in real accuracy is smaller than those numbers suggest.
- Rougher motion at low speed, with more noise and vibration, because each step is a bigger jump in the motor’s current.
- More chance of exciting resonance at particular speeds.
What it can buy besides speed: on a TNC-M34 a lower step-rate demand lets a wider STEP pulse survive. step_pulse_us is held to half the shortest step period the axes can demand — 5 µs at 100 kHz, 10 µs at 50 kHz — so a drive that needs a 10 µs pulse needs the demand at or below 50 kHz.
The limits in this tool
| Choice | Step-rate limit | Where it comes from |
|---|---|---|
| TNC-M34 | 100 kHz per axis | Operator manual, §11.2a. The pulse engine clamps to 100 kHz on the fastest-moving axis of a move. Its step timer runs at 1 MHz, so a step period is a whole number of microseconds and the rates near the top are coarse: 100 kHz, then 90.9 kHz. |
| TNC-L32 | 1 ÷ (2 × (DIR SETUP + PULSE WIDTH)), at most 500 kHz | User manual, “What limits the step rate”. The pulse and the direction settle have to fit in half a step interval. The defaults, 8 + 5 µs, give 38.5 kHz; 1 + 1 µs on a differential drive gives 250 kHz. Both fields run from 1 to 20 µs. |
| Tstep-087 RS-485 drive | 100 000 steps/s | Its Modbus firmware. The step interrupt runs at 100 kHz and emits at most one step per tick, and a commanded speed above 100 000 steps/s is clamped. Speeds are written in steps/s over Modbus, so steps per mm belongs to the master. |
| TIO-0808 | 100 000 steps/s | The same step generator, ported from the Tstep-087, on its own 100 kHz interrupt. |
| Custom | what you enter | Any other controller or drive. |
On the Tstep-087 and the TIO-0808 each pulse lasts about one 10 µs tick and steps land on that tick grid, so rates between the grid points are averages. Up to 50 000 steps/s there is at least a full tick with the line low between pulses; above that, some pulses fall on consecutive ticks with the line low for only a moment.
Why 100 kHz is flagged
100 kHz is the ceiling of the TNC-M34, the Tstep-087 RS-485 drive and the TIO-0808, so none of them can meet a demand past it. The TNC-L32 can go higher, but only with DIR SETUP + PULSE WIDTH under 5 µs. Its manual gives microsecond settle times as what optocoupler inputs need, which leaves a drive with a differential line-receiver input as the realistic case. Past 100 kHz, check the drive’s maximum input frequency as well.
The drive’s limit
The drive has its own maximum input pulse frequency. If you know it, enter it and the tool uses whichever limit is lower. Take the figure from the datasheet of the drive you have; there is no preset for it here.
What this does not check
A pulse rate the controller can send is not a speed the axis can reach. A stepper’s torque falls as speed rises, because winding inductance limits how fast current builds (a higher supply voltage helps). Mid-band resonance can stall a motor at particular speeds, acceleration needs torque margin on top of that, and a long screw has a critical speed of its own. A stepper torque-speed estimator for that side is planned at /tools/torque-speed/.
Tiny Controls products
- TNC-M34 four-axis CNC controller: 100 kHz per axis.
- TNC-L32 two-axis lathe controller.
- Tstep-087-485 stepper drive with an RS-485 interface.
- Tstep-087X stepper drive: 4, 5, 8, 10, 16, 20, 32 or 40 microsteps.
- TIO-0808 RS-485 I/O card.