Step rates

From RepRap
Jump to: navigation, search

One thing up front: at 300 mm/s, precision in the micrometer range is pretty unrealistic. Accordingly, 0.9° stepper motors and 1/32 microstepping don't make much sense. The forces required to achieve such speeds are simply too high for current designs of printer frames and actuators. For high precision you'd have to live with much lower feedrates.

Another point of note is that microstepping beyond 1/16 does not result in higher precision, because the incremental torque becomes too small compared to the required torque to move the stepper i.e. two or more microsteps will be required for the stepper to move at all. This is explained very clearly here: Microstepping Myths and Realities

However, microstepping does reduce noise and vibrations, so it is still a desirable feature for RepRap designers. Note that some stepper driver ICs (e.g. TMC2100) use a high microstepping interpolation mode (1/16th microstepping with 1/256 interpolation) achieving silent, vibration free-running while only requiring 1/16th step rate i.e. you can have the cake and eat it too, in this case.

Achievable step rates

Step rate means the highest speed at which a particular electronics-firmware combination can send step pulses to the stepper motor driver. It mostly depends on the CPU used on a controller, its clock frequency, the number of motors being stepped at high speed, and the algorithm used by the firmware to calculate motor movements. As this are typically several thousand pulses per second, it's typically given in Kilohertz (kHz).

ATmega-based electronics are, with exception of the clock frequency, all equally fast. Achievable feedrates are always the same, no matter whether you use a big ATmega2560, a small ATmega168, or something in between.

Current (April 2015) discussion about achievable step rates goes as following:

There is a difference between even steppings and multi-stepping, so called double-/quad-stepping. Single stepping means, that any interrupt will only occur one step. On double stepping any interrupt will occur 2 steps... and so on. So in case of multi stepping, the stepper must achieve multiple steps in 'no time'.

The first three points were the main discussion in 2015:

  • Marlin/Repetier on ATmega 16 MHz (e.g. RAMPS) in single-stepping: <10.000 steps/second (10 kHz).
  • Teacup Firmware on ATmega 20 MHz (e.g. Gen7): 53 kHz.
  • Marlin/Repetier on ATmega 16 MHz in Quadstep-Mode (uneven step distribution): <40 kHz.

In the past came new boards. But be care with apples and oranges. Some is single stepping mode, some multi-stepping, up to octal stepping.

I can only talk for Repetier and Marlin4Due. The numbers are just for single stepping. But both have implemented double and quadstepping and should achieve in theory 4 times the frequency.--Wurstnase (talk) 13:20, 8 November 2016 (PST)

  • Repetier on RADDS with 84MHz ARM Cortex-M3 (no FPU): 96 kHz.
  • Smoothie on Smoothieboard with 120MHz ARM Cortex-M3 (no FPU): 120 kHz (configurable, 120k is default, rates up to 200 are achievable by tuning other options).
  • Marlin4Due on RAMPS4Due with 84MHz ARM Cortex-M3 (no FPU): >107.7kHz single stepping (how was this measured?: Logicanalyser -Wurstnase).
  •  ? on BeagleBone Black + Replicape with ARM 1GHz Cortex-A8 (with FPU) + 2 x 200MHz PRUs: ? (unknown, but could probably be in the MHz range).
  • RepRapFirmware on Duet WiFi (120MHz ARM Cortex-M4, firmware 1.17d) using up to octal stepping at high speeds: 360kHz with one motor moving, and 180KHz simultaneously on 3 motors
  • Teacup on Nucleo F411RE (100MHz): 480kHz single stepping speed (overclocked to 125MHz 600kHz)

The above step rates assume that no additional delays need to be introduced to satisfy the minimum step pulse width or minimum step pulse interval required by the driver. Some drivers, in particular DRV8825 and most high-power stepper driver modules with optically-isolated inputs, need extended timing and this may reduce the maximum available step rate.

Measuring step rate

