diff options
Diffstat (limited to 'klippy/extruder.py')
-rw-r--r-- | klippy/extruder.py | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/klippy/extruder.py b/klippy/extruder.py index fb726fca..8b66dad6 100644 --- a/klippy/extruder.py +++ b/klippy/extruder.py @@ -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 |