More repeatable Homing.



  • Hi, first post.

    Apologies if this has been previously discussed.

    Rather than rely on the accuracy of a switch or a sensor triggering to zero an axis this should be used as a first approximation. The actual axis zero would be an internal electrical state of the stepper motor winding currents just before the mechanical switch is triggered. For example, a peak positive current flowing through one stepper motor winding and no current through the other stepper motor winding.
    Knowing the motor internal state at the origin permits correcting a bunch of other systematic errors like angular step and micro step errors, out of round toothed pulleys, and even belt tooth profile errors using a look up table.
    I posted an interference fringe printer test on thingiverse that visualizes small errors.
    https://www.thingiverse.com/thing:3564869

    -Peter



  • You might be able to home your Z axis using stall detection, which should have the stepper stall at the nearest full step I think.


  • administrators

    @peter120 said in More repeatable Homing.:

    Hi, first post.

    Apologies if this has been previously discussed.

    Rather than rely on the accuracy of a switch or a sensor triggering to zero an axis this should be used as a first approximation. The actual axis zero would be an internal electrical state of the stepper motor winding currents just before the mechanical switch is triggered. For example, a peak positive current flowing through one stepper motor winding and no current through the other stepper motor winding.
    Knowing the motor internal state at the origin permits correcting a bunch of other systematic errors like angular step and micro step errors, out of round toothed pulleys, and even belt tooth profile errors using a look up table.
    I posted an interference fringe printer test on thingiverse that visualizes small errors.
    https://www.thingiverse.com/thing:3564869

    Welcome to the forum!

    I can see two problems with that approach:

    1. You are assuming that the same motor position always gives exactly the same homed position, regardless of temperature and other factors. This is not necessarily the case. For example, consider a printer with a bed moving in the Z direction, driven by steel leadscrews, with the motors at the bottom of the printer and an aluminium frame. When the temperature changed, the aluminium frame and steel leadscrews will expand by different amounts. So the motor position that corresponds to Zmin will change. Similarly for any belt-driven axis where there is a significant length of belt between the carriage and the motor in the homed position.

    2. What if the position at which the switch triggers is right on a full-step position? Sometimes it might trigger just before that full step, and sometimes it might trigger just after. Using your scheme, the homed position would jitter by one full step, instead of by just a few microsteps. It is for this reason that I don't recommend using stall detection for endstops when precise homing is needed (e.g. to support resume-after-power-failure)



  • @peter120 Hi and welcome to the Duet Forum. I took a look at your thingiverse link which piqued my interest and I see some possibilities, but not for homing I think. For the reasons that @dc42 has pointed out, there isn't necessarily an accurate correlation between motor current and the physical position of the mechanical components connected to that motor. But also, for homing we only need to establish a position in space from which all other measurements will be taken. So we don't really care too much where in space that initial position actually is. Z is a bit more critical because of the need to form an accurate first layer height above the build platform, but for X and Y, unless one is printing something that extends completely from the axes minima to the axes maxima then the actual homing position can be out by quite a few mm or even 10s of mm and it won't matter.



  • Thanks for the welcome and sharing your thoughts.
    My underlying interest is just how accurate can a PLA object be printed or better perhaps is what is limiting print accuracy. Is SLA required for better print accuracy or can FDM be improved.

    dc42 Point 1 is valid and it was not on my radar. I have a Cetus with a Z axis belt which I can coax it into showing micro stepping errors on selected printing tests. You picked a good printer geometry example. I thought about a springy leadscrew to motor shaft coupler supporting the build platform weight.

    Point 2 I did consider but figured that internally the stepper is periodic every 4 steps or in my case 0.8mm and that one could choose a winding and polarity that resulted in some step position margin; however, I was thinking of belts and not screws. Your point 1 using a leadscrew might be hit and miss for Z, but probably not for the X and Y belts.
    I found this link where they measured the stepper accuracy and it is obvious why thin Z layers have a problem with belts.
    https://www.applied-motion.com/news/2015/10/stepper-motor-accuracy
    Between two adjacent bad steps the difference error is 1/10 of a step which is 0.02mm for my belts. This is small until you think about the error as a percentage of a 0.05mm layer. Micro stepping errors would also subtlety vary the extruder nozzle flow rate.

    deckingman. The interference fringe is sensitive to several printer errors but the trick would be separating out the individual variables and adjusting the printer. I posted an extrusion calibration test that you might like. It is based loosely on a micrometer. You print a nut and bolt and the snug final angular position measures the axial thread clearance which is known for the STL model printed. Flip the nut over and remeasure the angle and you get the overhanging thread sag.
    https://www.thingiverse.com/thing:3390910


Log in to reply