extruder: Calculate sane defaults for extrude only velocity and accel
Instead of requiring the user enter velocity and accel parameters for extrude only moves, calculate sane defaults from the printer's maximum velocity and accel. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
This commit is contained in:
@@ -17,7 +17,7 @@ class CartKinematics:
|
||||
self.max_z_accel = config.getfloat('max_z_accel', 9999999.9)
|
||||
self.need_motor_enable = True
|
||||
self.limits = [(1.0, -1.0)] * 3
|
||||
def set_max_jerk(self, max_xy_halt_velocity, max_accel):
|
||||
def set_max_jerk(self, max_xy_halt_velocity, max_velocity, max_accel):
|
||||
self.steppers[0].set_max_jerk(max_xy_halt_velocity, max_accel)
|
||||
self.steppers[1].set_max_jerk(max_xy_halt_velocity, max_accel)
|
||||
self.steppers[2].set_max_jerk(0., self.max_z_accel)
|
||||
|
||||
@@ -29,8 +29,7 @@ class DeltaKinematics:
|
||||
(cos(210.)*radius, sin(210.)*radius),
|
||||
(cos(330.)*radius, sin(330.)*radius),
|
||||
(cos(90.)*radius, sin(90.)*radius)]
|
||||
def set_max_jerk(self, max_xy_halt_velocity, max_accel):
|
||||
# XXX - this sets conservative values
|
||||
def set_max_jerk(self, max_xy_halt_velocity, max_velocity, max_accel):
|
||||
for stepper in self.steppers:
|
||||
stepper.set_max_jerk(max_xy_halt_velocity, max_accel)
|
||||
def build_config(self):
|
||||
|
||||
@@ -8,6 +8,7 @@ import stepper, heater, homing
|
||||
|
||||
class PrinterExtruder:
|
||||
def __init__(self, printer, config):
|
||||
self.config = config
|
||||
self.heater = heater.PrinterHeater(printer, config)
|
||||
self.stepper = stepper.PrinterStepper(printer, config, 'extruder')
|
||||
nozzle_diameter = config.getfloat('nozzle_diameter')
|
||||
@@ -17,11 +18,15 @@ class PrinterExtruder:
|
||||
'max_extrude_cross_section', 4. * nozzle_diameter**2)
|
||||
self.max_extrude_ratio = max_cross_section / filament_area
|
||||
self.max_e_dist = config.getfloat('max_extrude_only_distance', 50.)
|
||||
self.max_e_velocity = config.getfloat('max_velocity')
|
||||
self.max_e_accel = config.getfloat('max_accel')
|
||||
self.max_e_velocity = self.max_e_accel = None
|
||||
self.pressure_advance = config.getfloat('pressure_advance', 0.)
|
||||
self.need_motor_enable = True
|
||||
self.extrude_pos = 0.
|
||||
def set_max_jerk(self, max_xy_halt_velocity, max_velocity, max_accel):
|
||||
self.max_e_velocity = self.config.getfloat(
|
||||
'max_extrude_only_velocity', max_velocity * self.max_extrude_ratio)
|
||||
self.max_e_accel = self.config.getfloat(
|
||||
'max_extrude_only_accel', max_accel * self.max_extrude_ratio)
|
||||
def build_config(self):
|
||||
self.heater.build_config()
|
||||
self.stepper.set_max_jerk(9999999.9, 9999999.9)
|
||||
|
||||
@@ -179,7 +179,10 @@ class ToolHead:
|
||||
self.motor_off_time = self.reactor.NEVER
|
||||
self.flush_timer = self.reactor.register_timer(self._flush_handler)
|
||||
def build_config(self):
|
||||
self.kin.set_max_jerk(0.005 * self.max_accel, self.max_accel) # XXX
|
||||
xy_halt = 0.005 * self.max_accel # XXX
|
||||
self.kin.set_max_jerk(xy_halt, self.max_speed, self.max_accel)
|
||||
if self.extruder is not None:
|
||||
self.extruder.set_max_jerk(xy_halt, self.max_speed, self.max_accel)
|
||||
self.kin.build_config()
|
||||
# Print time tracking
|
||||
def update_move_time(self, movetime):
|
||||
|
||||
Reference in New Issue
Block a user