Sensorless Homing Calibration Issue

Hey guys, I was wondering if anyone has experienced this strange issue I have been having trying to set up sensorless homing for these relatively miniature lead screw steppers. So it seems to home all fine when starting the homing from a distance from the boundary but then as soon as I come to do it again from the same distance it seems to just immediately stall and not work in the same way it would have just worked. The only thing I can think of as being a culprit is the motor not being secured down as well as it should but I have even tried while holding it down in the same way and still just get this inconsistent behaviour.

Both of the motors I’m trying to fix have a lead screw pitch of 0.5 mm and have a run current of about 300-500 mA so I imagine its quite hard to accurately detect the spike in back emf. I have tried reducing and then slightly increasing homing speeds and also played around with the stall guard thresholds but I just cant seem to get any consistent homing behaviour.

I had a look at the logs and cant really see anything out of the ordinary. as it does home but just not with a repeatable sensitivity.

I’m ripping my hair out trying to find this sweet spot in the settings but just seems like im always running into a dead end each time I think I got it right.

It’s my understanding that it’s extremely hard to get sensorless homing working with a lead screw due to backlash and/or anti-backlash nuts which “soften” the stop and attenuates the hard stop which causes the back EMF.

You might want to try different anti-backlash solutions used for CNC machines which do a lot to eliminate backlash when the direction changes and the travel end is reached but I think you’ll still have issues.

In general, when I set up sensorless homing, I start with the current being one half of the normal run current, with the expectation that the back EMF of hitting the hard stop will be more significant. I’m pointing this out because you’re not indicating that you’re using current as one of your variables.

Can I point out that when you were setting up the post, you were asked a series of questions that you’ve deleted? I’m noting this because it would have been useful to know which drivers you’re using; I’ve found that TMC2209’s have a valid Stallguard range of 20 to 30 units (and I pick the one closest to the middle) while TMC2240s only have a valid StallGuard range of 3 to 4 units. I believe this is due to the TMC2240 running StallGuard2 in Klipper vs StallGuard4 for the TMC2209.

1 Like

Hi Myke,

My apologies for not specifying the driver I’m using the TMC5160tpro drivers so I believe I’ll be using StallGuard2. I have also been tweaking run current slightly as well by slightly increasing and decreasing the run current within the range specified in the motor data sheets. I can give halving it another go and see how it plays out.

For threshold, I use the SGT value that falls in between -64 to 63. I’ve usually found decent values around 5-10 but have yet to find a value that works for all case scenarios and always seems to stall immediately after it homes properly the first time.

Also, what do you mean by driver having a stallguard range in units? How different is this to the SGT value in using with the TMC5160?

What I’m calling “units”, you’re calling “values”.

Can I ask why you’re using the TMC5160 when you’re only working with 300-500mA? That’s a bit more than one tenth of the rated current for the module. With the 0.075Ω sense resistors on the module, I don’t know if you’re going to get a high enough back EMF to trigger StallGuard reliably.

I’m not sure what I can recommend for you (maybe somebody else here can provide more or better ideas).

  1. Could you try another stepper module and one that can provide less current (which should have a more sensitive StallGuard implementation)?

  2. Increase the value of the sense resistors on the TMC5160T to increase their sensitivity to back EMF (this will reduce the overall maximum current output but, as noted above, this will not be an issue).

I was using it as it just happens to be the one I was using for the larger motors and did not realise it would matter much. I first tired increasing the value of the sense resistor on the TMC5160T to 0.5 (not sure if I went too high) and then the motors started getting really hot and nothing changed in the strange pattern I saw. After reverting the resistance I now keep running into this error in the logs: TMC ‘stepper_x’ reports GSTAT: 00000005 reset=1(Reset) uv_cp=1(Undervoltage!)
TMC ‘stepper_x’ reports GSTAT: 00000000

I have swapped out the tmc drivers and even tried using a 2209 I actually found in my inventory and still same issue. I even disconnected the motor from the stepper_x slot and still the error persists so I’m afraid messing around with the sense reisstor has damaged my board?

First off, when you started this thread, you were asked to provide your system information and your klippy.log - you haven’t done that so I have no idea what your main controller board is and what’s happening.

Now, having said that, you probably haven’t damaged your main controller board although we can figure that out as we go along.

When you changed the sense resistor, did you a) change both on the driver and b) change the sense_resistor: parameter for the TMC5160 configuration statement? I suspect that the second change was missed, Klipper not having the latest information did not configure the driver correctly for the desired current.

Honestly, that’s probably 'way too high. I was going to suggest 0.1Ω, which is the next step up in the example values specified in the datasheet:

Next steps:

  1. Could you describe your printer. This includes describing the architecture (along with how you are setting the motion of the different parts - again, I’m not sure why you’re using lead screws for X & Y), what is the main controller board and any toolhead controller boards, what are the driver modules you’re using along with what power supplies.

  2. Your klippy.log and any notes you have regarding your experiments and changes you’ve made.

  3. Do a continuity check from the stepper module motor pins to the JST XH connector pins to see if any damage was done by changing the TMC5160 sense resistors. I don’t think that’s possible but it will take a minute to check as that would explain why the TMC2209 drivers don’t work when put in the sockets.

Hi Myke,

So I’m not actually working with a printer but rather just using Klipper at the moment for a device with some width adjustment mechanisms so that is why I’m using a lead screw on the x and y axis which isn’t typically customary. I am using a MANTA M8P V2.0 with the TMC5160Tpro drivers and is being powered by the board 24V power supply.

Silly me so I though changing the sense resistor value on the Klipper config would suffice and did not realise you have to physically resolder the new resistor value so perhaps that caused the damage. I’ll go onto testing the continuity from the driver to the JST XH connector pins as I suspect the issue is from there as I was still able to detect continuity between the JST connector pins and the motor. However my motors are definitely damaged after that as I tried to run them on another board that was fine and still no response so looks like setting the resistance way too high damaged them.

