English • العربية • български • català • čeština • Deutsch • Ελληνικά • español • فارسی • français • hrvatski • magyar • italiano • română • 日本語 • 한국어 • lietuvių • Nederlands • norsk • polski • português • русский • Türkçe • українська • 中文（中国大陆） • 中文（台灣） • עברית • azərbaycanca •
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 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:
- Marlin on ATmega 16 MHz (e.g. RAMPS) in single-stepping: < 40,000 steps/second (10 kHz).
- 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): 48 kHz.
- Marlin/Repetier on ATmega 16 MHz in Quadstep-Mode (uneven step distribution): <40 kHz.
- 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) using up to octal stepping at high speeds: 240kHz with one motor moving, and 130KHz simultaneously on 3 motors
Measuring step rate
Method 1 "by ear"
- Connect a stepper (without printer) to the controller.
- Jumper the controller for its highest microstepping to keep actual motor RPM low.
- Set a very high max feedrate in the firmware (65000 mm/min or 1000 mm/s).
- Choose a moderate acceleration, e.g. 100 mm/s2 in firmware (acceleration phase is the critical phase, so don't make it too short).
- 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.
- Calculate steps/mm. Here microstepping and printer details, like pulley size are taken into account.
- Achievable feedrate = (achievable step rate) / (steps/mm)
Note: 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!
Marlin/Repetier on ATmega 16 MHz
Teacup Firmware on ATmega 20 MHz
Marlin/Repetier in Quadstep-Mode
Repetier on RADDS
RepRapFirmware on Duet WiFi
|0,9°-stepper, 14-teeth-GT2-pulley, 1/16 microstepping||228,57||4,38 μm||70 mm/s||210 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||105 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||26 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||240 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||120 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||60 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||30 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||270 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||135 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||67,5 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||420 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||210 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||52 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||480 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||240 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||120 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||60 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||600 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||540 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||270 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||135 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||37 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||19 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||4,7 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||90 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||22 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||5,6 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,75 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.