Ball screw Mapping and Compensation

If you’ve done any investigation into ballscrews, you’ll see there’s a bewildering array of variables: metric/imperial, tolerance classes,  pitch/lead, rotational moments of inertia, backlash compensation methods.


One that may affect cut dimensions is the variation in pitch between one section and another. It may move 10mm in one section, 10.001 in another, 9.998 in yet still another. How much this is an issue compared to spindle run-out, tool accuracy, machine rigidity vs cutting speed is a discussion to be had.

In order to determine the actual distance moved vs what the motion controller thinks has happened, one must have a precision way of measuring that distance. Something better than a ruler, tape measure, tree branch…


In my case, I use either a micrometer/caliper calibration standard (Starret example) or what is the more common method; 1-2-3 gage blocks. Since errors with multiple blocks accumulate, I’d rather use 2-4-6 blocks, but they’re a wee bit expensive, comparatively.

The technique is fairly simple. firmly affix the measurement standard to the mill bed, install a test dial indicator, move the axis to be checked in one direction only (this removes backlash from the measurement), zero the unit, move it the length of the standard, measure again. Check the actual distance against the standard.

Here is the always excellent ‘Hoss’ demonstrating the technique on his mill : HossMachine Mach 3 Ballscrew Calibration (YouTube)

Here’s a posting about it on CNC Zone. As they rightfully say, trying to measure the accuracy of the machine via the actual cut is not going to work. That cut tolerance is a combination of all the errors in the machine, setup, tooling, machine rigidity/feeds and speeds/motion controller/motive drivers/ballscrews.


Once the actual vs theoretical travel is known it can be entered into the motion controller, removing that uncertainty. The careful reader will have noted this doesn’t do anything for the actual pitch error I mentioned earlier. That’s a much harder issue to tackle.

With some motion controllers, there exists the ability to ‘map’ the ballscrew errors. The method is tedious, but straightforward: using some precision measurement tool (many use glass linear encoders or ‘scales’) the axis is moved intermittently in the same direction, stopping at pre-set points to measure how much the actual travel was. This is then entered into a lookup table on the motion controller, which can compensate the commanded distance for the ballscrew characteristics.

Here is another excellent video showing the results: RM1605 (16mm diameter by 5mm pitch) ballscrew pitch error compensation: EdingCNC Software (Youtube)


Again, the errors on ballscrews should be worst-case and posted as such, and are dependent on other factors. Using a precision ground ballscrew with a cheap nut/mountings/massive swings in temperature/feeds and speeds exceeding machine rigidity will not have accomplished anything but increasing frustration and capital expenditure.

Here is a good example of someone who purchased a complete axis setup. He is quite disheartened in the mountings performance:

RM1605 Ballscrew with BF/BK12 Bearing Blocks Excessive Backlash (Youtube)