Method 1 "by ear"

  1. Connect a stepper (without printer) to the controller.
  2. Jumper the controller for its highest microstepping to keep actual motor RPM low.
  3. Set a very high max feedrate in the firmware (65000 mm/min or 1000 mm/s).
  4. Choose a moderate acceleration, e.g. 100 mm/s2 in firmware (acceleration phase is the critical phase, so don't make it too short).
  5. Then send movement commands at raising feedrates:
G1 X1000 F20000
G1 X0 F22000
G1 X1000 F24000

Raise feedrate until the controller shows hiccups. Either short pauses in stepper sound or sound going away entirely. The achieved feedrate allows to calculate the achieved step rate.

With our fast controllers, stepper max RPM is also a limitation. If the stepper stops moving (i.e. no rotation), but the stepping sound continues to be smooth, the controller can keep up and the measurement is valid.

Other methods using electronic instruments

Measuring with devices, e.g. an oscilloscope, is less reliable, because there it's hard to notice short dropouts. For example, a poorly coded firmware would show such dropouts while characters come in over the serial line. Dropouts lead to motor stop or at least step losses, so such behaviour isn't usable while printing.

By step rate achievable feedrates

Every step pulse advances a stepper by one step. If microstepping is used, a step pulse advances the stepper by one microstep. Accordingly, maximum achievable feedrates depend directly on the given microstep setting.


  1. Calculate steps/mm. Here microstepping and printer details, like pulley size are taken into account.
  2. Achievable feedrate = (achievable step rate) / (steps/mm)


  1. In a CoreXY printer for a pure X or pure Y movement, both motors need to move simultaneously at the desired head speed.
  2. In a delta printer all 3 motors are generally moving simultaneously, and one of them may be moving at up to about 2.5 times the required travel speed.
  3. In many cases there are other feedrate limitations than just the achievable step rate, e.g. a spindles' max RPM. In these cases a controller keeping up with these other limitations is sufficient, an even faster controller brings no additional advantage regarding feedrates.

This table is a outdated and should be reworked. The limits for Marlin/Repetier are too high!

 Theoretical  precision
 Marlin/Repetier  on ATmega 16 MHz
 Teacup Firmware  on ATmega 20 MHz
 Marlin/Repetier  in Quadstep-Mode
 Repetier  on RADDS
 RepRapFirmware  on Duet WiFi/Duet Ethernet
0,9°-stepper, 14-teeth-GT2-pulley, 1/16 microstepping 228,57 4,38 μm 70 mm/s 234 mm/s 293 mm/s 420 mm/s 525 mm/s 1000 mm/s
0,9°-stepper, 14-teeth-GT2-pulley, 1/32 microstepping 457,14 2,19 μm 35 mm/s 117 mm/s 146 mm/s 210 mm/s 262 mm/s 500 mm/s
0,9°-stepper, 14-teeth-GT2-pulley, 1/128 microstepping 1828,6 0,547 μm 8,7 mm/s 29 mm/s 37 mm/s 52 mm/s 65 mm/s 130 mm/s
0,9°-stepper, 16-teeth-GT2-pulley, 1/16 microstepping 200 5 μm 80 mm/s 268 mm/s 335 mm/s 480 mm/s 600 mm/s 1200 mm/s
0,9°-stepper, 16-teeth-GT2-pulley, 1/32 microstepping 400 2,5 μm 40 mm/s 134 mm/s 168 mm/s 240 mm/s 300 mm/s 600 mm/s
0,9°-stepper, 16-teeth-GT2-pulley, 1/64 microstepping 800 1,25 μm 20 mm/s 67 mm/s 84 mm/s 120 mm/s 150 mm/s 300 mm/s
0,9°-stepper, 16-teeth-GT2-pulley, 1/128 microstepping 1600 0,625 μm 10 mm/s 33 mm/s 42 mm/s 60 mm/s 75 mm/s 150 mm/s
0,9°-stepper, 36-teeth-GT2-pulley, 1/32 microstepping 177,78 5,625 μm 90 mm/s 301 mm/s 377 mm/s 540 mm/s 677 mm/s 1300 mm/s
0,9°-stepper, 36-teeth-GT2-pulley, 1/64 microstepping 355,56 2,8125 μm 45 mm/s 150 mm/s 188,5 mm/s 270 mm/s 338 mm/s 650 mm/s
0,9°-stepper, 36-teeth-GT2-pulley, 1/128 microstepping 711,12 1,4063 μm 22,5 mm/s 75 mm/s 94 mm/s 135 mm/s 169 mm/s 330 mm/s
1,8°-stepper, 14-teeth-GT2-pulley, 1/16 microstepping 114,29 8,75 μm 140 mm/s 469 mm/s 586 mm/s 840 mm/s 1052 mm/s 2000 mm/s
1,8°-stepper, 14-teeth-GT2-pulley, 1/32 microstepping 228,57 4,38 μm 70 mm/s 234 mm/s 293 mm/s 420 mm/s 526 mm/s 1000 mm/s
1,8°-stepper, 14-teeth-GT2-pulley, 1/128 microstepping 914,29 1,09 μm 17 mm/s 58 mm/s 73 mm/s 105 mm/s 131 mm/s 260 mm/s
1,8°-stepper, 16-teeth-GT2-pulley, 1/16 microstepping 100 10 μm 160 mm/s 536 mm/s 670 mm/s 960 mm/s 1200 mm/s 2400 mm/s
1,8°-stepper, 16-teeth-GT2-pulley, 1/32 microstepping 200 5 μm 80 mm/s 268 mm/s 335 mm/s 480 mm/s 600 mm/s 1200 mm/s
1,8°-stepper, 16-teeth-GT2-pulley, 1/64 microstepping 400 2,5 μm 40 mm/s 134 mm/s 168 mm/s 240 mm/s 300 mm/s 600 mm/s
1,8°-stepper, 16-teeth-GT2-pulley, 1/128 microstepping 800 1,25 μm 20 mm/s 67 mm/s 84 mm/s 120 mm/s 150 mm/s 300 mm/s
1.8°-stepper, 20-teeth-GT2-pulley, 1/16 microstepping * 80 12.5 μm 200 mm/s 670 mm/s 837 mm/s 1200 mm/s 1500 mm/s 3000 mm/s
1,8°-stepper, 36-teeth-GT2-pulley, 1/32 microstepping 88,89 11,25 μm 180 mm/s 603 mm/s 754 mm/s 1080 mm/s 1349 mm/s 2600 mm/s
1,8°-stepper, 36-teeth-GT2-pulley, 1/64 microstepping 177,78 5,625 μm 90 mm/s 301 mm/s 377 mm/s 540 mm/s 674 mm/s 1300 mm/s
1,8°-stepper, 36-teeth-GT2-pulley, 1/128 microstepping 177,78 2,8125 μm 45 mm/s 150 mm/s 188,5 mm/s 270 mm/s 337 mm/s 650 mm/s
1,8°-stepper, M8 threaded rod, 1/8 microstepping 1280 0,781 μm 12 mm/s 41 mm/s 52 mm/s 75 mm/s 93 mm/s 180 mm/s
1,8°-stepper, M8 threaded rod, 1/32 microstepping 5120 0,195 μm 3,1 mm/s 10 mm/s 13 mm/s 19 mm/s 23 mm/s 45 mm/s
1,8°-stepper, M8 threaded rod, 1/128 microstepping 20480 0,0488 μm 0,78 mm/s 2,6 mm/s 3,3 mm/s 4,7 mm/s 5,8 mm/s 11,6 mm/s
1,8°-stepper, Tr10x3 spindle, 1/8 microstepping 533,33 1,875 μm 30 mm/s 100 mm/s 126 mm/s 180 mm/s 225 mm/s 450 mm/s
1,8°-stepper, Tr10x3 spindle, 1/32 microstepping 2133,3 0,469 μm 7,5 mm/s 25 mm/s 31 mm/s 45 mm/s 56 mm/s 110 mm/s
1,8°-stepper, Tr10x3 spindle, 1/128 microstepping 8533,3 0,117 μm 1,9 mm/s 6,3 mm/s 7,8 mm/s 11 mm/s 14 mm/s 28 mm/s
0.9°-stepper, M5 threaded rod, 1/128 microstepping 64000 0,0156 μm 0,25 mm/s 0,83 mm/s 1,0 mm/s 1,5 mm/s 1,8 mm/s 3.6 mm/s
  •  : This configuration is the most commonly found in Prusa i3 RepRap builds (for the X and Y axis). For acceptable print quality parts, printing speeds on Prusa i3's are usually kept below 60mm/s, which just goes to show that the slowest controller with the slowest firmware is still able to achieve maximum printing speed while staying far below its maximum achievable step rates.