aboutsummaryrefslogtreecommitdiffstats
path: root/klippy/extruder.py
diff options
context:
space:
mode:
authorKevin O'Connor <kevin@koconnor.net>2016-11-04 22:43:50 -0400
committerKevin O'Connor <kevin@koconnor.net>2016-11-05 11:06:58 -0400
commit345fc41482098ef9f42988008a4b7ef4c08b186d (patch)
tree315ac638f0e70424edfd9a11eb87b8acde3bb736 /klippy/extruder.py
parent93dd310add46272f02b18ddd7f9b2f553d6e7ee0 (diff)
downloadkutter-345fc41482098ef9f42988008a4b7ef4c08b186d.tar.gz
kutter-345fc41482098ef9f42988008a4b7ef4c08b186d.tar.xz
kutter-345fc41482098ef9f42988008a4b7ef4c08b186d.zip
extruder: Don't do pressure advance on velocity changes due to cornering
Due to the lookahead, small changes in the direction of the toolhead cause minor changes in toolhead velocity. These "cornering" velocity changes cause the current extruder code to trigger pressure advance and its associated pressure retract. This causes the extruder to rapidly "jerk" the filament. This code change updates the extruder to detect velocity changes due solely to cornering and avoid pressure advance. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Diffstat (limited to 'klippy/extruder.py')
-rw-r--r--klippy/extruder.py11
1 files changed, 9 insertions, 2 deletions
diff --git a/klippy/extruder.py b/klippy/extruder.py
index 4abbb7dd..12f43141 100644
--- a/klippy/extruder.py
+++ b/klippy/extruder.py
@@ -59,8 +59,15 @@ class PrinterExtruder:
prev_pressure_d += extra_accel_d
# Update decel and retract parameters when decelerating
if decel_t:
- npd = move.end_v * move_extrude_r * self.pressure_advance
- extra_decel_d = prev_pressure_d - npd
+ if move.corner_min:
+ npd = move.corner_max*move_extrude_r * self.pressure_advance
+ extra_decel_d = prev_pressure_d - npd
+ if move.end_v > move.corner_min:
+ extra_decel_d *= ((move.cruise_v - move.end_v)
+ / (move.cruise_v - move.corner_min))
+ else:
+ npd = move.end_v * move_extrude_r * self.pressure_advance
+ extra_decel_d = prev_pressure_d - npd
if extra_decel_d > 0.:
extra_decel_v = extra_decel_d / decel_t
decel_v -= extra_decel_v