Homing procedure in firmware



  • I'm wondering about the homing sequence in the duet wifi. I work on industrial cnc machines, and on those machines the limit swith tells the control to start searching for the zero pulse on the encoder, which is much more accurate.

    Could something similar be implemented on the Duet? Advance the stepper until it hits the switch, then back off to the nearest full step of the stepper motor, which will always be in the same spot.

    So I'm wondering if that is how the homing works, or could it be implemented.



  • If the possition error with microstepping is unacceptable I don't see how homing with full steps and machining with microstepping is going to make any difference at all. Its a trade off.

    But homing works as it says on the tin, G1 H1 moves until it hits the endstop and sets the axis minimum or maximum value. If you look at the example homing files you'll see that the axis is then backed off the switch and again made to hit the switch at a lower speed for maximum accuracy.



  • @bearer because a full step is a known position in the motor, whereas with the swith you rely on the repeatability of the switch.



  • @dullfig1 The point is that with 3D printing, homing is only carried out to establish a known position and the axes limits. As a rough illustration, a common setting would be 80 (micro) steps per mm using 16x microstepping. Which is 5 full steps per mm. So any positional error due to micro stepping would be a maximum of +-0.1 mm. But that is just the reference position from which all other moves are made. Unless you are printing to the very edges of the build plate, then that reference position could be out by several millimeters and still have zero effect on the part that you print. The only effect of "inaccurate" or inconsistent homing is to vary the position of an object on the build plate each time it is printed, but the object itself would be the same.



  • @dullfig1 said in Homing procedure in firmware:

    @bearer because a full step is a known position in the motor, whereas with the swith you rely on the repeatability of the switch.

    Maybe I was unclear; its pointless to turn off microstepping for homing to proceed to enable it for machining/printing.

    If the potential deviation from ideal position is a problem, you'll need to just not use microstepping at all.


  • Moderator

    @dullfig1 said in Homing procedure in firmware:

    I work on industrial cnc machines

    This is a different world entirely. The positional accuracy gets dwarfed by filament extrusion inaccuracy anyway.

    The only time when X Y positioning repeatability will really matter would be having to recover a print after a power failure since your motors will have lost position entirely and will need to be rehomed. But even here, even if the registration is perfect you'll likely be able to notice the restart layer simply because the previous layers cooled and contracted at a different rate to the new resumed layer.

    Regardless, to your original question, it sounds like RRF3 and Duet3 are going to have some sort of closed loop positioning capability in future since they are targeted at more than just printing.


  • administrators

    @dullfig1 said in Homing procedure in firmware:

    I'm wondering about the homing sequence in the duet wifi. I work on industrial cnc machines, and on those machines the limit swith tells the control to start searching for the zero pulse on the encoder, which is much more accurate.

    Could something similar be implemented on the Duet? Advance the stepper until it hits the switch, then back off to the nearest full step of the stepper motor, which will always be in the same spot.

    So I'm wondering if that is how the homing works, or could it be implemented.

    I can see a problem with that. Suppose the switch triggers at a motor position very close to a full step. Some days it might trigger one microstep before the full step, so the firmware wood back off the motor to the previous full step. Other days it would trigger one microstep later, on the full step, and not back off at all. So you would have turned a variation in homing position of one microstep to a variation of one full step.

    It would be viable if you could be certain that the switch triggers at a position approximately midway between full step positions.

    BTW the motor stall detection is only updated at full step positions; so when using stall detection there is a potential uncertainty in the homing position of at least one full step.



  • See Klipper’s implementation of endstop phasing. It remembers microstep count at end stops during calibration. Subsequent endstop hits move to the nearest micro stop count same as set in calibration.

    I haven’t used this so I don’t personally know how it performs. Have heard anecdotal reports of it being accurate enough to make delta bed probing unnecessary.

    https://github.com/KevinOConnor/klipper/blob/master/docs/Endstop_Phase.md



  • could someone explain the difference of finding the exact home-point and missing it for 1 or 2 mm?



  • @spllg said in Homing procedure in firmware:

    could someone explain the difference of finding the exact home-point and missing it for 1 or 2 mm?

    With a printer, the object would be printed at a slightly different position on the build plate. So it only becomes an issue if you intend to print at the extreme limits of an axis travel. Although if it is inconsistent by that amount, and you re-home after a power outage, in order to resume, then that inconsistency would cause a problem. In reality, that is highly unlikely to occur.



  • @spllg it matters a lot for deltas.



  • Yeah, to repeat: Homing is absolutely critical for Delta/Kossel. It directly sets nozzle-to-bed at Z0. And it needs to set it accurately enough to get a good first layer. Most homing (switches) are not anywhere near accurate enough for this.

    In fact, in my opinion, this has been the #1 barrier to wider adoption of Deltas, that is, getting Z height set initially, and keeping it set to within 1/10 or so of a layer for print after print.

    The smart effector largely solves this, because you can probe before every print.



  • Is it really a (that much) bigger issue on Deltas? Having a slight headache trying to wrap my head around how, say 0.1mm error on the tower would translate to anything less than or equal 0.1mm error in Z. That said my Delta has been sat in parts in a box for way too long..



  • @bearer said in Homing procedure in firmware:

    Is it really a (that much) bigger issue on Deltas? Having a slight headache trying to wrap my head around how, say 0.1mm error on the tower would translate to anything less than or equal 0.1mm error in Z. That said my Delta has been sat in parts in a box for way too long..

    You've got it... they are equal.

    How precise do you need the first layer to be? IMHO, 1/10 of layer height, so quiet often, 0.02.



  • @Danal do be honest I've never given it much thought beyond adjusting with increasingly large sledgehammer until it works as if I was a mechanic or something..

    I was just thrown as I read it to be a bigger problem on Deltas than in general, which I couldn't make sense of. Odds are on average the error would be less on the delta due to cosine "error" between the travel on the tower and what the kinematics do, worst case scenario all errors are the same and in the same direction giving or some of the compounded error is shifted from Z to XY plane.

    But yes, homing is important, and I guess I've been lucky as my stuff has always been more repeatable than I could measure. (+/-0.02-ish)



  • @bearer said in Homing procedure in firmware:

    @Danal do be honest I've never given it much thought beyond adjusting with increasingly large sledgehammer until it works as if I was a mechanic or something..

    I was just thrown as I read it to be a bigger problem on Deltas than in general, which I couldn't make sense of. Odds are on average the error would be less on the delta due to cosine "error" between the travel on the tower and what the kinematics do, worst case scenario all errors are the same and in the same direction giving or some of the compounded error is shifted from Z to XY plane.

    But yes, homing is important, and I guess I've been lucky as my stuff has always been more repeatable than I could measure. (+/-0.02-ish)

    Yah, and it really doesn't matter much on X and Y. As others have said, so the print is in a slightly different spot on the plate... Thus things like the Prusa I3 Mk3 which has stall detect on XY and a PINDA (inductive) probe on Z.



  • Guess we're on the same page, pardon the pedantic antics:)


  • administrators

    @Danal said in Homing procedure in firmware:

    Yeah, to repeat: Homing is absolutely critical for Delta/Kossel. It directly sets nozzle-to-bed at Z0. And it needs to set it accurately enough to get a good first layer. Most homing (switches) are not anywhere near accurate enough for this.

    In fact, in my opinion, this has been the #1 barrier to wider adoption of Deltas, that is, getting Z height set initially, and keeping it set to within 1/10 or so of a layer for print after print.

    The smart effector largely solves this, because you can probe before every print.

    Even with perfect microswitches, you would still need to do a single probe to set the Z=0 height, to allow for the expansion of the frame with temperature.


Log in to reply