TMC2209 Sensorless Homing

Basic Information:

Printer Model: Ender 3V2 w/Microswiss Direct Drive
MCU / Printerboard: Octopus v1.1
Host / SBC: ?? Pi4 Mainsail
klippy.log

Fill out above information and in all cases attach your klippy.log file (use zip to compress it, if too big). Pasting your printer.cfg is not needed
Be sure to check our “Knowledge Base” Category first. Most relevant items, e.g. error messages, are covered there

Describe your issue:

I am trying to get sensorless homing to work, have tried multiple times not sure what i am missing it starts to move sometimes stops before making it to ends, other times it just grinds to death…
May just have get the physical endstops to work

bltouch is not working properly using CRTouch, wiring is proper according to pinouts and the crtouch pins, it tries to initialize but always fails verifying probe state.

Any help would be great on either subjects

klippy_TMC2209.log (967.9 KB)

Hello @IR_TISM !

For the sensorless homing, have you seen this?

https://www.klipper3d.org/TMC_Drivers.html#sensorless-homing

For the CRtouch is no BLtouch, you may have a look on this:

https://www.klipper3d.org/BLTouch.html#bl-touch-clones

Yes to the TMC2209, that is what i am attempting to follow. But no matter how high i set the sensitivity it never triggers a stop? I failed to mention tbat my jumpers for all the DIAG pins are removed, and the jumpers for SPI/UART mode for each driver are also all set to be in UART mode according to BTT’'s documentation.

What values are you using for driver_SGTHRS: in your config?

First off, I recommend that you use a set of macros like this for sensorless homing:

[gcode_macro global] ### Global Variables 
variable_xy_run_current:  0.8
variable_xy_home_current: 0.6
gcode:

#### Macros to implement sensorless homing
[gcode_macro _HOME_X]
gcode:
    SET_TMC_CURRENT STEPPER=stepper_x CURRENT={printer["gcode_macro global"].xy_home_current}
    SET_TMC_CURRENT STEPPER=stepper_y CURRENT={printer["gcode_macro global"].xy_home_current}

    G4 P500                                          # Wait for StallGuard registers to clear

    G28 X

    SET_TMC_CURRENT STEPPER=stepper_x CURRENT={printer["gcode_macro global"].xy_run_current}
    SET_TMC_CURRENT STEPPER=stepper_y CURRENT={printer["gcode_macro global"].xy_run_current}
    
    G91                                              # Move away to centre of build surface
    G1 X125 F1200                                    # Value Specific to toolhead

[gcode_macro _HOME_Y]
gcode:
    SET_TMC_CURRENT STEPPER=stepper_x CURRENT={printer["gcode_macro global"].xy_home_current}
    SET_TMC_CURRENT STEPPER=stepper_y CURRENT={printer["gcode_macro global"].xy_home_current}

    G4 P500                                          # Wait for StallGuard registers to clear

    G28 Y

    SET_TMC_CURRENT STEPPER=stepper_x CURRENT={printer["gcode_macro global"].xy_run_current}
    SET_TMC_CURRENT STEPPER=stepper_y CURRENT={printer["gcode_macro global"].xy_run_current}
    
    G91                                              # Move away to centre of build surface
    G1 Y-140 F1200                                   # Value Specific to toolhead

[homing_override]
axes: xyz                                            
gcode:
  {% set home_all = 'X' not in params and 'Y' not in params and 'Z' not in params %}

  {% if home_all or 'X' in params %}
    _HOME_X
  {% endif %}
  
  {% if home_all or 'Y' in params %}
    _HOME_Y
  {% endif %}
  
  {% if home_all or 'Z' in params %}
    G28 Z
    G1  Z10
  {% endif %}

Note that the ...run_current is more than the ...home_current so that when you collide it’s not as violent and there will be less tension on your belts.

Next, start with an SGTHRS value of 128 and just do homing on the X axis. If there’s no collision, decrease the SGTHRS value by 20 or so and continue until sensorless homing works.

Then, keep decreasing the SGTHRS value (maybe by 10 or so) until sensorless homing engages immediately and the toolhead doesn’t move. This is your lower limit.

Now, start increasing your SGTHRS value until sensorless homing no longer works. This is your upper limit.

The final value for your X axis SGTHRS value is the average of the two ((upper limit - 'lower limit`) / 2).

Then repeat for the Y axis (you have a bed slinger so the value is completely different and you have to do the process over; if the printer was a CoreXY, then there would be a good chance that the Y axis SGTHRS value is the same as the X axis SGTHRS value).

Good luck!

1 Like

So i have tried starting at 255 for “driver_SGTHRS:”

I will try those macros but it just doesnt stop when it hits no matter what i change in there as far as an “endstop” triggering.
How can i verify stallguard/virtual stops are working without just beating the hell outa my belts?

Maybe there is something wrong with my board or drivers? UART jumpers are correct, the DIAG jumpers removed…
Just seems strange, that config looks correct to me i am goin insane!

Reread what I wrote.

An important aspect of the macros is to reduce the current supplied to the steppers which reduces the torque exerted by them.

Secondly, start at 128 and follow the instructions. In my own printers, the SGTHRS values are generally around 60 and 70.

The sensitivity value really isn’t very intuitive and you can’t put in what you think is a best guess.

Reduce the current to the motors and then run the homing macros, starting with your X axis first.

Good luck!

G28 X with your macro’s with updating the printer config SGTHRS values from 128 to 8 by 20 each time, it never made it a difference, it continues to not trigger the endstop? I am very confused BTT TMC2209 V1.3 Steppers, i realized i was supposed to have the jumper on the DIAG pin INSTALLED, this still proved no difference. Not sure where even else to look at this point?

So after fixing the jumper pin and setting the “!” to my “dir_pin:” setting for x i was able to tune the sensorless homing. I was seeing it trying to go center of the bed and crashing not that virtual endstop wasnt triggering, i would like to write a console message “Virtual Endstop Triggered” somehow would be real nice…

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.