CNC Probing secrets...
Posted by
Kim Lux
on 2004-02-20 18:51:04 UTC
Hi people.
A few weeks back we purchased an ACU-RITE touch probe. While it worked
OK with our TurboCNC controllers, the accuracy and repeatability weren't
what the manufacturer claimed they should be (ie 0.0002") and I wasn't
quite happy with everything.
After giving it some thought, I came to the conclusion that a couple
things could be improved:
a) the probe relies on completing an electrical circuit with the part.
Thus any resistance difference between parts, surfaces, etc. will affect
the readings.
b) machine wear and play affect readings
With these factors in mind, I set about making changes to the CNC
controller code to get better measurements. G50 is the standard center
finding code. I made the following changes:
1) I added a Dcode for the diameter of the hole we are trying to probe.
Without a D code, the controller will run the probe forever until it
encounters a contact. If the operator doesn't have the part set up
right and the probe isn't in the hole, the machine is going to go until
it hits a limit switch. Adding a diameter to the code call limits how
far the machine will go in the event it can't find an edge. (Ever
forget to plug the probe in ? Without a Dcode, you'd wreck it...)
Thus our command for probing a 1 inch hole is:
G50 D1.25 F8; use 1.25 to allow for mis centering error.
This will allow the probe to travel 0.625 inches. If the probe is
anywhere near the center of the hole AND the probe has decent stylus
travel, we can (accidentally) leave our probe unplugged and not wreck
it.
2) I added a Pcode for the number of times I want the probe to touch the
surface. A standard G50 code only contacts the edge of the part ONCE
(for each axis). When dirt, debris, oil, etc. enter the picture, that
one contact becomes pretty sketchy. Thus the command:
G50 D1.25 P4 F8
made the probe contact the edge of the hole 4 times and take the average
for each axis. I let P=1 be the default if we leave the Pcode off of
the command line.
BTW: the probe doesn't go back to the center of the hole when it
reprobes. It only goes far enough to be off the edge, ie lose contact.
This makes the reprobes very quick. In essence the probe goes to the
edge and then does a quick little dance back and forth on and off the
edge. It is really neat to watch.
3) I added a repeat option at the end of each hole centering command
(when in jog mode). Ie At the end of the probe session, the screen
outputs the X diameter and the Y diameter and the total indicated error
between the two. When in jog mode, the user can press one key ("r" for
repeat) to redo the measurement and compare the last indicated error
with the current indicated error. It is a great confidence booster to
the operator to see a probe make several successive identical (or nearly
so) measurements.
4) I added an "untouch" measurement. Touch probes typically stop the
machine when they touch the part. In order to get around the contact
resistance issue between the part and the probe, I added a #code to the
command line to tell the G50 command how to calculate the part edge:
#1 = based on when the probe contacts the part
#-1 = based on when the probe un contacts the part, ie the probe touches
the part, the controller reverses course and notes when the probe STOPS
touching the part.
#0 = based on the average of when the probe contacts and then uncontacts
the part.
Our command thus has the following syntax:
G50 D0.5 F8 p5 #0 where:
G50 = find the center of a hole
D0.5 = don't go more than 0.5/2 inches from the start point
F8 = probe at 8 ipm
P5 = contact each edge 5 times
#0 = take the average of both the contact and uncontact points
#1 is the default if the parameter is left off the line.
The results of this work have been outstanding. Our total indicated
error on a typical hole has fallen from 0.001+" to 0.0001" Probing time
has been dramatically reduced. Confidence in our probing numbers is
very good. Reprobing is very quick.
It is interesting to see the error the various methods generate. Option
#1 is the worst. Even with multiple probings, touching the workpiece
generates inexact numbers, although increasing P really helps. Option
#-1 is the next best. Untouching the probe is better electrically than
touching the probe. Finally, option #0 gives really good data. I
suspect this might be due to a bit of wear/play in the machine setup.
I'm not aware of any play in this machine, but it much have some.
Taking the average of where the probe touches and where it untouches
probably corrects for any backlash that might be in the system.
All these changes were possible because we use a CNC controller that we
have the source code for: turboCNC. I would never, ever, ever use a CNC
controller that I didn't have the source code for. This isn't the first
time having the code to our CNC controller helped us dramatically
improve how we do things.
--
Kim Lux <lux@...>
A few weeks back we purchased an ACU-RITE touch probe. While it worked
OK with our TurboCNC controllers, the accuracy and repeatability weren't
what the manufacturer claimed they should be (ie 0.0002") and I wasn't
quite happy with everything.
After giving it some thought, I came to the conclusion that a couple
things could be improved:
a) the probe relies on completing an electrical circuit with the part.
Thus any resistance difference between parts, surfaces, etc. will affect
the readings.
b) machine wear and play affect readings
With these factors in mind, I set about making changes to the CNC
controller code to get better measurements. G50 is the standard center
finding code. I made the following changes:
1) I added a Dcode for the diameter of the hole we are trying to probe.
Without a D code, the controller will run the probe forever until it
encounters a contact. If the operator doesn't have the part set up
right and the probe isn't in the hole, the machine is going to go until
it hits a limit switch. Adding a diameter to the code call limits how
far the machine will go in the event it can't find an edge. (Ever
forget to plug the probe in ? Without a Dcode, you'd wreck it...)
Thus our command for probing a 1 inch hole is:
G50 D1.25 F8; use 1.25 to allow for mis centering error.
This will allow the probe to travel 0.625 inches. If the probe is
anywhere near the center of the hole AND the probe has decent stylus
travel, we can (accidentally) leave our probe unplugged and not wreck
it.
2) I added a Pcode for the number of times I want the probe to touch the
surface. A standard G50 code only contacts the edge of the part ONCE
(for each axis). When dirt, debris, oil, etc. enter the picture, that
one contact becomes pretty sketchy. Thus the command:
G50 D1.25 P4 F8
made the probe contact the edge of the hole 4 times and take the average
for each axis. I let P=1 be the default if we leave the Pcode off of
the command line.
BTW: the probe doesn't go back to the center of the hole when it
reprobes. It only goes far enough to be off the edge, ie lose contact.
This makes the reprobes very quick. In essence the probe goes to the
edge and then does a quick little dance back and forth on and off the
edge. It is really neat to watch.
3) I added a repeat option at the end of each hole centering command
(when in jog mode). Ie At the end of the probe session, the screen
outputs the X diameter and the Y diameter and the total indicated error
between the two. When in jog mode, the user can press one key ("r" for
repeat) to redo the measurement and compare the last indicated error
with the current indicated error. It is a great confidence booster to
the operator to see a probe make several successive identical (or nearly
so) measurements.
4) I added an "untouch" measurement. Touch probes typically stop the
machine when they touch the part. In order to get around the contact
resistance issue between the part and the probe, I added a #code to the
command line to tell the G50 command how to calculate the part edge:
#1 = based on when the probe contacts the part
#-1 = based on when the probe un contacts the part, ie the probe touches
the part, the controller reverses course and notes when the probe STOPS
touching the part.
#0 = based on the average of when the probe contacts and then uncontacts
the part.
Our command thus has the following syntax:
G50 D0.5 F8 p5 #0 where:
G50 = find the center of a hole
D0.5 = don't go more than 0.5/2 inches from the start point
F8 = probe at 8 ipm
P5 = contact each edge 5 times
#0 = take the average of both the contact and uncontact points
#1 is the default if the parameter is left off the line.
The results of this work have been outstanding. Our total indicated
error on a typical hole has fallen from 0.001+" to 0.0001" Probing time
has been dramatically reduced. Confidence in our probing numbers is
very good. Reprobing is very quick.
It is interesting to see the error the various methods generate. Option
#1 is the worst. Even with multiple probings, touching the workpiece
generates inexact numbers, although increasing P really helps. Option
#-1 is the next best. Untouching the probe is better electrically than
touching the probe. Finally, option #0 gives really good data. I
suspect this might be due to a bit of wear/play in the machine setup.
I'm not aware of any play in this machine, but it much have some.
Taking the average of where the probe touches and where it untouches
probably corrects for any backlash that might be in the system.
All these changes were possible because we use a CNC controller that we
have the source code for: turboCNC. I would never, ever, ever use a CNC
controller that I didn't have the source code for. This isn't the first
time having the code to our CNC controller helped us dramatically
improve how we do things.
--
Kim Lux <lux@...>
Discussion Thread
plastiguy
2004-02-19 13:30:23 UTC
Power Supply for Gecko 320 and servo motors for 3 axis router
Roy J. Tellason
2004-02-19 13:52:27 UTC
Re: [CAD_CAM_EDM_DRO] Power Supply for Gecko 320 and servo motors for 3 axis router
caudlet
2004-02-19 15:25:00 UTC
Re: Power Supply for Gecko 320 and servo motors for 3 axis router
Gregory Kamysz
2004-02-19 18:58:18 UTC
Re: [CAD_CAM_EDM_DRO] Re: Power Supply for Gecko 320 and servo motors for 3 axis router
bull2003winkle
2004-02-19 20:57:08 UTC
Re: Power Supply for Gecko 320 and servo motors for 3 axis router
Jon Elson
2004-02-19 21:36:18 UTC
Re: [CAD_CAM_EDM_DRO] Power Supply for Gecko 320 and servo motors for 3 axis router
Jon Elson
2004-02-19 21:46:09 UTC
Re: [CAD_CAM_EDM_DRO] Re: Power Supply for Gecko 320 and servo motors for 3 axis router
Ed Gilbert
2004-02-19 23:38:56 UTC
RE: [CAD_CAM_EDM_DRO] Re: Power Supply for Gecko 320 and servo motors for 3 axis router
William Scalione
2004-02-20 08:24:38 UTC
Re: [CAD_CAM_EDM_DRO] Re: Power Supply for Gecko 320 and servo motors for 3 axis router
Jon Elson
2004-02-20 09:05:55 UTC
Re: [CAD_CAM_EDM_DRO] Re: Power Supply for Gecko 320 and servo motors for 3 axis router
Jon Elson
2004-02-20 09:50:30 UTC
Re: [CAD_CAM_EDM_DRO] Re: Power Supply for Gecko 320 and servo motors for 3 axis router
caudlet
2004-02-20 13:48:30 UTC
Re: Power Supply for Gecko 320 and servo motors for 3 axis router
Kim Lux
2004-02-20 18:51:04 UTC
CNC Probing secrets...
Jon Elson
2004-02-20 19:38:51 UTC
Re: [CAD_CAM_EDM_DRO] Re: Power Supply for Gecko 320 and servo motors for 3 axis router
Roy J. Tellason
2004-02-20 20:42:43 UTC
Re: [CAD_CAM_EDM_DRO] Re: Power Supply for Gecko 320 and servo motors for 3 axis router
Gregory Kamysz
2004-02-21 07:04:14 UTC
Re: [CAD_CAM_EDM_DRO] Re: Power Supply for Gecko 320 and servo motors for 3 axis router