Even an old worn out machine can hold decent tolerances for the right machinist. Well, maybe not this old and worn out!
One of the great things about my job is I’m in contact with a lot of machinists from all walks–high-end aerospace, mom and pop job shops, prototype and model shops, hobbyists and so on. I get to hear lots of great stories, and I have a number of penpals who’ve taught me a lot over the years. Every now and again, I am inspired by one of their stories and have to pass it along because it has broader teachings.
The techniques that good machinists use to hold tight tolerances on worn out old machines are not just applicable to worn out old machines. They can be used to improve tolerances in almost any environment. They can even be automated by clever CNC’ers. But before I get ahead of myself, first the story.
The Bad Collet and the Job That Had To Be Finished
This particular machinist works in a shop that is not exactly free with their spending. I don’t know whether they are tight or just don’t have much to throw around, but they toss nickels around like they were manhole covers, if you know what I mean. They will run a tool literally to death, and there’s never enough time it seems.
Check your setup first if you’re having issues…
This guy, let’s call him “Rob”, had a job to do, and the parts kept getting scrapped. He was machining some deep pockets in aluminum, and they were so deep, the floors were very thin. The program was done using adaptive clearing toolpaths from Fusion 360. The first time the pocket floor got blown out, he figured he’d made some mistake. He re-zeroed the part with his Haimer 3D Taster, rechecked the tool length and made sure the tool offset table was right on the machine, and restarted the program.
Another pocket floor cut completely through. The job was taking about 20 minutes to run, and he couldn’t tell whether the part would succeed until towards the end of the job. Worse, this was a second op and he had a limited number of extra blanks available from prior ops. Plus, the job was due in just a couple of days. Rob needed to figure out what was wrong and needed to figure it out fast.
After having taken extra care with setup and still blowing out the part, he started to suspect the tool was pulling out of his ER20 collet chuck. So, he took it over to his tool presetter, stuck it in, and measured the tool length. Sure enough, it had pulled out.
Torque those collet chucks down to proper torque specs!
Again, Rob is the sort of guy who always assumes things are his own fault. He figured he just hadn’t torqued that collet nut down enough. He’d read in the past that ER Collets take more torque than you’d think, and usually he didn’t have problems, but he just figured he needed to try again. So, he stuck it in the tightening fixture, got out his wrenches, and really wailed on the torque. That nut was on there good now!
He stuck another blank in the fixture, closed the door on the machine, and punched the green start button. As the job neared the end, Rob could already see he had a problem. Coolant and chips were visible blowing out the bottom of the pocket.
Shoot! Another one of his precious blanks was gone!
A Weldon shank slot in a setscrew holder will stop pullout, but you need to have the special slot…
He checked and once again, the tool had pulled out enough to ruin the pocket. By this time he was thinking the darned collet was just bad. They are consumables, after all, and this one was no spring chicken. So, he went searching high and low for another collet of the correct size. There were none to be had. He looked for a setscrew style (Weldon shank) holder–still no joy, the shop didn’t keep them around and besides, he had no endmills in the correct size with the groove on the shank.
What to do?
Rob decided he would just have to slow things way down in the cut. He was using a really nice Lakeshore Carbide (love those end mills myself!) High Helix end mill, and they can generate quite a bit of force due to that helix angle. It was clearly just too much for this end mill.
Rob was sweating bullets now, because there were very few extra blanks left. In fact, he was down to just one extra. He could scrap one more, and then every one after that had better work. Knowing he’d never get the job out on time, and cursing the fact that he was alone after hours in the shop and couldn’t just grab a brand new collet that would work, he turned his feedrate override down so the feeds would only be 20% of what had been programmed. Surely that would be conservative enough, he thought.
Less than 20 minutes later, Rob was really feeling that sinking feeling in the pit of his stomach as he watched the floor get cut out of the pocket on his last extra blank. Slowing things down had not done the trick.
Chatter is repeatable, and there are well understood techniques to eliminate it…
Rob did notice that in all the prior jobs, there was a loud squeal of chatter at one point. He’d heard that too much chatter can literally shake a tool loose and wondered if that wasn’t what was plaguing his collet. Unfortunately, he was all out of options. It was time to find a strategy that just could not fail.
The pocket he was cutting was deep–1.25″ with a 5/16″ end mill. The chatter was probably due to rigidity being a problem on such a long tool stickout to get to the bottom of the pocket. Chatter is repeatable, and there are well understood techniques to get rid of chatter, but Rob was out of time and options. He needed to hit on a strategy that would work right the first time and every time thereafter.
Suddenly he had an idea. He opened a copy of the program in his g-code editor. He would split the program into 2 parts. The troublesome pocket was being roughed out in three passes, each one going down 1/3 of the depth. His first program would cut the first 2 passes and then stop. He would measure the depth of the pocket and then adjust his Z zero to the difference so the last pass would know not to cut deeper than intended. That second program would do the final pass. Rob knew there was a chance there’d still be enough pullout in the second program to scrap the part, but if his theory about chatter was right, it was only happening in the first pass and would not be a factor.
In any event, this was the best idea he had and it was time to get on with either finishing the parts or making some more blanks. Rob checked everything twice, kept the feedrate override down to 20% and pushed the green button. He ran the first program and measured the depth of the pocket when finished. Sure enough, it was too deep. He moved the tool to Z = 0 and reset the DRO to the negative difference in height. He loaded the second program and run it. The second pass was much shorter, and towards the end, Rob was holding his breath, hoping he wouldn’t see coolant and chips come bursting through the bottom of the pocket.
The program went all the way through, the spindle retracted, and the table advanced towards Rob. Without removing the part, Rob measured the pocket depth.
It was perfect! Within less than half a thou of the desired spec.
He finished the whole run of parts that night and heaved a sigh of relief. That next morning he made sure to ask for more collets to be ordered too.
That’s not Rob, but a good machinist will always adapt and overcome!
Using In-Process Inspection to Improve Tolerances
What Rob did is just one example of what’s called “In-Process Inspection.” Basically, you take a measurement on a part that’s in the middle of being machined, and you adjust the machining process to compensate for any error you detect in the measurement.
There’s an old saying that if you can measure it, you can machine to it. In Process Inspection takes that to heart.
The trick is knowing what you can or can’t change with this technique, and when to apply it. It’s possible to adjust for a lot of different types of error, but not all.
Let’s consider just a few.
You can adjust for depth as Rob did by measuring on a prior pass. In fact, you can adjust most any linear (straight line) dimension this way. If the variance isn’t too great (and it usually isn’t), you might even adjust your finish pass by measuring the result of the last roughing pass.
There are a variety of ways to adjust:
If you are using Tool Compensation (i.e. if that was turned on in your CAM software and you’ve got G40 and the like in your g-code), you can adjust the diameter of your tool because the tool path is the centerline of the tool. The adjustment is made in the tool table. The ability to do this kind of adjusting on the fly is a big reason why you’d want your g-code programs to use Tool Comp.
This tool touch setter will measure tool diameter as well as length–critical for holding tight tolerances!
BTW, it surprises a lot of newcomers to learn that the tolerances on endmill diameters may not be that tight unless you’re paying through the nose. It is often important to account for variances in cutter diameter to hold tight tolerances. This can be done by measuring the diameter in an offline toolsetter, adjusting for it with a tool touchsetter mounted on the machine (assuming it can measure both tool length and diameter), or by simply cutting a test and measuring the result. The latter is the most accurate because it accounts for things like tool deflection and runout.
A little bit of easy g-code programming and you can add a macro variable that is an adjustment to any coordinate in your CAM (or other) generated part program. It’s super easy to adjust the Z coordinate on a final finish pass to face a part so it’s the right length, for example.
You’d write the program to use M1 to stop so the operator can make a measurement and set the macro variable accordingly.
Use G-Wizard Editor’s Conversational CNC to write the g-code for you…
It’s common practice with CNC Lathes to make trial cuts part of any long-running job. You load a new bar (or bars) in the bar feeder, and you run a set of trial cuts. These cuts don’t have to include the whole part, just a simplified version that has all the key dimensions with tight tolerances represented. You may also just run one part too if it is fast.
So, the operator runs the job for the trial cuts. He measures to determine how far out of tolerance the key features of the part are. Then he makes adjustments based on the measurements and sets the job in motion to make the rest of the parts. He can use wear offsets or any of the other methods described.
Say you are not comfortable with the other methods, but you have made trial cuts and know where the problems are. You could use a Conversational Wizard like the one shown above to make a two-part program like our guy Rob did. Do the roughing in the first part. Measure the key dimensions and program finishing passes using the Conversational CNC so the diameters and lengths are adjusted with a finish pass that’s just right.
In our story, Rob could’ve changed the Tool Length before running the second program to account for the pullout. He could’ve even measured that tool length instead of measuring the pocket depth. In fact, if he’d had a tool touchsetter in the machine, he could’ve automated this adjustment by just resetting tool length in the middle of the program. More on that automation later, but re-measuring a tool in-process is common. It lets you check for broken or chipped tooling and account for normal tool wear on long part runs.
Part Zero Tweaks
In our story, Rob tweaked the Part Zero “Z” to compensate for the error he was having. You can run until you are ready to measure and tweak accordingly. The problem with this approach, is Z is about the only dimension that’s going to have a systematic error where you’d want to tweak this way and not worry about what happens further along in the part program. If you change X or Y, you’d better be sure it’s the right thing further along. It probably won’t be.
Change End Mill Size
This is definitely not about holding tolerances as end mills don’t come in enough sizes to make it work. But many a machinist has made things work just by sticking a bigger endmill in and running the same program. Keep it in the back of your head for just such an emergency.
Tool compensation works on a mill for interpolated holes. Measure the bore diameter (or boss outer diameter) before the final pass, adjust tool diameter in the tool table, and run.
Compensating for Acceleration Limits
G-Wizard’s Helical Interpolation Mini-Calc will adjust feedrate for machine acceleration limits…
Machinists often find they have to slow down on interpolated holes to maintain accuracy. This may be due to the acceleration limits of their machine. We’ve all seen pictures of the astronaut training centrifuge, right? Going around in a circle creates significant acceleration forces. If your machine’s servos (or steppers) can’t accelerate fast enough, that hole won’t be round or the right diameter.
G-Wizard Calculator has a special function to help compensate for acceleration by slowing feeds appropriately.
Lathe operators are quite used to Wear Offsets as a way to adjust turned diameters (ID and OD) so they are within tolerances. This is their version of the mill operator’s Tool Comp.
Adjusting for Taper “Zones” on a manual lathe…
Taper is a fact of life in real machine tools. Whether you’re trying to machine a (nearly) ideal cylinder or trying to match a given taper to very tight tolerances, you will probably need to adjust.
I remember adjusting for taper years ago on a manual lathe. I had it dialed in as best I could, but was still out of tolerance. So I turned a trial diameter at one end, turned the same diameter at the other, and measured the difference. Then, when I drew some lines with a Sharpie on the cylinder to identify zones where I needed to adjust. I baby-sat the compound and turned the dial just a little bit at each zone to balance out the taper.
My part was in tolerance!
On a CNC, you can turn tapers because the lathe can make compound motions (like turning more than one handwheel at the same time on a manual machine). So, if you measure excessive taper, you can program around it.
Have you measured your machine’s squareness? Are X and Y precisely 90 degrees to one another throughout the range of travel?
If your tolerances have to be tight enough, or if squareness is relative to a part feature, you may need to adjust.
CNC mills have this cool feature called “coordinate rotation.” With a simple g-code, you can rotate the coordinate system to compensate for some of these errors.
This is often used with part setup where you measure the angle of some feature and apply a coordinate rotation to square it up to X and Y. This can eliminate the need to tram a fixture precisely and save a lot of time.
Automating In-Process Inspection Techniques
Digital probes: the key to automating in-process inspection techniques…
As you’ve no doubt concluded, these adjustments can pretty much all be automated and programmed into g-code if we can measure the needed corrections automatically. The trick to that is 3D touch probing. I’m not going to try to delve into all those details here, but suffice to say these are powerful techniques. Companies like Renishaw, for example, use them to dramatically increase the precision of their machining work.
Lots of folks are doing this kind of thing. See our article 37 things you can do with g-code programming that you can’t with CAM for some ideas. See also our survey results for CNC Probes and Toolsetters to get an idea how widespread this kind of thing is.
Like what you read on CNCCookbook?
Join 100,000+ CNC'ers! Get our latest blog posts delivered straight to your email inbox once a week for free. Plus, we’ll give you access to some great CNC reference materials including:
- Our Big List of over 200 CNC Tips and Techniques
- Our Free GCode Programming Basics Course
- And more!
Just enter your name and email address below:
100% Privacy: We will never Spam you!
Bob is responsible for the development and implementation of the popular G-Wizard CNC Software. Bob is also the founder of CNCCookbook, the largest CNC-related blog on the Internet.