aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--docs/Config_Reference.md12
-rw-r--r--docs/TMC_Drivers.md27
2 files changed, 36 insertions, 3 deletions
diff --git a/docs/Config_Reference.md b/docs/Config_Reference.md
index 75a9de52..589deb83 100644
--- a/docs/Config_Reference.md
+++ b/docs/Config_Reference.md
@@ -2767,7 +2767,9 @@ cs_pin:
# The default is to not use an SPI daisy chain.
#interpolate: True
# 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:
# The amount of current (in amps RMS) to configure the driver to use
# during stepper movement. This parameter must be provided.
@@ -2834,7 +2836,9 @@ uart_pin:
# UART communication. The default is to not configure any pins.
#interpolate: True
# 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:
# The amount of current (in amps RMS) to configure the driver to use
# during stepper movement. This parameter must be provided.
@@ -2946,7 +2950,9 @@ cs_pin:
#interpolate: True
# If true, enable step interpolation (the driver will internally
# 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:
# The amount of current (in amps RMS) used by the driver during
# stepper movement. This parameter must be provided.
diff --git a/docs/TMC_Drivers.md b/docs/TMC_Drivers.md
index 2f456d4a..581fe2b2 100644
--- a/docs/TMC_Drivers.md
+++ b/docs/TMC_Drivers.md
@@ -83,6 +83,33 @@ setting `stealthchop_threshold` to 999999). Unfortunately, the drivers
often produce poor and confusing results if the mode changes while the
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 allows to home an axis without the need for a