Step rates

From RepRap
Revision as of 06:32, 12 October 2016 by Dc42 (talk | contribs) (Achievable step rates)
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 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 (120KHz 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"

  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.

Calculation:

  1. Calculate steps/mm. Here microstepping and printer details, like pulley size are taken into account.
  2. 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!

 Steps/mm
 Theoretical  precision
 Marlin/Repetier  on ATmega 16 MHz
 Teacup Firmware  on ATmega 20 MHz
 Marlin/Repetier  in Quadstep-Mode
 Repetier  on RADDS
 Smoothie
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
  •  : 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.