I hope I can least recover the board but seems like it will be difficult as it has been traced down to something internal since the undervoltage error happens even without any drivers inserted: TMC ‘stepper_x’ reports GSTAT: 00000005 reset=1(Reset) uv_cp=1(Undervoltage!)
TMC ‘stepper_x’ reports GSTAT: 00000000. Everything else in the logs is just standard checks.

If you don’t have a driver module (good or bad) installed, then you can’t rely on the Klipper error telling you anything meaningful - as far as I know, there are no TMC driver communications presence checks so what you’re seeing is an error when the specified and configured driver is read and the returns values are interpreted as errors.

Going forward, could you:

  1. Explain exactly what you are doing along with describing the apparatus you have. What may seem obvious to you isn’t necessarily the same for somebody else.

  2. Provide ALL electronic records of what you are doing and what are the SSH responses as well as what’s on the Klipper console. The klippy.log has a lot of information in it and it’s the best record available of what’s happening in the system. I’ve found it to be incredibly useful when I’m making changes and things don’t work as expected - the answer to what’s happening is usually in the klippy.log. Please always provide it.

  3. Ask questions to make sure you absolutely understand what’s happening. When I suggested that you change the sense resistors, it didn’t occur to me that you would change the sense_resistor: parameter in the [tmc5160 printer.cfg statement.

Good news looks like the error went away and my MANTA board is fully functional! I must have had the tmc2209 configuration running but had jumpers for SPI still in or was just Klipper stuck in the error state when I was trying to run the motors that had been shorted from the sense resistor change mistake.

Definitely will take note of the tips you have suggested going forward in my troubleshooting attempts. Will let you know how I go when I test the steppers with the tmc2209 driver. Just waiting on new ones to come in since I damaged them.

1 Like

Just while on the subject, I also was wondering from your experience, what is the clearest way to determine if a tmc driver is faulty with a multimeter? Is checking for continuity between VM and GND and VIO and GND usually sufficient? Logs also usually would show short to supply or undervoltage error but was wondering how to physially rule out the driver as being faulty when troubleshooting.

I’ve ben wracking my brain trying to think of when I’ve had a blown TMC driver and, I don’t think I’ve ever had one on a 3D printer. In a previous project, years ago, I worked with TMC2225s and I know I killed a few but I can’t remember if there was any easy way to identify if they were functional other than not being able to communicate with them.

Sorry.

No worries thanks for the insight anyways.

Hey Myke, so good news looks like setting an appropriate homing speed (up to double the rotation distance per second) on a TMC2209 with default sense resistor (110 mOhm) did the trick thankfully. I am trying this on a lead screw actuator with a pitch of 2 mm and rms current of 0.6 I had in my inventory while waiting for new smaller actuators to come in.

Now I was wondering if it is possible to home even faster while ensuring reliability in detecting the stall and edge spike in voltage as it does take quite some time to home so was hoping for user experience sake in the mechanism I am prototyping it would be more efficient.

What I have done so far is implement a macro in the Klipper config file that temporarily sets the acceleration to very low values (tried 1-10 mm/s^2) to try and compensate for higher velocities (been trying 10-15 mm/s). However this has not allowed me to replicate the clean stall detection I managed to achieve with the lower velocities unfortunately.

The klipper config for this stepper, the driver and macro is as follows:

Motor1

stepper_x

step_pin: PE6
dir_pin: !PE5
enable_pin: !PC14
microsteps: 16
rotation_distance: 2
endstop_pin: tmc2209_stepper_x:virtual_endstop
position_endstop: 0
position_max: 135
homing_speed: 15
homing_retract_dist: 0

tmc2209 stepper_x

uart_pin: PC13
diag_pin: ^PF4
run_current: 0.3
hold_current: 0.1
stealthchop_threshold: 999999
interpolate: false
sense_resistor: 0.110
driver_SGTHRS: 75 # tune this (0..255, where 255 is most sensitive)

gcode_macro HOME_X_SMOOTH_FAST

gcode:

#Fast homing speed with low accel during homing, then restore limits

{% set mv = printer.toolhead.max_velocity %}
{% set ma = printer.toolhead.max_accel %}

SET_VELOCITY_LIMIT ACCEL=2

G28 X

Restore normal limits

SET_VELOCITY_LIMIT VELOCITY={mv} ACCEL={ma}

I even tried doing an approach that involved a non-zero retracting distance and second homing speed. The approach i was trying is essentially:

fast first touch + slow second touch”

  • First pass: faster speed, low accel → gets to the stop quickly without nasty spikes.

  • Retract a small distance.

  • Second pass: slower speed, low accel → gives a clean, repeatable trigger point.

However, unfortunately the same outcome as approach 1. Attached are the logs I would see which just showcases basic endstop not triggered message. Note that steppers y, z and z1 not initailising is just because I have no motors or drivers currently plugged in for those motors but has not semed to affect it as I got successful sensorless homing even with these messages.

mcu ‘mcu’: Starting serial connect
webhooks client 140736365581648: New connection
webhooks client 140736365581648: Client info {‘program’: ‘Moonraker’, ‘version’: ‘v0.9.3-130-g5b92e52’}
Loaded MCU ‘mcu’ 133 commands (v0.13.0-452-g8dd798eb / gcc: (15:14.2.rel1-1) 14.2.1 20241119 binutils: (2.44-3+23+b2) 2.44)
MCU ‘mcu’ config: ADC_MAX=4095 BUS_PINS_i2c1_PB6_PB7=PB6,PB7 BUS_PINS_i2c1_PB8_PB9=PB8,PB9 BUS_PINS_i2c2_PB10_PB11=PB10,PB11 BUS_PINS_i2c3_PA8_PC9=PA8,PC9 BUS_PINS_spi1=PA6,PA7,PA5 BUS_PINS_spi1a=PB4,PB5,PB3 BUS_PINS_spi2=PB14,PB15,PB13 BUS_PINS_spi2a=PC2,PC3,PB10 BUS_PINS_spi2b=PI2,PI3,PI1 BUS_PINS_spi3a=PC11,PC12,PC10 BUS_PINS_spi4=PE13,PE14,PE12 BUS_PINS_spi5=PF8,PF9,PF7 BUS_PINS_spi5a=PH7,PF11,PH6 BUS_PINS_spi6=PG12,PG14,PG13 CLOCK_FREQ=520000000 MCU=stm32h723xx PWM_MAX=257 RESERVE_PINS_USB=PA11,PA12 RESERVE_PINS_crystal=PH0,PH1 STATS_SUMSQ_BASE=256 STEPPER_STEP_BOTH_EDGE=1
Configured MCU ‘mcu’ (1024 moves)
TMC stepper_y failed to init: Unable to write tmc spi ‘stepper_y’ register GLOBALSCALER
TMC stepper_z failed to init: Unable to write tmc spi ‘stepper_z’ register GLOBALSCALER
TMC stepper_z1 failed to init: Unable to write tmc spi ‘stepper_z1’ register GLOBALSCALER
webhooks: registering remote method ‘shutdown_machine’ for connection id: 140736365581648
webhooks: registering remote method ‘reboot_machine’ for connection id: 140736365581648
webhooks: registering remote method ‘pause_job_queue’ for connection id: 140736365581648
webhooks: registering remote method ‘start_job_queue’ for connection id: 140736365581648
Stats 4747.6: gcodein=0 mcu: mcu_awake=0.000 mcu_task_avg=0.000000 mcu_task_stddev=0.000000 bytes_write=1829 bytes_read=5795 bytes_retransmit=9 bytes_invalid=0 send_seq=165 receive_seq=165 retransmit_seq=2 srtt=0.001 rttvar=0.000 rto=0.025 ready_bytes=22 upcoming_bytes=0 freq=520029811 print_time=3404.226 buffer_time=0.228 print_stall=0 sysload=0.38 cputime=0.305 memavail=1477808
Stats 4748.6: gcodein=0 mcu: mcu_awake=0.000 mcu_task_avg=0.000000 mcu_task_stddev=0.000000 bytes_write=1862 bytes_read=5816 bytes_retransmit=9 bytes_invalid=0 send_seq=167 receive_seq=167 retransmit_seq=2 srtt=0.001 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=520010657 print_time=3404.226 buffer_time=0.000 print_stall=0 sysload=0.38 cputime=0.306 memavail=1478368
Stats 4749.6: gcodein=0 mcu: mcu_awake=0.001 mcu_task_avg=0.000003 mcu_task_stddev=0.000007 bytes_write=1868 bytes_read=5847 bytes_retransmit=9 bytes_invalid=0 send_seq=168 receive_seq=168 retransmit_seq=2 srtt=0.001 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=520008203 print_time=3404.226 buffer_time=0.000 print_stall=0 sysload=0.35 cputime=0.307 memavail=1479888
Stats 4750.6: gcodein=0 mcu: mcu_awake=0.001 mcu_task_avg=0.000003 mcu_task_stddev=0.000007 bytes_write=1874 bytes_read=5863 bytes_retransmit=9 bytes_invalid=0 send_seq=169 receive_seq=169 retransmit_seq=2 srtt=0.001 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=520006236 print_time=3404.226 buffer_time=0.000 print_stall=0 sysload=0.35 cputime=0.308 memavail=1481712
Stats 4751.6: gcodein=0 mcu: mcu_awake=0.001 mcu_task_avg=0.000003 mcu_task_stddev=0.000007 bytes_write=1880 bytes_read=5879 bytes_retransmit=9 bytes_invalid=0 send_seq=170 receive_seq=170 retransmit_seq=2 srtt=0.001 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=520004413 print_time=3404.226 buffer_time=0.000 print_stall=0 sysload=0.35 cputime=0.310 memavail=1483072
Stats 4752.6: gcodein=0 mcu: mcu_awake=0.001 mcu_task_avg=0.000003 mcu_task_stddev=0.000007 bytes_write=1886 bytes_read=5895 bytes_retransmit=9 bytes_invalid=0 send_seq=171 receive_seq=171 retransmit_seq=2 srtt=0.001 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=520003932 print_time=3404.226 buffer_time=0.000 print_stall=0 sysload=0.35 cputime=0.312 memavail=1483392
Stats 4753.6: gcodein=0 mcu: mcu_awake=0.001 mcu_task_avg=0.000003 mcu_task_stddev=0.000007 bytes_write=1892 bytes_read=5911 bytes_retransmit=9 bytes_invalid=0 send_seq=172 receive_seq=172 retransmit_seq=2 srtt=0.001 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=520002772 print_time=3404.226 buffer_time=0.000 print_stall=0 sysload=0.35 cputime=0.313 memavail=1483536
Stats 4754.6: gcodein=0 mcu: mcu_awake=0.000 mcu_task_avg=0.000001 mcu_task_stddev=0.000001 bytes_write=1898 bytes_read=5940 bytes_retransmit=9 bytes_invalid=0 send_seq=173 receive_seq=173 retransmit_seq=2 srtt=0.001 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=520001345 print_time=3404.226 buffer_time=0.000 print_stall=0 sysload=0.32 cputime=0.315 memavail=1480624
Stats 4755.6: gcodein=0 mcu: mcu_awake=0.000 mcu_task_avg=0.000001 mcu_task_stddev=0.000001 bytes_write=1904 bytes_read=5956 bytes_retransmit=9 bytes_invalid=0 send_seq=174 receive_seq=174 retransmit_seq=2 srtt=0.001 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=520001407 print_time=3404.226 buffer_time=0.000 print_stall=0 sysload=0.32 cputime=0.316 memavail=1480784
Stats 4756.6: gcodein=0 mcu: mcu_awake=0.000 mcu_task_avg=0.000001 mcu_task_stddev=0.000001 bytes_write=1910 bytes_read=5972 bytes_retransmit=9 bytes_invalid=0 send_seq=175 receive_seq=175 retransmit_seq=2 srtt=0.001 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=520000990 print_time=3404.226 buffer_time=0.000 print_stall=0 sysload=0.32 cputime=0.318 memavail=1481680
Stats 4757.6: gcodein=0 mcu: mcu_awake=0.000 mcu_task_avg=0.000001 mcu_task_stddev=0.000001 bytes_write=1916 bytes_read=5988 bytes_retransmit=9 bytes_invalid=0 send_seq=176 receive_seq=176 retransmit_seq=2 srtt=0.001 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=519999891 print_time=3404.226 buffer_time=0.000 print_stall=0 sysload=0.32 cputime=0.319 memavail=1483328
Stats 4758.6: gcodein=0 mcu: mcu_awake=0.000 mcu_task_avg=0.000001 mcu_task_stddev=0.000001 bytes_write=1922 bytes_read=6004 bytes_retransmit=9 bytes_invalid=0 send_seq=177 receive_seq=177 retransmit_seq=2 srtt=0.001 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=519999087 print_time=3404.226 buffer_time=0.000 print_stall=0 sysload=0.32 cputime=0.321 memavail=1483808
Stats 4759.6: gcodein=0 mcu: mcu_awake=0.000 mcu_task_avg=0.000000 mcu_task_stddev=0.000000 bytes_write=1928 bytes_read=6033 bytes_retransmit=9 bytes_invalid=0 send_seq=178 receive_seq=178 retransmit_seq=2 srtt=0.001 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=519999256 print_time=3404.226 buffer_time=0.000 print_stall=0 sysload=0.30 cputime=0.322 memavail=1484736
Stats 4760.6: gcodein=0 mcu: mcu_awake=0.000 mcu_task_avg=0.000000 mcu_task_stddev=0.000000 bytes_write=1934 bytes_read=6049 bytes_retransmit=9 bytes_invalid=0 send_seq=179 receive_seq=179 retransmit_seq=2 srtt=0.001 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=519998775 print_time=3404.226 buffer_time=0.000 print_stall=0 sysload=0.30 cputime=0.324 memavail=1483760
Stats 4761.6: gcodein=0 mcu: mcu_awake=0.000 mcu_task_avg=0.000000 mcu_task_stddev=0.000000 bytes_write=1940 bytes_read=6065 bytes_retransmit=9 bytes_invalid=0 send_seq=180 receive_seq=180 retransmit_seq=2 srtt=0.001 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=519998712 print_time=3404.226 buffer_time=0.000 print_stall=0 sysload=0.30 cputime=0.326 memavail=1484016
Stats 4762.6: gcodein=0 mcu: mcu_awake=0.000 mcu_task_avg=0.000000 mcu_task_stddev=0.000000 bytes_write=1946 bytes_read=6081 bytes_retransmit=9 bytes_invalid=0 send_seq=181 receive_seq=181 retransmit_seq=2 srtt=0.001 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=519998882 print_time=3404.226 buffer_time=0.000 print_stall=0 sysload=0.30 cputime=0.328 memavail=1483984
Stats 4763.6: gcodein=0 mcu: mcu_awake=0.000 mcu_task_avg=0.000000 mcu_task_stddev=0.000000 bytes_write=1985 bytes_read=6132 bytes_retransmit=9 bytes_invalid=0 send_seq=184 receive_seq=184 retransmit_seq=2 srtt=0.001 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=519998462 print_time=3419.453 buffer_time=0.000 print_stall=0 sysload=0.30 cputime=0.331 memavail=1484624
toolhead: max_velocity: 10.000000
max_accel: 2.000000
minimum_cruise_ratio: 0.000000
square_corner_velocity: 5.000000
Stats 4764.6: gcodein=0 mcu: mcu_awake=0.000 mcu_task_avg=0.000001 mcu_task_stddev=0.000001 bytes_write=2734 bytes_read=6746 bytes_retransmit=9 bytes_invalid=0 send_seq=219 receive_seq=219 retransmit_seq=2 srtt=0.001 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=519998277 print_time=3420.954 buffer_time=0.000 print_stall=0 sysload=0.35 cputime=0.344 memavail=1478768
toolhead: max_velocity: 1000.000000
max_accel: 1000.000000
minimum_cruise_ratio: 0.000000
square_corner_velocity: 5.000000
Stats 4765.6: gcodein=0 mcu: mcu_awake=0.000 mcu_task_avg=0.000001 mcu_task_stddev=0.000001 bytes_write=3065 bytes_read=7109 bytes_retransmit=9 bytes_invalid=0 send_seq=240 receive_seq=240 retransmit_seq=2 srtt=0.001 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=519998158 print_time=3421.519 buffer_time=0.000 print_stall=0 sysload=0.35 cputime=0.352 memavail=1477264
toolhead: max_velocity: 15.000000
max_accel: 40.000000
minimum_cruise_ratio: 0.000000
square_corner_velocity: 5.000000
Stats 4766.6: gcodein=0 mcu: mcu_awake=0.000 mcu_task_avg=0.000001 mcu_task_stddev=0.000001 bytes_write=3374 bytes_read=7191 bytes_retransmit=9 bytes_invalid=0 send_seq=247 receive_seq=247 retransmit_seq=2 srtt=0.001 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=519998118 print_time=3428.988 buffer_time=5.978 print_stall=0 sysload=0.35 cputime=0.357 memavail=1477024
Stats 4767.6: gcodein=0 mcu: mcu_awake=0.000 mcu_task_avg=0.000001 mcu_task_stddev=0.000001 bytes_write=3445 bytes_read=7258 bytes_retransmit=9 bytes_invalid=0 send_seq=251 receive_seq=251 retransmit_seq=2 srtt=0.001 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=519998126 print_time=3428.988 buffer_time=4.977 print_stall=0 sysload=0.35 cputime=0.361 memavail=1478576
Stats 4768.6: gcodein=0 mcu: mcu_awake=0.000 mcu_task_avg=0.000001 mcu_task_stddev=0.000001 bytes_write=3516 bytes_read=7325 bytes_retransmit=9 bytes_invalid=0 send_seq=255 receive_seq=255 retransmit_seq=2 srtt=0.001 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=519997933 print_time=3428.988 buffer_time=3.977 print_stall=0 sysload=0.35 cputime=0.365 memavail=1490592
Stats 4769.6: gcodein=0 mcu: mcu_awake=0.000 mcu_task_avg=0.000001 mcu_task_stddev=0.000001 bytes_write=3587 bytes_read=7406 bytes_retransmit=9 bytes_invalid=0 send_seq=259 receive_seq=259 retransmit_seq=2 srtt=0.001 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=519998123 print_time=3428.988 buffer_time=2.977 print_stall=0 sysload=0.41 cputime=0.370 memavail=1491664
Stats 4770.6: gcodein=0 mcu: mcu_awake=0.000 mcu_task_avg=0.000001 mcu_task_stddev=0.000001 bytes_write=3658 bytes_read=7473 bytes_retransmit=9 bytes_invalid=0 send_seq=263 receive_seq=263 retransmit_seq=2 srtt=0.001 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=519998266 print_time=3428.988 buffer_time=1.976 print_stall=0 sysload=0.41 cputime=0.373 memavail=1493728
Stats 4771.6: gcodein=0 mcu: mcu_awake=0.000 mcu_task_avg=0.000001 mcu_task_stddev=0.000001 bytes_write=3729 bytes_read=7540 bytes_retransmit=9 bytes_invalid=0 send_seq=267 receive_seq=267 retransmit_seq=2 srtt=0.001 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=519998345 print_time=3428.988 buffer_time=0.975 print_stall=0 sysload=0.41 cputime=0.377 memavail=1493088
Stats 4772.6: gcodein=0 mcu: mcu_awake=0.000 mcu_task_avg=0.000001 mcu_task_stddev=0.000001 bytes_write=3996 bytes_read=7622 bytes_retransmit=9 bytes_invalid=0 send_seq=274 receive_seq=274 retransmit_seq=2 srtt=0.001 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=519998250 print_time=3428.988 buffer_time=0.000 print_stall=0 sysload=0.41 cputime=0.381 memavail=1493568
toolhead: max_velocity: 10.000000
max_accel: 2.000000
minimum_cruise_ratio: 0.000000
square_corner_velocity: 5.000000
Stats 4773.6: gcodein=0 mcu: mcu_awake=0.000 mcu_task_avg=0.000001 mcu_task_stddev=0.000001 bytes_write=4200 bytes_read=7828 bytes_retransmit=9 bytes_invalid=0 send_seq=285 receive_seq=285 retransmit_seq=2 srtt=0.001 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=519998354 print_time=3430.212 buffer_time=0.198 print_stall=0 sysload=0.41 cputime=0.388 memavail=1494368
Stats 4774.6: gcodein=0 mcu: mcu_awake=0.000 mcu_task_avg=0.000001 mcu_task_stddev=0.000001 bytes_write=4757 bytes_read=8153 bytes_retransmit=9 bytes_invalid=0 send_seq=308 receive_seq=307 retransmit_seq=2 srtt=0.001 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=519998155 print_time=3430.212 buffer_time=0.000 print_stall=0 sysload=0.37 cputime=0.395 memavail=1490304
Stats 4775.6: gcodein=0 mcu: mcu_awake=0.000 mcu_task_avg=0.000001 mcu_task_stddev=0.000001 bytes_write=5153 bytes_read=8511 bytes_retransmit=9 bytes_invalid=0 send_seq=331 receive_seq=330 retransmit_seq=2 srtt=0.001 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=519997956 print_time=3430.212 buffer_time=0.000 print_stall=0 sysload=0.37 cputime=0.401 memavail=1490416
Stats 4776.6: gcodein=0 mcu: mcu_awake=0.000 mcu_task_avg=0.000001 mcu_task_stddev=0.000001 bytes_write=5545 bytes_read=8855 bytes_retransmit=9 bytes_invalid=0 send_seq=354 receive_seq=353 retransmit_seq=2 srtt=0.001 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=519997817 print_time=3430.212 buffer_time=0.000 print_stall=0 sysload=0.37 cputime=0.409 memavail=1491824
Stats 4777.6: gcodein=0 mcu: mcu_awake=0.000 mcu_task_avg=0.000001 mcu_task_stddev=0.000001 bytes_write=5958 bytes_read=9199 bytes_retransmit=9 bytes_invalid=0 send_seq=377 receive_seq=376 retransmit_seq=2 srtt=0.001 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=519997718 print_time=3430.212 buffer_time=0.000 print_stall=0 sysload=0.37 cputime=0.417 memavail=1492720
Stats 4778.6: gcodein=0 mcu: mcu_awake=0.000 mcu_task_avg=0.000001 mcu_task_stddev=0.000001 bytes_write=6493 bytes_read=9562 bytes_retransmit=9 bytes_invalid=0 send_seq=400 receive_seq=400 retransmit_seq=2 srtt=0.001 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=519997817 print_time=3430.212 buffer_time=0.000 print_stall=0 sysload=0.37 cputime=0.423 memavail=1493168
Stats 4779.6: gcodein=0 mcu: mcu_awake=0.001 mcu_task_avg=0.000001 mcu_task_stddev=0.000001 bytes_write=6880 bytes_read=9918 bytes_retransmit=9 bytes_invalid=0 send_seq=423 receive_seq=423 retransmit_seq=2 srtt=0.001 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=519997663 print_time=3430.212 buffer_time=0.000 print_stall=0 sysload=0.34 cputime=0.430 memavail=1496048
Stats 4780.6: gcodein=0 mcu: mcu_awake=0.001 mcu_task_avg=0.000001 mcu_task_stddev=0.000001 bytes_write=7264 bytes_read=10256 bytes_retransmit=9 bytes_invalid=0 send_seq=446 receive_seq=446 retransmit_seq=2 srtt=0.001 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=519997708 print_time=3430.212 buffer_time=0.000 print_stall=0 sysload=0.34 cputime=0.438 memavail=1496896
Stats 4781.6: gcodein=0 mcu: mcu_awake=0.001 mcu_task_avg=0.000001 mcu_task_stddev=0.000001 bytes_write=7656 bytes_read=10614 bytes_retransmit=9 bytes_invalid=0 send_seq=469 receive_seq=469 retransmit_seq=2 srtt=0.001 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=519997817 print_time=3430.212 buffer_time=0.000 print_stall=0 sysload=0.34 cputime=0.446 memavail=1513984
Stats 4782.6: gcodein=0 mcu: mcu_awake=0.001 mcu_task_avg=0.000001 mcu_task_stddev=0.000001 bytes_write=8041 bytes_read=10958 bytes_retransmit=9 bytes_invalid=0 send_seq=492 receive_seq=492 retransmit_seq=2 srtt=0.001 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=519997725 print_time=3430.212 buffer_time=0.000 print_stall=0 sysload=0.34 cputime=0.453 memavail=1517888
Stats 4783.6: gcodein=0 mcu: mcu_awake=0.001 mcu_task_avg=0.000001 mcu_task_stddev=0.000001 bytes_write=8426 bytes_read=11302 bytes_retransmit=9 bytes_invalid=0 send_seq=515 receive_seq=515 retransmit_seq=2 srtt=0.001 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=519997737 print_time=3430.212 buffer_time=0.000 print_stall=0 sysload=0.34 cputime=0.459 memavail=1519856
Stats 4784.6: gcodein=0 mcu: mcu_awake=0.001 mcu_task_avg=0.000001 mcu_task_stddev=0.000001 bytes_write=8818 bytes_read=11674 bytes_retransmit=9 bytes_invalid=0 send_seq=538 receive_seq=538 retransmit_seq=2 srtt=0.001 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=519997692 print_time=3430.212 buffer_time=0.000 print_stall=0 sysload=0.31 cputime=0.465 memavail=1524272
Stats 4785.6: gcodein=0 mcu: mcu_awake=0.001 mcu_task_avg=0.000001 mcu_task_stddev=0.000001 bytes_write=9203 bytes_read=12018 bytes_retransmit=9 bytes_invalid=0 send_seq=561 receive_seq=561 retransmit_seq=2 srtt=0.001 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=519997742 print_time=3430.212 buffer_time=0.000 print_stall=0 sysload=0.31 cputime=0.471 memavail=1531264
Stats 4786.6: gcodein=0 mcu: mcu_awake=0.001 mcu_task_avg=0.000001 mcu_task_stddev=0.000001 bytes_write=9588 bytes_read=12362 bytes_retransmit=9 bytes_invalid=0 send_seq=584 receive_seq=584 retransmit_seq=2 srtt=0.001 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=519997657 print_time=3430.212 buffer_time=0.000 print_stall=0 sysload=0.31 cputime=0.478 memavail=1533312
Stats 4787.6: gcodein=0 mcu: mcu_awake=0.001 mcu_task_avg=0.000001 mcu_task_stddev=0.000001 bytes_write=9977 bytes_read=12720 bytes_retransmit=9 bytes_invalid=0 send_seq=607 receive_seq=607 retransmit_seq=2 srtt=0.001 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=519997558 print_time=3430.212 buffer_time=0.000 print_stall=0 sysload=0.31 cputime=0.485 memavail=1534960
Stats 4788.6: gcodein=0 mcu: mcu_awake=0.001 mcu_task_avg=0.000001 mcu_task_stddev=0.000001 bytes_write=10358 bytes_read=13055 bytes_retransmit=9 bytes_invalid=0 send_seq=630 receive_seq=630 retransmit_seq=2 srtt=0.001 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=519997500 print_time=3430.212 buffer_time=0.000 print_stall=0 sysload=0.31 cputime=0.493 memavail=1535312
Stats 4789.6: gcodein=0 mcu: mcu_awake=0.001 mcu_task_avg=0.000001 mcu_task_stddev=0.000001 bytes_write=10743 bytes_read=13413 bytes_retransmit=9 bytes_invalid=0 send_seq=653 receive_seq=653 retransmit_seq=2 srtt=0.001 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=519997421 print_time=3430.212 buffer_time=0.000 print_stall=0 sysload=0.37 cputime=0.502 memavail=1535840
Stats 4790.6: gcodein=0 mcu: mcu_awake=0.001 mcu_task_avg=0.000001 mcu_task_stddev=0.000001 bytes_write=11135 bytes_read=13771 bytes_retransmit=9 bytes_invalid=0 send_seq=676 receive_seq=676 retransmit_seq=2 srtt=0.001 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=519997464 print_time=3430.212 buffer_time=0.000 print_stall=0 sysload=0.37 cputime=0.509 memavail=1539408
Stats 4791.6: gcodein=0 mcu: mcu_awake=0.001 mcu_task_avg=0.000001 mcu_task_stddev=0.000001 bytes_write=11520 bytes_read=14115 bytes_retransmit=9 bytes_invalid=0 send_seq=699 receive_seq=699 retransmit_seq=2 srtt=0.001 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=519997523 print_time=3430.212 buffer_time=0.000 print_stall=0 sysload=0.37 cputime=0.520 memavail=1539616
Stats 4792.7: gcodein=0 mcu: mcu_awake=0.001 mcu_task_avg=0.000001 mcu_task_stddev=0.000001 bytes_write=11905 bytes_read=14459 bytes_retransmit=9 bytes_invalid=0 send_seq=722 receive_seq=722 retransmit_seq=2 srtt=0.001 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=519997478 print_time=3430.212 buffer_time=0.000 print_stall=0 sysload=0.37 cputime=0.528 memavail=1541952
Stats 4793.7: gcodein=0 mcu: mcu_awake=0.001 mcu_task_avg=0.000001 mcu_task_stddev=0.000001 bytes_write=12297 bytes_read=14817 bytes_retransmit=9 bytes_invalid=0 send_seq=745 receive_seq=745 retransmit_seq=2 srtt=0.001 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=519997570 print_time=3430.212 buffer_time=0.000 print_stall=0 sysload=0.37 cputime=0.537 memavail=1543392
Stats 4794.7: gcodein=0 mcu: mcu_awake=0.001 mcu_task_avg=0.000001 mcu_task_stddev=0.000001 bytes_write=12794 bytes_read=15175 bytes_retransmit=9 bytes_invalid=0 send_seq=768 receive_seq=768 retransmit_seq=2 srtt=0.001 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=519997566 print_time=3430.212 buffer_time=0.000 print_stall=0 sysload=0.34 cputime=0.544 memavail=1534384
Stats 4795.7: gcodein=0 mcu: mcu_awake=0.001 mcu_task_avg=0.000001 mcu_task_stddev=0.000001 bytes_write=13225 bytes_read=15519 bytes_retransmit=9 bytes_invalid=0 send_seq=791 receive_seq=791 retransmit_seq=2 srtt=0.001 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=519997560 print_time=3430.212 buffer_time=0.000 print_stall=0 sysload=0.34 cputime=0.553 memavail=1534848
Stats 4796.7: gcodein=0 mcu: mcu_awake=0.001 mcu_task_avg=0.000001 mcu_task_stddev=0.000001 bytes_write=13641 bytes_read=15870 bytes_retransmit=9 bytes_invalid=0 send_seq=814 receive_seq=814 retransmit_seq=2 srtt=0.001 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=519997580 print_time=3430.212 buffer_time=0.000 print_stall=0 sysload=0.34 cputime=0.560 memavail=1535600
Stats 4797.7: gcodein=0 mcu: mcu_awake=0.001 mcu_task_avg=0.000001 mcu_task_stddev=0.000001 bytes_write=14026 bytes_read=16214 bytes_retransmit=9 bytes_invalid=0 send_seq=837 receive_seq=837 retransmit_seq=2 srtt=0.001 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=519997602 print_time=3430.212 buffer_time=0.000 print_stall=0 sysload=0.34 cputime=0.567 memavail=1537104
toolhead: max_velocity: 15.000000
max_accel: 40.000000
minimum_cruise_ratio: 0.000000
square_corner_velocity: 5.000000
Stats 4798.7: gcodein=0 mcu: mcu_awake=0.001 mcu_task_avg=0.000001 mcu_task_stddev=0.000001 bytes_write=14583 bytes_read=16768 bytes_retransmit=9 bytes_invalid=0 send_seq=871 receive_seq=871 retransmit_seq=2 srtt=0.001 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=519997614 print_time=3455.223 buffer_time=0.197 print_stall=0 sysload=0.34 cputime=0.576 memavail=1539536
Stats 4799.7: gcodein=0 mcu: mcu_awake=0.001 mcu_task_avg=0.000001 mcu_task_stddev=0.000001 bytes_write=14656 bytes_read=16896 bytes_retransmit=9 bytes_invalid=0 send_seq=877 receive_seq=877 retransmit_seq=2 srtt=0.001 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=519997623 print_time=3455.709 buffer_time=0.000 print_stall=0 sysload=0.31 cputime=0.580 memavail=1537856
Stats 4800.7: gcodein=0 mcu: mcu_awake=0.001 mcu_task_avg=0.000001 mcu_task_stddev=0.000001 bytes_write=14690 bytes_read=16958 bytes_retransmit=9 bytes_invalid=0 send_seq=880 receive_seq=880 retransmit_seq=2 srtt=0.001 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=519997593 print_time=3455.709 buffer_time=0.000 print_stall=0 sysload=0.31 cputime=0.582 memavail=1539168
toolhead: max_velocity: 10.000000
max_accel: 2.000000
minimum_cruise_ratio: 0.000000
square_corner_velocity: 5.000000
Stats 4801.7: gcodein=0 mcu: mcu_awake=0.001 mcu_task_avg=0.000001 mcu_task_stddev=0.000001 bytes_write=15338 bytes_read=17427 bytes_retransmit=9 bytes_invalid=0 send_seq=909 receive_seq=909 retransmit_seq=2 srtt=0.001 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=519997586 print_time=3458.259 buffer_time=0.231 print_stall=0 sysload=0.31 cputime=0.592 memavail=1543744
toolhead: max_velocity: 15.000000
max_accel: 40.000000
minimum_cruise_ratio: 0.000000
square_corner_velocity: 5.000000
Stats 4802.7: gcodein=0 mcu: mcu_awake=0.001 mcu_task_avg=0.000001 mcu_task_stddev=0.000001 bytes_write=15419 bytes_read=17556 bytes_retransmit=9 bytes_invalid=0 send_seq=915 receive_seq=915 retransmit_seq=2 srtt=0.001 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=519997533 print_time=3458.259 buffer_time=0.000 print_stall=0 sysload=0.31 cputime=0.595 memavail=1546912
Stats 4803.7: gcodein=0 mcu: mcu_awake=0.001 mcu_task_avg=0.000001 mcu_task_stddev=0.000001 bytes_write=15453 bytes_read=17618 bytes_retransmit=9 bytes_invalid=0 send_seq=918 receive_seq=918 retransmit_seq=2 srtt=0.001 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=519997602 print_time=3458.259 buffer_time=0.000 print_stall=0 sysload=0.31 cputime=0.598 memavail=1547968
Stats 4804.7: gcodein=0 mcu: mcu_awake=0.000 mcu_task_avg=0.000001 mcu_task_stddev=0.000001 bytes_write=15487 bytes_read=17693 bytes_retransmit=9 bytes_invalid=0 send_seq=921 receive_seq=921 retransmit_seq=2 srtt=0.001 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=519997664 print_time=3458.259 buffer_time=0.000 print_stall=0 sysload=0.29 cputime=0.600 memavail=1543584
toolhead: max_velocity: 15.000000
max_accel: 40.000000
minimum_cruise_ratio: 0.000000
square_corner_velocity: 5.000000

Any ideas to workaround homing with faster velocities?

Okay, a few things.

  1. Could you please follow the guidelines I set out above? I’m not 100% what is your current hardware configuration (ie what TMC2209 driver modules are you using and I still don’t know what main controller board you are using). I asked you to include the files not excerpts - it’s much easier to go through the klippy.log (which includes the effective printer.cfg as well as the printer’s response). Since you’re using a new “smaller actuator”, I’d like to know more about it.

  2. If you’re going to post code/listings/data, please do it in a preformatted text block. Click on

image

in the top editor line and paste the text within the block.

  1. Why are you playing around with acceleration in your sensorless homing? That’s not something that is normally done. I’m not sure what you’re macro is doing - I don’t know if what you’ve posted is incomplete or has been overwritten because you didn’t use the preformatted text block.

  2. From what you have posted, you have a homing speed of 15mm/s which is reasonable. Are you looking to increase this?

I’m not sure what you mean by saying you want to home at “up to double the rotation distance per second”. You’re saying the pitch of the lead screw that you’re using is 2mm, double that is 4mm so you seem to imply that you want to home at 4mm/s but, in your stepper_x definition, you’re specifying a homing homing speed of 15mm/s/

My initial reaction to somebody that has working sensorless homing and wants to make it faster is “Why?” Homing is generally a small fraction of the time of a print and running it faster makes it more difficult to tune reliably.

Could I ask you to:

  1. Describe your system as it stands now. This is hardware, host and stepper drivers (what you were asked when you first started the post).

  2. Attach your klippy.log in its entirety. If it’s too big to attach, then .zip it and attach the .zip file.

  3. Explain what you are observing and what you are expecting or would like to see.

Thanx.

2 Likes

Ok so I was essentially wondering if there is a way to play around with sensorless homing so I could home quicker. The snippet I posted has 15 mm/s as I was trying to get it to work with 15 and potentially higher compared to 4 mm/s. 4-6 mm/s were working perfectly as they are close to my rotation distance of 2 mm. I seem to run into issues as soon as homing speed goes to 10 mm/s.

I am using a MANTA M8P V2.0 board with a BTT TMC2209 slotted in the stepper_x driver slot. Vref measured to be 1.2 V.

Attached is my klippy.log file as requested.

klippy.log (3.2 MB)

What I am seeing is the lead screw actuator does not come to a halt when setting acceleration low (1-10 mm/s^2) compared to using Klipper default acceleration. I was hoping I would see the motor easily stall if the acceleration was reduced and homing speed was increased such that it would be just as reliable as conventional sensorless homing with lower speeds.

Thanx for the klippy.log - I think in your original cut and paste, the meaning was lost.

I don’t think that SET_VELOCITY_LIMT does what you want it to do in this situation:

It’s only for normal movement, not for homing. I would be surprised to find out that it affects the speed/acceleration of the homing operation.


Going back to my original question, what is your motivation for wanting homing to be faster?

I admit that 4mm/s is slow, but a lead screw is something of an unusual beast for doing sensorless homing - the more I think about it, the more complexities come out (with a big one being how you do anti-backlash and how that affects the endstop contact). If I were doing this, I would be concerned about the opportunity for inflicting mechanical damage to the mechanism.

Sensorless homing is a function of SGTHRS/SGT value, speed and current. When I set it up, I work at finding values of speed and current that give me the widest range of SGTHRS/SGT and then pick a value that is in the middle of that range. If you want to increase your speed, do it slowly, if it works at 4mm/s, try 6mm/s and work though ranges of currents to see what values of SGTHRS/SGT work. You’ll have to work through the full range of currents from very low to close to your expected operating current (that’s why I’m concerned about mechanical damage, you’re going to have your lead screw nut slamming into the endstop at increasingly high currents and forces).

It’s tedious work and there’s a non-zero chance that getting something to work reliably at 15mm/s will be impossible or that it will happen in speeds/currents that will damage your hardware over time.

That’s why I ask the question, why do you want to go faster? Unless there is a clear, definable reason for your system then I would recommend keep with the 4mm/s and move on to the next task in getting things set up.

Turns out the tmc2209 and patience getting the right combination of SGTHRS, run current and homing speed did the trick after all. The lead screw I am using doesn’t actually have a nut. It has a block that ends up hitting the edge and in finding the right combination of variables it is hitting very smoothly and coming to a halt very nicely.

For this lead screw actuator, the rotation distance is 2 mm. I was able to get homing and even normal positioning to work up to 16 mm/s which is 480 rpm so this can serve as a useful threshold for any future actuators I work with.

Thanks for your insights and support as always!

1 Like