Sensorless Homing
Sensorless Homing uses the DIAG signal from TMC drivers to detect motor stall, replacing physical endstop switches.
The following conditions must all be met:
- The motherboard supports the
DIAGfunction. - The driver supports
DIAGsignal output. - No device should be connected to the corresponding endstop port.
- The machine structure is suitable for sensorless homing, and moving parts will not be damaged when hitting the endpoints.
Motherboard Compatibility Check
| Type | Support | Representative Models | Operation Requirements |
|---|---|---|---|
| Class A | Directly connected by default | Super / Gemini / CDY / E3 series | Use the corresponding endstop interface directly |
| Class B | Requires jumper to enable | D / C / Pro-X10 / Micro series | Must install the DIAG jumper cap |
| Class C | Not supported | Fly-F407ZG | Cannot use sensorless homing |
Confirmation method:
- Check if the motherboard has a jumper labeled
DIAG. - Refer to the schematic to confirm if the
DIAGsignal from the driver interface is connected to the endstop port. - On most motherboards,
Drive0corresponds toio0,Drive1corresponds toio1, and so on.
Class A motherboards: No DIAG jumper, directly connected to the corresponding endstop port by default.
Class B motherboards: Requires using the DIAG jumper.
Driver Compatibility Check
TMC5160, TMC2240, and TMC2130 typically have two DIAG pins. Please refer to the corresponding product documentation or consult customer service to confirm which pin to use.
| Driver Model | Compatibility | DIAG Pin | Configuration Requirement | Sensitivity Range |
|---|---|---|---|---|
| TMC2209 | Supported | Single pin | Use diag_pin directly | 0-255, 255 most sensitive, 0 least sensitive |
| TMC5160 | Supported | Dual pins | Select diag0_pin or diag1_pin | -64-63, -64 most sensitive, 63 least sensitive |
| TMC2240 | Supported | Dual pins | Select diag0_pin or diag1_pin | -64-63, -64 most sensitive, 63 least sensitive |
| TMC2130 | Supported | Dual pins | Select diag0_pin or diag1_pin | -64-63, -64 most sensitive, 63 least sensitive |
| TMC2208 | Not supported | - | Cannot use sensorless homing | - |
| TMC2660 | Not supported | - | Cannot use sensorless homing | - |
| LV8729 | Not supported | - | Cannot use sensorless homing | - |
Configuration Notes
- Configuration must be modified according to the actual driver model and axis name.
tmc2209intmc2209_stepper_xneeds to be changed to the corresponding driver model.xinstepper_xrepresents the X axis. If configuring the Y axis, it needs to be changed tostepper_y.- On some machines, retracting during sensorless homing can cause homing failure. Set
homing_retract_distto0.
Reference Configuration
- TMC2209 Reference Configuration
- TMC5160 Reference Configuration
- TMC2130 Reference Configuration
- TMC2240 Reference Configuration
Notes:
- The pins below are for reference only. Modify them according to your actual motherboard.
diag_pinusually requires adding^, otherwise it may cause homing failure.driver_SGTHRSneeds to be tested empirically. 255 is most sensitive, 0 is least sensitive.
[stepper_x]
endstop_pin: tmc2209_stepper_x:virtual_endstop
position_endstop: 0
homing_retract_dist: 0
[tmc2209 stepper_x]
diag_pin: ^PD9
driver_SGTHRS: 100
Notes:
- The pins below are for reference only. Modify them according to your actual motherboard.
- Check the product manual to confirm whether to use
diag0_pinordiag1_pin. driver_SGTneeds to be tested empirically. -64 is most sensitive, 63 is least sensitive.
[stepper_y]
endstop_pin: tmc5160_stepper_y:virtual_endstop
position_endstop: 0
homing_retract_dist: 0
[tmc5160 stepper_y]
diag1_pin: ^!PD9
driver_SGT: 1
Notes:
- The pins below are for reference only. Modify them according to your actual motherboard.
- Check the product manual to confirm whether to use
diag0_pinordiag1_pin. driver_SGTneeds to be tested empirically. -64 is most sensitive, 63 is least sensitive.
[stepper_y]
endstop_pin: tmc2130_stepper_y:virtual_endstop
position_endstop: 0
homing_retract_dist: 0
[tmc2130 stepper_y]
diag1_pin: ^!PD9
driver_SGT: 1
Notes:
- The pins below are for reference only. Modify them according to your actual motherboard.
- Check the product manual to confirm whether to use
diag0_pinordiag1_pin. driver_SGTneeds to be tested empirically. -64 is most sensitive, 63 is least sensitive.
[stepper_x]
endstop_pin: tmc2240_stepper_x:virtual_endstop
position_endstop: 0
homing_retract_dist: 0
[tmc2240 stepper_x]
diag1_pin: ^!PD9
driver_SGT: 1
Testing Sensitivity
When testing sensorless homing, always move the print head to the center of the machine and be ready to execute an M112 emergency stop. Do not test at high speeds or unattended.
Step 1: Set Maximum Sensitivity
TMC2209:
SET_TMC_FIELD STEPPER=stepper_x FIELD=SGTHRS VALUE=255
TMC5160 / TMC2240 / TMC2130:
SET_TMC_FIELD STEPPER=stepper_x FIELD=sgt VALUE=-64
Step 2: Perform Single Axis Homing
G28 X
If the axis does not start moving, moves abnormally, or cannot stop, immediately execute:
M112
In this case, check the corresponding DIAG pin wiring, jumper caps, and configuration.
Step 3: Gradually Reduce Sensitivity
- TMC2209: Gradually decrease
SGTHRS. - TMC5160 / TMC2240 / TMC2130: Gradually increase
sgt. - After each adjustment, re-execute
SET_TMC_FIELDand the single-axis homing test.
The goal is to find the highest reliable sensitivity at which the carriage moves smoothly to the endpoint and stops.
Step 4: Write Back to Configuration
After finding the appropriate value through testing, write that value back into the corresponding driver configuration in printer.cfg.
If there is still significant impact noise, clicking sounds, or unreliable triggering even at maximum sensitivity, it usually indicates that the homing speed is too low, the driver current is too low, there is abnormal mechanical resistance, or that specific axis is not suitable for sensorless homing.