From acd165cbea2f48812b7fd96c28b81622e5c13665 Mon Sep 17 00:00:00 2001 From: Kevin O'Connor Date: Tue, 25 Feb 2020 12:54:55 -0500 Subject: stepcompress: Implement a step+dir+step filter Some stepper motor drivers do not respond well to rapid "step + direction change + step" events. In particular, it is believed this can cause "over current" events on the tmc2208 drivers when they are in "stealthchop" mode. Detect these events and remove them from the generated step times. Signed-off-by: Kevin O'Connor --- klippy/toolhead.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'klippy/toolhead.py') diff --git a/klippy/toolhead.py b/klippy/toolhead.py index ada5f8c3..8ce0935c 100644 --- a/klippy/toolhead.py +++ b/klippy/toolhead.py @@ -1,6 +1,6 @@ # Code for coordinating events on the printer toolhead # -# Copyright (C) 2016-2019 Kevin O'Connor +# Copyright (C) 2016-2020 Kevin O'Connor # # This file may be distributed under the terms of the GNU GPLv3 license. import math, logging, importlib @@ -183,6 +183,7 @@ class MoveQueue: MIN_KIN_TIME = 0.100 MOVE_BATCH_TIME = 0.500 +SDS_CHECK_TIME = 0.001 # step+dir+step filter in stepcompress.c DRIP_SEGMENT_TIME = 0.050 DRIP_TIME = 0.100 @@ -236,7 +237,7 @@ class ToolHead: self.print_stall = 0 self.drip_completion = None # Kinematic step generation scan window time tracking - self.kin_flush_delay = 0. + self.kin_flush_delay = SDS_CHECK_TIME self.kin_flush_times = [] self.last_kin_flush_time = self.last_kin_move_time = 0. # Setup iterative solver @@ -512,7 +513,7 @@ class ToolHead: self.kin_flush_times.pop(self.kin_flush_times.index(old_delay)) if delay: self.kin_flush_times.append(delay) - new_delay = max(self.kin_flush_times + [0.]) + new_delay = max(self.kin_flush_times + [SDS_CHECK_TIME]) self.kin_flush_delay = new_delay def register_lookahead_callback(self, callback): last_move = self.move_queue.get_last() -- cgit v1.2.3-70-g09d2