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.
JerkF = 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
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.
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
X-stepper moves the efektor
Y the bed
Z the x-axis + x-stepper + efector
For a ultimaker mechanism
X moves y-axis + efector
Y x-axis + efector
Z the bed
A CoreXY
A is moving 1/2 efector + 1/2 x-axis
B is moving 1/2 efector + 1/2 x-axis
Z the bed
For a DELTA things are not that simple but we can guess worst and best case
For all 3 towers (only one tower moving)
vertical diagonal rod -> towers sled + 1.2 * efector
horizontal diagonal rod -> towers sled
above [0,0] -> towers sled + 1.2 * efector
worst case -> towers sled + 1.3 * efector
(ask me for the test program)
Most interesting facts here are:
We have to adjust max_acceleration for the worst case
Worst case is independent from all other steppers. We can test them separately.
We have to adjust max_acceleration per stepper, not per axis!
Calculating/limiting a common Cartesian acceleration is not very useful.
@native_English_speakers
I'd love if you could improve this article in spelling, grammar, ...
What is limiting speeds at a stepper driven 3d-printer?
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
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.
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'.
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 toMoved 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 i3For 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, ...