docs: Note systemic error introduced by interpolate setting in TMC_Drivers.md

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
This commit is contained in:
Kevin O'Connor 2021-11-28 22:01:26 -05:00
parent 92c41b8827
commit 323268ea02
2 changed files with 36 additions and 3 deletions

View File

@ -2767,7 +2767,9 @@ cs_pin:
# The default is to not use an SPI daisy chain. # The default is to not use an SPI daisy chain.
#interpolate: True #interpolate: True
# If true, enable step interpolation (the driver will internally # If true, enable step interpolation (the driver will internally
# step at a rate of 256 micro-steps). The default is True. # step at a rate of 256 micro-steps). This interpolation does
# introduce a small systemic positional deviation - see
# TMC_Drivers.md for details. The default is True.
run_current: run_current:
# The amount of current (in amps RMS) to configure the driver to use # The amount of current (in amps RMS) to configure the driver to use
# during stepper movement. This parameter must be provided. # during stepper movement. This parameter must be provided.
@ -2834,7 +2836,9 @@ uart_pin:
# UART communication. The default is to not configure any pins. # UART communication. The default is to not configure any pins.
#interpolate: True #interpolate: True
# If true, enable step interpolation (the driver will internally # If true, enable step interpolation (the driver will internally
# step at a rate of 256 micro-steps). The default is True. # step at a rate of 256 micro-steps). This interpolation does
# introduce a small systemic positional deviation - see
# TMC_Drivers.md for details. The default is True.
run_current: run_current:
# The amount of current (in amps RMS) to configure the driver to use # The amount of current (in amps RMS) to configure the driver to use
# during stepper movement. This parameter must be provided. # during stepper movement. This parameter must be provided.
@ -2946,7 +2950,9 @@ cs_pin:
#interpolate: True #interpolate: True
# If true, enable step interpolation (the driver will internally # If true, enable step interpolation (the driver will internally
# step at a rate of 256 micro-steps). This only works if microsteps # step at a rate of 256 micro-steps). This only works if microsteps
# is set to 16. The default is True. # is set to 16. Interpolation does introduce a small systemic
# positional deviation - see TMC_Drivers.md for details. The default
# is True.
run_current: run_current:
# The amount of current (in amps RMS) used by the driver during # The amount of current (in amps RMS) used by the driver during
# stepper movement. This parameter must be provided. # stepper movement. This parameter must be provided.

View File

@ -83,6 +83,33 @@ setting `stealthchop_threshold` to 999999). Unfortunately, the drivers
often produce poor and confusing results if the mode changes while the often produce poor and confusing results if the mode changes while the
motor is at a non-zero velocity. motor is at a non-zero velocity.
## TMC interpolate setting introduces small position deviation
The TMC driver `interpolate` setting may reduce the audible noise of
printer movement at the cost of introducing a small systemic
positional error. This systemic positional error results from the
driver's delay in executing "steps" that Klipper sends it. During
constant velocity moves, this delay results in a positional error of
nearly half a configured microstep (more precisely, the error is half
a microstep distance minus a 512th of a full step distance). For
example, on an axis with a 40mm rotation_distance, 200
steps_per_rotation, and 16 microsteps, the systemic error introduced
during constant velocity moves is ~0.006mm.
For best positional accuracy consider using spreadCycle mode and
disable interpolation (set `interpolate: False` in the TMC driver
config). When configured this way, one may increase the `microstep`
setting to reduce audible noise during stepper movement. Typically, a
microstep setting of `64` or `128` will have similar audible noise as
interpolation, and do so without introducing a systemic positional
error.
If using stealthChop mode then the positional inaccuracy from
interpolation is small relative to the positional inaccuracy
introduced from stealthChop mode. Therefore tuning interpolation is
not considered useful when in stealthChop mode, and one can leave
interpolation in its default state.
## Sensorless Homing ## Sensorless Homing
Sensorless homing allows to home an axis without the need for a Sensorless homing allows to home an axis without the need for a