Velocity/Acceleration/Jerk - Fundamental Question..
-
How does the Duet (and 3DP microcontrollers in general) handle velocity, acceleration, and "jerk" in terms of pulses being sent to the motor drivers?
To increase velocity, does this mean the frequency of step pulses sent to the driver increases? What about for acceleration?
Or are the above parameters handled by the motor drivers?
I hope this makes sense!
-
@jpomo10 this is handled by the step planning within the firmware. The gcode file specifies a start and end point for a number (at least 3 in a normal print move (X,Y,E) of axis. The firmware plans this move within the constraints it has configured for velocity acceleration and "jerk"="instantaneous velocity change".
The output of the plan is sent to the stepper driver in the form of a pulse per microstep, per axis that needs to move. the microsteps are coordinated to achieve the acceleration ramp to velocity, and subsequent deceleration ramp that the move plan has determined. These ramps take into consideration what the previous move for that axis was, and what the next move will be. In some cases there is no acceleration ramp because the change of velocity is within the "jerk" parameters.
Points to note. The movement is coordinated across all the axis (including extruders) with the slowest providing the limit. Also the firmware maximum velocity settings override what the slicer asks for in terms of maximum feedrate. Dynamic acceleration adjustment and pressure advance complicate this to some extent because in these cases the firmware does further manipulation to the axis speeds and accelerations in order to make the plastic coming out the nozzle go down where it was supposed to (with appropriate tuning).
HTH
-
@t3p3tony OK, this makes sense. I appreciate the thorough explanation!