CNCCookbook: Be a Better CNC'er

Want to be a better CNC'er?

Get our weekly newsletter plus a package of greatest hits, special tips, and more, all for free.

I'm Ready to Be a Better CNC'er, Hook Me Up!

Tuning Up My IH CNC Mill for Accuracy

Once I got my mill up and running, I wanted to check its accuracy and improve on it as much as possible. Note that this was not a factory CNC'd mill. I bought a used mill of indeterminate accuracy (I never used it before converting it) and then retrofitted the IH CNC kit to it. Not surprisingly, it was pretty far off the first time I attempted to use it. So, I embarked on a plan to fix that.

My method was to use a particular part, in this case a bearing block that was part of the Elmer's Comber Rotary steam engine. I would machine the block, inspect its dimensions with my Mitutoyo Digital Micrometers, make adjustments to the mill, and try again. This proved to be an iterative process, with a lot of "three steps forward and two back" sort of progress, but I must say I learned a lot along the way. I used the cumulative errors across every dimension as my measure on each trial of how I was doing. I also kept an eye on the average value of the errors, the worst error (what was it on, how bad was it, and what does it mean?), as well as looking at the errors relative to the axes. I listed X errors and Y errors in separate columns.

On this page, I'll go through each trial, show what errors I discovered, and talk about what I did to try to correct them and how that turned out. Here's what the parts look like, BTW:

A couple of very early trials...

Baseline Trial (Sum of Errors: 0.0414", Worst Error: 0.0121", Average Error: 0.0083")

On this first run, I just could not believe the errors would be this bad. I had calibrated the steps per inch carefully and thought my mill would do a lot better. The worst error (0.0121") was in the distance from the bottom of the part to the bottom of the rectangular window. After scratching my head, I got to wondering whether the endmill was really cutting the diameter advertised. I was using a 3/16" endmill, which ought to cut a 0.1875" slot. So I devised a way of measuring the actual cut width. I took a piece of scrap, mic'd it, cut it in half, mic'd each half, and concluded the difference was the endmill's cut diameter. Mine turned out to be 0.1847" instead of 0.1875". That's a long ways off!

I asked around and the basic response was very high quality endmills are good to a few tenths, but that errors like I was experience were common for run of the mill (sorry!) endmills. DOH!

Trial #2: Entered the Actual Endmill Cutting Diameter into the CAM Program (Sum of Errors: 0.408", Worst Error: 0.107", Avg error: 0.0068")

Things were better, but still pretty bad. A couple of things suggested themselves. First, having discovered how far off my endmill was, I wanted to try another endmill from another maker. I ordered some 3 flute endmills from Maritool, which has a good rep on the PM Board. I've done business with them before and always been happy. I was careful to measure the true cutting diameter this time. The 0.1875" endmill was cutting a slot 0.1842" wide. Oh well, no more accurate. But it sure cut nice with the 3 flutes!

Second, I noted the Y-axis errors were much worse than the X. In addition, I got a fault or two on Y. So I retuned the Y servo.

Trial #3: Tune Y Axis + New Endmill (Sum of Errors: 0.0251", Worst Error: 0.009", Avg Error: 0.0042")

Much better!

So much better, I thought I'd try to tune things by "tweaking" the endmill's stated diameter in the CAM program. This is not unlike tweaking tool wear which is a common practice to keep accuracy.

Trial #4: Endmill Diameter Tweaked (Sum of Errors: 0.0174", Worst Error: 0.0092", Average Error: 0.0029")

Even better! Now we're cooking. At this point I could see no further rhyme or reason in which measurements were out. In addition, I'd been worried about encoder noise for quite a while since Mariss F. started complaining about problems with US Digital HEDS encoders. So I installed some bypass capacitors. This immediately necessitated some servo retuning, which I took as a good sign. In addition, I needed to recalibrate the steps per inch for both the X and Y axes, which also seemed a good sign. These were signals that the capacitors were doing something.

Trial #5: Capacitors on HEDs Encoders, Servo Retune, Recalibrate Steps/Inch (Sum of Errors: 0.0203", Worst Error: 0.0075", Average Error: 0.0034")

Trial 5 reflected a setback. While the worst error was improved, the sum of errors and the average of errors got worse.

I decided to recheck my cutter diameter. I also wanted to tighten the gibbs and check the backlash. The X-axis had 0.0006" of backlash, so I left it alone, but Y had 0.003", which is a ton for ballscrews! Hence I cranked up the preload and it actually got down to 0 measurable backlash on my Interapid 0.0001" indicator. Cool beans!

Time for another trial.

Trial #6: Changed cutter diameter to measured 0.1842", Tightened X,Y gibbs, Set Y preload for 0 backlash (Sum of errors: 0.0295", Worst error: 0.0110", Avg Error: 0.0049")

Can you feel my frustration? Every error measurement suddenly got worse. Fooling around with something else, I managed to break the endmill I had been using, so it was time to try a new one.

I measured it's cut diameter (0.1835", each one seems worse than the last!), and I decided to try less depth of cut. I had been running 0.050", but perhaps this was making the cutter deflect. I reran the CAM program to get g-codes with 0.020" depth of cut. Lastly, I hooked up my cold air gun and ran a continuous flow while cutting.

Trial #7: New endmill, Reduced Depth of Cut, Continuous cold air cooling (Sum of errors: 0.0387", Worst error: 0.0105", Avg Err: 0.0064")

Things got worse again!

I tweaked my cutter diameter again in the CAM program to a figure that as best I could determine would be optimal for both axes. It wasn't going to get rid of all the errors (they weren't symmetrical enough) but it would help. I was using 0.1855" instead of 0.1835".

Trial #8: Tweaked cutter diameter (Sum of errors: 0.0301", Worst error: 0.0081", Avg Err: 0.005")

That helped quite a bit. Still not as good as Trial #4, but directionally correct.

I recalibrated X,Y steps/inch yet again, this time using Mach3's calibrate function. I had broken the endmill on another project, so had a new endmill and went with the measured cutting diameter: 0.1805" this time.

Trial #9: Calibrated X,Y steps/inch, New 2 flute 3/16" endmill, cutter diameter set to 0.1805" (Sum of Errors: 0.0165", Worst Err: 0.0058", Avg Err: 0.0027")

We're back! Best run yet. Unfortunately, reducing the error from here is really a twitchy process with lots of setbacks. Getting used to it.

I decided it was time to square the mill column by leveling the machine and then shimming out the remaining error. I then trammed the head. I touched up servo tune again, and then recalibrated endmill diameter. The first run faulted on a Z move.

It turned out I just needed a few pumps on the one shot and things were moving again. I had forgotten to keep the lube flowing and the Z-axis works particularly hard due to the weight of the head. In any event, there were some pretty bad errors. You can't just restart after a fault too easily. Need to go back and relocate things. Not having home switches or other means, I just decided to start over and get a clean run. It did look like I need to bump up the endmill diameter to 0.1850 based on some other test I'd done.

Trial #10: Squared the Mill Column, Trammed the Head, Touched Up Servo Tune, Recalibrated Endmill Diameter (Faulted run)

I won't record the errors on this trial because the mill faulted, so it was way off. But I will talk a little bit about squaring the mill column. The goal is to make sure that when the head goes up and down, it does so square to the mill table.

Before attempting to square your mill, be sure to level the table. I measured my squareness before and after leveling and the difference was substantial. So substantial that you can probably get perfectly square just by tweaking the leveling feet of you mill, just like with a lathe.

Before attempting to square the column, be sure to level the table!

The easy way to check this is with a dial test indicator in the spindle, and a cylindrical square on the table. You need to measure 2 planes corresponding to X and Y, so I positioned the cylindrical square twice:

Cylindrical square is inline to measure whether the column "nods" forward or backwards from vertical. The indicator should stay put as the head jogs up and down...

I started at the top and went down 8". The need barely moved a tenth!

Now we rotate 90 degrees and we're going to check whether the column leans left or right by moving the head up and down and checking against the square...

I was out about 1 thou left to right and nearly 3 thou of "nod" forward. This was easily fixed with a little shim stock. Having squared the head, I went on to tram it as well.

Trial #11 (Trial #10 faulted): Tweaked endmill diameter to 0.1850" (Sum of Errors: 0.0165", Worst Error: 0.0047", Avg Error: 0.0028")

Things are nominally better. At least the worst error got better even though the sum of errors is the same and the average error is a tenth worse (that tenth is in the realm of experimental error, this machine won't be accurate to tenths, so ignore it!).

At this point, I had been frequently checking the Smoothstepper support boards to see when backlash comp would be available. I couldn't help but wonder whether that was my problem. While i had no Y backlash, X had 0.0006". Maybe that was working against me. I came across some notices that there were some pretty significant positioning problems fixed in the latest couple of smoothstepper releases. I checked, and sure enough, I did not have those releases, so I downloaded and reinstalled them.

Trial #12: Latest Smoothstepper Drivers (Sum of Errors: 0.0381", Worst Error: 0.0141", Avg Error: 0.0064")

Wow, backtracking again. Sure kinda wished I hadn't installed that update, but not sure it's a great idea to roll it back either.

At this point I decided I needed more information on what the mill was doing. I have a Fagor DRO, accurate to 0.0002", that I bought for a lathe. It's only 2 axes, but I decided to mount this DRO to the mill's X and Y axes and try to analyze more closely what was going wrong. Hopefully this would let me be a lot more systematic in my diagnosis because I'd have a lot more information.

Trial #13: Fixed X-Axis Backlash, Recalibrated X Using DRO, Remeasured Cutter Dia to Actual (Part Faulted, but still was within an average of 1.4 thou!)

Here is the X-axis DRO:

The reader head mounts where the home/limit switch goes. The DRO is only temporary and I didn't want to make any new holes in my mill! Note how the bracket protects the head a bit...

Each end of the scale is held by a little L-shaped bracket. You need to be able to tram the DRO in so it is level and square with the table...

And here is the control panel for the DRO...

The bracket was very easy to make using the CNC Wizards in Mach3, and especially the Newfangled Wizard. Here are some pix of the construction of the reader head bracket:

Slotting for the mounting bolts...

Love my 5/8" Helimill. Those APKT inserts cut through aluminum like butter!

As soon as I got the DRO installed I immediately uncovered my major malfunction ("Private, what is your major malfunction?" asked the Drill Sergeant in Full Metal Jacket). It turns out the preload for my X-axis ballscrew had come loose and I had nearly ten thousandths of backlash! Darn, the first time I measured it was just a few tenths. This explains a lot!

I tightened the preload again and rechecked backlash with the DRO. Still a bit high, so I loosened by X gibb slightly. Aha! That helped too. I had things locked up too tight.

I ran my part again, but managed to fault. This is usually because I've let the ways dry out. Got to remember to pump that one shot because I'm running the gibbs really tight as I keep saying. I need to go through and gradually loosen them until I see backlash pick up and then use that as my setting.

Even after faulting and using my edgefinder to relocate the part, all features were within 1.4 thou on average of the expected. My guess is I'll be able to get well under a thou in another trial or two!

Meanwhile, I thought I'd map my X ballscrew just to check its accuracy with the DRO. Here is what I found with a series of half inch jogs:

The left axis shows the actual move of each commanded 0.5000" move as measured by the DRO. If the ballscrew were perfectly accurate, the graph would be a straight line centered on 0.5000".

You can see the righthand 40% of the ballscrew is qutie a bit more accurate than the left, although the first maybe 10% on the left is quite good too. Nevertheless, the whole screw moves to well under a thousandth of accuracy. You can also see that the errors are not cumulative, but are more periodic. The total error in 24 inches of motion was 5.6 thousandths and the screws are advertised as having less than 3 thou per 12", so this screw is within spec.

 

 

{PageNav}

Featured Articles

Step-By-Step Guide to Making CNC Parts

CNC Router Cutter Types

Why Use a Single Flute Endmill?

Step and Servo Motor Sizing

The Truth About Tool Deflection

10 TIps for Router Aluminum Cutting

2 Tools for Calculating Cut Depth and Stepover

CNC Machine Hourly Rate Calculator

Special Purpose CNC Calculators

Feeds and Speeds Guide

CNC Cutter Guide

Feeds and Speeds By Material

G-Code Tutorial

  Feed Rate Calculator

Sales, and Special Deals

 

GCode is complicated.
G-Wizard Editor
makes it easy.

Try It!

 

Feeds and Speeds:
Made Easy.

Try G-Wizard

 

 

Do you want to be a better CNC'er?

Get Better Tool Life, Surface Finish, and Material Removal Rates.

 

Start Now, It's Free!