AnHardt / Marlin

Reprap FW with look ahead. SDcard and LCD support. It works on Gen6, Ultimaker, RAMPS and Sanguinololu
GNU General Public License v3.0
1 stars 1 forks source link

Speedlimits #81

Closed AnHardt closed 4 months ago

AnHardt commented 6 years ago

What is limiting speeds at a stepper driven 3d-printer?

G28
G0 X200 F200000 ; 200 meters/minute = 3333 mm/s

Will order the printer to first home and than to move a 200mm long line along X with 3333 mm/s what should last 200/3333 ~ 0.06s. That's unrealistic. No printer can do that.

Processor Let's calculate µsteps/s. With a common 100µsteps/mm we will get 200*100/0.06 ~ 3.333,333 µsteps/second ~ 3.3Mhz. Our 16MHz micro-controllers can easily step that (when doing nothing else), but most stepper drivers will not.

Stepper drivers The stepper drivers do need step pulses to be not shorter than 1/8-30 µs and a at least equal long break between the pulses.

Stepper Motors Internal magnetic forces are limiting the steprate of stepper motors. They can't rotate infinit fast. Speed can be improved by higher voltage, more current, other decay mode. The limit is usually far below 10K full steps/second for a bare unloaded stepper motor. For one with a useful load it can be a magnitude lower.

At maximum speed, the force created by the motor is in balance with the force it needs to push the axis forward with this constant speed. The highest step rates can be reached if accelerated slowly.

Axes Lenght Despite of having said above, low accelerations do not make much sense. For infinit low accelerations you need infinit long axes to reach maximum speed. For a nice tool to play with see, Prusa Calculator (The vertical axis shows speed. The horizontal axis shows way)

Acceleration Locking at that graphs you may have realized that the move we started with (G0 X200 F200000) will take much longer than the estimated ~0.06s, even if the feedrate could be reached. You will need additional time to accelerate an decelerate.

Jerk F = m * a (Force, mass, acceleration) is only then that simple when the kinetic system is 'stiff' and the movement 'continuous'. Stepper based systems are neither 'stiff' nor 'continuous'. Because of the steps movement can't be continuous. And because you can move the stepper about 1 full step forward or backward without losing steps when you reduce the force, there is some elasticity. (If you try to move it more than one full step it will snap in n*4 full steps from the original position.) Similar to sawtooth This 'spring' system converts the discontinuous move/force into a much more continuous. Without this 'springiness' it would not be possible to make any step without losing it. (F=m*a with a=infinit --> F=infinite) This elasticity also allows us to accelerate our moves from a speed different from 0. That is called jerk in Marlin. prusa-calc This allows us to reach the wanted speed earlier, reduces the time the move will last, makes it more similar to the wanted constant speed we ordert with the g-code. Jerk is what is described in some stepper datasheets as 'pull in torque' (under load), 'self start range'.

Moved Mass The mass a stepper motor has to move has no direct influence to the top speed it can reach (That's more depending on the quality of the barings). But it has influence on the acceleration we can apply. F = m * a. With a given fore/torque 'a' varies with 'm'. Masses are different for the axes on different types of printers. Let's only have a look at XYZ. E is different, Here multiplied with a guessed amount of moving per step: // efector may include e-stepper (direct) or not (bowden) For a printer like a Prusa i3

For a ultimaker mechanism

A CoreXY

For a DELTA things are not that simple but we can guess worst and best case For all 3 towers (only one tower moving)

Most interesting facts here are:

@native_English_speakers I'd love if you could improve this article in spelling, grammar, ...