Alternative calibration strategy for X and Y axes

I had a complete derivation of the math for this method written up, but kept hitting a 500 internal server error when trying to post, so I will try a cut down version without the derivation.

I had some issues with holes not being the correct size so I thought I would check the X and Y axis calibrations. The method in the Shapeoko CNC A to Z, has the issue that to eliminate the runout effects you had to measure faces that were facing the same way. This can be challenging to do accurately.

I had the realization that the runout effects are independent of the length of the feature, so if I can accurately measure two different lengths the difference would eliminate these effects.

I programmed (in Fusion 360) a series of pockets 25 mm wide spaced 25 mm apart (pocket width is not relevant since the distance between outside walls is what we are measuring) I had a picture of my pattern in the prior attempted post, I will put up as a reply if I can get this post to actually post.

I derived a relationship for the length actually cut, vs what was commanded by the software. In the model, I characterized the error in the steps/mm as a relative factor (effective value = error factor x nominal value). I included an error factor for steps/mm and for tool diameter.

Length(actual) = Length(commanded)/error(steps/mm) + diameter(1/error(steps/mm) - error(diameter))
(it looked prettier in the equation editor I use in my teaching.)

You can see that the error in the tool diameter is not a function of length. So if I measure faces with my caliper at two different lengths, say a nominal 25 mm and nominal 125 mm, the difference will subtract off that part of the error. In my example the difference in the actual measurements of length vs the difference in the commanded lengths will let you calculate the error in the steps/mm setting.

Now to get more sophisticated, you can actually back out the effective tool diameter from this information (runout and over/under sizing)

The way to do this is to plot the actual distances vs the commanded distances and fit the line. (easily done in excel).
The slope of the line is m= 1/error(steps/mm). (where the line if y=mx+b)

The intercept is b=diameter (1/error(steps/mm)-error(diameter))
which can give you the error(diameter)

Again the equations were clearer in the equations editor that was not being able to be posted.




Picture of the pocket features used to measure
calibration pattern for X axis



Let’s see if I can get the equations for the derivation to come in now.




This sort of thing was theorised about a while back — nice to see the underlying math prove out!

I was far more prosaic when I calibrated my SO Pro:

1 Like

Did this help you correct anything?

Do you run the cuts in both X and Y directions?

Each axis is calibrated independently, so you cut the pattern for the X axis, and then cut it for the Y axis. You could cut both at the same time but I have plenty of narrow scrap around to use for these types of purposes.

(I had a longer response, but I was getting an Error 500 again)

Excellent!! :smile: Very useful for those with limited measurement resources.
I will certainly use this strategy next time I dial in the machine. Might help me get that extra couple thou I’ve been chasing.

One thing I didn’t see mentioned was material & cutting strategy. I would go with something more durable like acrylic or aluminum. And approach it with a rough/finish strategy where my finish cuts are only removing a few thousandths.

For those of us that think visually & like pictures…



Might be worth asking what fraction of your ‘actual’ axis intercept constant is due to linear motion system backlash vs. cutter size error?

1 Like

Good point, Liam. In this case, I think we’re trying to eliminate “Total Runout” to dial in the Step Correction.

I’ve mic’d many tools in my time, and now just assume they’re “perfect” (for all practical purposes).

But you are correct in pointing out that “Total Runout” could consist of spindle runout, cutter size & machine slop.

The beauty of John’s method is it eliminates the total runout so you can accurately dial in the steps/mm.

Next steps, if accuracy is still an issue, would be to correct spindle runout & backlash. (Tool size can be measured & accounted for.)

I suppose, depending on drive mechanics (quality & resolution of steppers, belt - lead screw - ball screw), there is a threshold / point of diminishing returns that would determine the best effective accuracy of the machine.

1 Like

It might be interesting to do it with more than one cutter on the same machine and see how much of the calibration error persists across cutters, that would give some indication of what fraction is machine backlash.

I previously used a dial gauge mounted to the wasteboard to measure the backlash on my machine more directly, be interesting to see results from that method compare with the total cut error measured here too.

Depending on which machine you’re using (belt vs. ballscrew drive) there will be quite different backlash characteristics in the linear drive.

On the belt driven machines the things I found to dominate the backlash were the tension / preload on the V wheels and how much crud had built up on the V Wheels and extrusions.

I still had backlash on my X axis after installing linear rails, but it’s a lot more consistent than before. edit - more consistent but not smaller.

The intercept value is not just the effective tool diameter but also has a term with the linear motion error
b(the slope) = dia/error(steps/mm)-error(tool diameter)*dia
Error(tool diameter)*diameter(nominal)=diameter(effective)
The effect of the linear calibration is affects the intercept in the diameter(nominal)/error(steps/mm) part of the intercept term.
Sorry equations are tough to describe on my iPad

1 Like

Ok, let’s see if I can avoid an error 500 and actually post :slight_smile:

I have had a chance to play with this a little more.I realized that I had been calculating the correction backwards, so I was getting further away. I’ve gotten the error in the X to about 0.04 mm over 1000 mm, which is much better than I can measure. The spread of my measurements for a given distance is probably 1-2X that. I did not realize that the $100 variable goes to three decimal places. I ran with $100=40.06 and the calculation said it should be 40.062 so I will add that back in.
For the Y axis I was a little further off (convoluted some other experiments in there). Running with $101=40.10 I was good to 0.3 mm over 1000 mm. New calculation will put the $101 value to 40.087. I will try the new values when I get another chance. My 201 1/4 bit has consistently been showing slightly undersize in these tests (Y test 0.2461 diameter, X test 0.2448 diameter difference is well withing my ability to measure0



For everyone’s reference, divide current steps/mm ($100 or $101 value) by the slope found to calculate the new steps/mm value.

So the simple version of the process is

  1. Program a series of pockets
    (I did 20 mm x 20 mm (x 10 mm deep) pockets spaced by 20 mm)
  2. Cut this pattern along the X axis
  3. measure as accurately as possible each of the spacings between walls (i.e. the separations of the pockets) (I did six pockets, so I has 5 measurements of about 20 mm, 4 measurements of about 60 mm, 3 measurements of about 100 mm, and 2 measurements of about 140 mm)
  4. In excel plot the actual distances measured versus what you programmed. Fit a line to the points (either using slope and intercept functions or trendlines (slope and intercept functions give you some more precision))
  5. Calculate new steps/mm by $100(new)=$100(old)/slope

Repeat process along Y axis for $101 value



This topic was automatically closed after 30 days. New replies are no longer allowed.