AndrewEllis93 / Print-Tuning-Guide

1.92k stars 261 forks source link

Expectations with sensorless homing wrt minor skipping with TEST_SPEED #85

Open Gallion opened 12 months ago

Gallion commented 12 months ago

I think it would be useful to add information about what can be expected when running this test with sensorless homing. Running a script with just homing, moving, homing, moving etc on my Prusa Bear, I get the following mcu values :

x : -128, -192, -256, -319, -384 y : -129, -192, -256, -321, -320

The following information is relevant :

"A stepper motor itself can only lose steps in increments of 4 full steps. (So, if one is using 16 microsteps, then a lost step on the stepper would result in the "mcu:" step counter being off by a multiple of 64 microsteps.)" Source

Sensorless homing allows to home an axis without the need for a physical limit switch. Instead, the carriage on the axis is moved into the mechanical limit making the stepper motor lose steps. The stepper driver senses the lost steps and indicates this to the controlling MCU (Klipper) by toggling a pin. This information can be used by Klipper as end stop for the axis. Source

For these reasons, I don't know if the stated method of determining whether there was minor skipping is as useful. There might be a need for a slightly different procedure. Perhaps a helpful method would be to print a tower, execute the test movements every n layers, then see if there is any visible shift in the tower.

Hun73rdk commented 9 months ago

Yea i just set my new voron 2.4 with with sensorless a and at a acceleration of 500 and velocity of 300 it get numbers far apart.

mcu: stepper_x:61549 stepper_y:-43787 stepper_z:172 mcu: stepper_x:61793 stepper_y:-43757 stepper_z:163

Must be a way to compensate for that but i have no clue

l-ejs-l commented 6 months ago

i have the exact same issue, no idea how to determine if i've lost a step with sensorless homing.

nikoramiro commented 2 months ago

I'm unsure if my logic is sound, but the way I ended up doing this is by expecting my axis to skip a full step when homing (so 64 microsteps in my case), if the numbers differed more or less than 64 I assumed minor skipping had occured and dialed down my values.