stepper: Change default max_error from 50us to 25us

Change the default compression error window (max_error) from 50us to
25us - it's common for stepper motor drivers to have 30us for their
"pwm fixed off time" and it would be good for the steps to be
scheduled within that time.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
This commit is contained in:
Kevin O'Connor 2016-12-26 13:15:37 -05:00
parent 800d53db6a
commit f46bc0ef04
2 changed files with 6 additions and 7 deletions

View File

@ -7,12 +7,11 @@ compelling features:
stepper motor, it compresses those events, transmits them to the stepper motor, it compresses those events, transmits them to the
micro-controller, and then the micro-controller executes each event micro-controller, and then the micro-controller executes each event
at the requested time. Each stepper event is scheduled with a at the requested time. Each stepper event is scheduled with a
precision of no less than 50 micro-seconds. The software does not precision of 25 micro-seconds or better. The software does not use
use kinematic estimations (such as the Bresenham algorithm) - kinematic estimations (such as the Bresenham algorithm) - instead it
instead it calculates precise step times based on the physics of calculates precise step times based on the physics of acceleration
acceleration and the physics of the machine kinematics. More precise and the physics of the machine kinematics. More precise stepper
stepper movement translates to quieter and more stable printer movement translates to quieter and more stable printer operation.
operation.
* Best in class performance. Klipper is able to achieve high stepping * Best in class performance. Klipper is able to achieve high stepping
rates on both new and old micro-controllers. Even an old 8bit AVR rates on both new and old micro-controllers. Even an old 8bit AVR

View File

@ -51,7 +51,7 @@ class PrinterStepper:
self.min_stop_interval = (math.sqrt(3.*inv_max_step_accel + jc**2) self.min_stop_interval = (math.sqrt(3.*inv_max_step_accel + jc**2)
- math.sqrt(inv_max_step_accel + jc**2)) - math.sqrt(inv_max_step_accel + jc**2))
def build_config(self): def build_config(self):
max_error = self.config.getfloat('max_error', 0.000050) max_error = self.config.getfloat('max_error', 0.000025)
step_pin = self.config.get('step_pin') step_pin = self.config.get('step_pin')
dir_pin = self.config.get('dir_pin') dir_pin = self.config.get('dir_pin')
min_stop_interval = max(0., self.min_stop_interval - max_error) min_stop_interval = max(0., self.min_stop_interval - max_error)