mirror of
https://github.com/Klipper3d/klipper.git
synced 2025-08-06 05:24:02 -06:00
stepper: Check if the motor needs to be enabled in the kinematic classes
Check for motor enable in the kinematic classes so it doesn't need to be checked on every move. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
This commit is contained in:
parent
9ad8153d33
commit
5a1ec817d4
4 changed files with 55 additions and 29 deletions
|
@ -11,6 +11,7 @@ class PrinterExtruder:
|
|||
self.heater = heater.PrinterHeater(printer, config)
|
||||
self.stepper = stepper.PrinterStepper(printer, config)
|
||||
self.pressure_advance = config.getfloat('pressure_advance', 0.)
|
||||
self.need_motor_enable = True
|
||||
self.stepper_pos = 0
|
||||
self.extrude_pos = 0.
|
||||
def build_config(self):
|
||||
|
@ -19,6 +20,7 @@ class PrinterExtruder:
|
|||
self.stepper.build_config()
|
||||
def motor_off(self, move_time):
|
||||
self.stepper.motor_enable(move_time, 0)
|
||||
self.need_motor_enable = True
|
||||
def check_move(self, move):
|
||||
if not self.heater.can_extrude:
|
||||
raise homing.EndstopError(move.end_pos, "Extrude below minimum temp")
|
||||
|
@ -28,6 +30,9 @@ class PrinterExtruder:
|
|||
# Extrude only move - limit accel and velocity
|
||||
move.limit_speed(self.stepper.max_velocity, self.stepper.max_accel)
|
||||
def move(self, move_time, move):
|
||||
if self.need_motor_enable:
|
||||
self.stepper.motor_enable(move_time, 1)
|
||||
self.need_motor_enable = False
|
||||
axis_d = move.axes_d[3]
|
||||
extrude_r = axis_d / move.move_d
|
||||
inv_accel = 1. / (move.accel * extrude_r)
|
||||
|
@ -92,7 +97,8 @@ class PrinterExtruder:
|
|||
stepper_pos = self.stepper_pos
|
||||
inv_step_dist = self.stepper.inv_step_dist
|
||||
step_dist = self.stepper.step_dist
|
||||
mcu_time, so = self.stepper.prep_move(move_time)
|
||||
mcu_stepper = self.stepper.mcu_stepper
|
||||
mcu_time = mcu_stepper.print_to_mcu_time(move_time)
|
||||
step_offset = stepper_pos - start_pos * inv_step_dist
|
||||
|
||||
# Acceleration steps
|
||||
|
@ -102,7 +108,7 @@ class PrinterExtruder:
|
|||
accel_time_offset = start_v * inv_accel
|
||||
accel_sqrt_offset = accel_time_offset**2
|
||||
accel_steps = accel_d * inv_step_dist
|
||||
count = so.step_sqrt(
|
||||
count = mcu_stepper.step_sqrt(
|
||||
mcu_time - accel_time_offset, accel_steps, step_offset
|
||||
, accel_sqrt_offset, accel_multiplier)
|
||||
stepper_pos += count
|
||||
|
@ -113,7 +119,7 @@ class PrinterExtruder:
|
|||
#t = pos/cruise_v
|
||||
cruise_multiplier = step_dist / cruise_v
|
||||
cruise_steps = cruise_d * inv_step_dist
|
||||
count = so.step_factor(
|
||||
count = mcu_stepper.step_factor(
|
||||
mcu_time, cruise_steps, step_offset, cruise_multiplier)
|
||||
stepper_pos += count
|
||||
step_offset += count - cruise_steps
|
||||
|
@ -124,7 +130,7 @@ class PrinterExtruder:
|
|||
decel_time_offset = decel_v * inv_accel
|
||||
decel_sqrt_offset = decel_time_offset**2
|
||||
decel_steps = decel_d * inv_step_dist
|
||||
count = so.step_sqrt(
|
||||
count = mcu_stepper.step_sqrt(
|
||||
mcu_time + decel_time_offset, decel_steps, step_offset
|
||||
, decel_sqrt_offset, -accel_multiplier)
|
||||
stepper_pos += count
|
||||
|
@ -136,7 +142,7 @@ class PrinterExtruder:
|
|||
accel_time_offset = retract_v * inv_accel
|
||||
accel_sqrt_offset = accel_time_offset**2
|
||||
accel_steps = -retract_d * inv_step_dist
|
||||
count = so.step_sqrt(
|
||||
count = mcu_stepper.step_sqrt(
|
||||
mcu_time - accel_time_offset, accel_steps, step_offset
|
||||
, accel_sqrt_offset, accel_multiplier)
|
||||
stepper_pos += count
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue