Sensorless Homing
Sensorless homing uses the TMC driver's DIAG signal to detect motor stall, replacing physical limit switches.
All of the following conditions must be met:
- The motherboard supports the
DIAGfunction. - The driver supports
DIAGsignal output. - The corresponding limit switch port must not have any device connected.
- The machine structure is suitable for sensorless homing, and moving parts will not be damaged when hitting the end stops.
Motherboard Compatibility Check
| Type | Support Status | Representative Models | Operation Requirements |
|---|---|---|---|
| Class A | Default Direct Connection | Super / Gemini / CDY / E3 Series | Use the corresponding limit switch interface directly |
| Class B | Requires Jumper to Enable | D / C / Pro-X10 / Micro Series | Must install DIAG jumper cap |
| Class C | Not Supported | Fly-F407ZG | Cannot use sensorless homing function |
Confirmation Method:
- Check if the motherboard has a jumper socket labeled
DIAG. - Refer to the schematic to confirm if the
DIAGsignal from the driver interface is connected to the limit switch port. - For most motherboards,
Drive0corresponds toio0,Drive1corresponds toio1, and so on.
Class A Motherboards: No DIAG jumper, default direct connection to the corresponding limit switch port.
Class B Motherboards: DIAG jumper required.
Driver Compatibility Check
TMC5160, TMC2240, and TMC2130 usually 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 Pin | Select diag0_pin or diag1_pin | -64-63, -64 most sensitive, 63 least sensitive |
| TMC2240 | Supported | Dual Pin | Select diag0_pin or diag1_pin | -64-63, -64 most sensitive, 63 least sensitive |
| TMC2130 | Supported | Dual Pin | Select diag0_pin or diag1_pin | -64-63, -64 most sensitive, 63 least sensitive |
| TMC2208 | Not Supported | - | Cannot use sensorless homing function | - |
| TMC2660 | Not Supported | - | Cannot use sensorless homing function | - |
| LV8729 | Not Supported | - | Cannot use sensorless homing function | - |
Configuration Instructions
- Configuration needs to 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, change it tostepper_y.- On some machines, retraction during sensorless homing may cause homing to fail. 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 according to your actual motherboard.
diag_pinusually requires adding^, otherwise, homing may fail.driver_SGTHRSneeds to be tested in practice; 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 according to your actual motherboard.
- Refer to the product manual to confirm whether to use
diag0_pinordiag1_pin. driver_SGTneeds to be tested in practice; -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 according to your actual motherboard.
- Refer to the product manual to confirm whether to use
diag0_pinordiag1_pin. driver_SGTneeds to be tested in practice; -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 according to your actual motherboard.
- Refer to the product manual to confirm whether to use
diag0_pinordiag1_pin. driver_SGTneeds to be tested in practice; -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, the print head must be moved to the center of the machine, and be prepared to execute M112 emergency stop at any time. Do not test at high speed 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, execute immediately:
M112
At this point, check the corresponding DIAG pin wiring, jumper cap, and configuration.
Step 3: Gradually Decrease 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 that allows the carriage to move steadily to the end stop and stop.
Step 4: Write Back Configuration
After finding the appropriate value through testing, write it back to the corresponding driver configuration in printer.cfg.
If there is still a noticeable impact sound, clicking sound, or unstable triggering 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 the axis is unsuitable for sensorless homing.