[klipper] Re: Automating Nozzle X/Y Offset Calibration

  • From: Kevin O'Connor <kevin@xxxxxxxxxxxx>
  • To: Dark Empathy <darkempathy@xxxxxxxxx>
  • Date: Thu, 6 May 2021 13:15:13 -0400

On Wed, May 05, 2021 at 12:21:25PM -0400, Dark Empathy wrote:

Hi All,

I have a dual extruder core XY printer, using TMC2130's with sensorless
homing in XY.

I would like to try and implement automatic Nozzle X/Y offset calibration.

Interesting.  FYI, you'll probably find a larger audience by posting
to the Klipper Discourse server:  https://community.klipper3d.org/

One possible technique might be:
1) Take a metal tube approx 5mm diameter, and cut 2mm off the end, so we
have a 5mm x 2mm "ring".
2) Epoxy this ring to an "unused" corner of the build plate (or any other
method - such as taking a longer length of 5mm tubing, and installing it,
vertically just off the build plate - but in an area the print head can
reach)
3) Move E0 to just above this cylinder, then lower nozzle tip so its
just inside the cylinder.
4) Then move the print head slowly, can calibrate the exact nozzle tip
position via back EMF / missed steps, in the same way the sensorless homing
works.
5) The repeat for E1, and then we will have the position offset between E0
& E1.

It remains to be seen if this will be accurate enough for Nozzle Offsets...

I think accuracy may be a challenge.  The Trinamic sensorless homing
is at best accurate to one full step (typically around 0.2mm for XY
axes).

I'd also be concerned about putting pressure on the tip of the nozzle.
Generally when doing sensorless homing it is preferable for the
contact force to be directly on the carriages instead of on auxillery
parts.

Also note that going slower during Trinamic sensorless homing is often
not possible as the drivers have a minimum moving speed for the stall
detection to work.  There's some info on this at:
https://www.klipper3d.org/TMC_Drivers.html#sensorless-homing

Questions:

   - Has anyone done this already, or some other solution?

Not that I know of.

   - If not, (I'm far from as expert as many people on this list), can
   anyone advise where & how I might implement the above in Klipper?

It's probably possible to do test everything today with macros, the
GET_POSITION command, and command templates (
https://www.klipper3d.org/Command_Templates.html ;).  If it works via
macros it could be made into a new "extras" module for easier
configuration.

Cheers,
-Kevin

Other related posts: