diff options
author | Kevin O'Connor <kevin@koconnor.net> | 2017-01-02 18:58:45 -0500 |
---|---|---|
committer | Kevin O'Connor <kevin@koconnor.net> | 2017-01-03 18:18:30 -0500 |
commit | c87c090264fb9fd91bc87fbc63a05c5e53e3c484 (patch) | |
tree | 5f9a4dda5c129af06f436ff1e96b030103c16553 /klippy | |
parent | b26922978a1b7d0994e90572dcec6af120987b82 (diff) | |
download | kutter-c87c090264fb9fd91bc87fbc63a05c5e53e3c484.tar.gz kutter-c87c090264fb9fd91bc87fbc63a05c5e53e3c484.tar.xz kutter-c87c090264fb9fd91bc87fbc63a05c5e53e3c484.zip |
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>
Diffstat (limited to 'klippy')
-rw-r--r-- | klippy/cartesian.py | 2 | ||||
-rw-r--r-- | klippy/delta.py | 3 | ||||
-rw-r--r-- | klippy/extruder.py | 9 | ||||
-rw-r--r-- | klippy/toolhead.py | 5 |
4 files changed, 13 insertions, 6 deletions
diff --git a/klippy/cartesian.py b/klippy/cartesian.py index b2bd9661..636e9284 100644 --- a/klippy/cartesian.py +++ b/klippy/cartesian.py @@ -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) diff --git a/klippy/delta.py b/klippy/delta.py index f8f85c02..041b6ce7 100644 --- a/klippy/delta.py +++ b/klippy/delta.py @@ -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): diff --git a/klippy/extruder.py b/klippy/extruder.py index 9e3d8143..7e314a7b 100644 --- a/klippy/extruder.py +++ b/klippy/extruder.py @@ -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) diff --git a/klippy/toolhead.py b/klippy/toolhead.py index 614ab4b1..922749ec 100644 --- a/klippy/toolhead.py +++ b/klippy/toolhead.py @@ -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): |