Automatic Tool Height Setup Question

Previously I used the AVID touch probe and setup the tool table by using a dowel in tool 1, then setting the offsets for each tool by touching them off and setting them in the tool table (using the offsets screen)

I have recently switched to a touch probe after having some issues with probing smaller parts and also added a tool height setter. The setter seems to work correctly, if I manually move a tool over it and probe Z it touches off. Touch probe is set as G31, tool height is set as G31.1

Now my issue is how to use the tool height setter either automatically or manually (as I did with the AVID touch plate) .

  1. Do I place the probe in the tool holder and touch it off on the tool height setter then touch of each tool?

  2. I would like to setup the probe as tool 99, most Mach4 AVID setups I see use tool 1, is it an issue to use tool 99 instead of tool 1?

  3. If I wanted to do a tool height check after each tool change would that process be any different than a manual process?

Thanks in advance!

I keep an 8mm dowel in tool #1 as my master tool. Makes things nice and simple. Sounds like you are doing the same. Tool #99 is my probe. Tool #98 is my pen/marking tool and kind of falls under the same grouping.

You can’t use your tool length sensor to measure your probe because both having moving surfaces.

Since I can no longer use the AvidCNC touch plate I purchased this from Amazon/iGaging;

Its a “ok” tool setter. Its repeatability is smaller than my AvidCNC machine so there is that. Its only purpose is to get tool #1 and the probe to agree. Basically to find the difference between #1 and #99 for the tool length offset field in the tool table.

If you look at this style of tool setter the way you “calibrate it” is you press it down on a known flat surface and hit the zero function. I use my phone screen as that flat surface.

The ring around the sensor on the tool setter is wide enough that you can touch your probe to it. This means that with the dowel you can get the setter to zero, zero the Z workspace, switch to the probe and then probe to the ring around the sensor and be within the repeatability of your machine.

Now, I assume you know this but just to restate for others, remember to set the probes G43 offset every time you pick it up and it will be in justification with tool #1. Now you can use the probe to find the work offsets.

As an aside, the reason you see CNC machines with tool length sensors testing the tool length each time it picks up a tool isn’t to measure its length BUT to make sure the tool length is as expected. Partly for sensing tool breakage but more for checking the correct tool was placed in the correct slot.

I would make the tool length sensor part of the tool change procedure as a sanity check.

Just be advised that some tools will not work with your tool length sensor. Tools like spoilboard fly cutters will need to be offset accordingly. So in your tool change script look at the tool diameter as part of the check before testing the tool length.

ATCs are wonderful things but they also mean more checks need to be performed to avoid crashing expensive equipment.

1 Like

Ok thanks this is the one I got -

Is your setter connected to Mach4 or are you manual entering in the offset values in the tool table?

I would like to reclaim tool #1 and ditch the dowel but if I can’t that’s fine.

Sorry I am being dense here, I know I am missing some super basic understanding here…

1 Like

No, you aren’t being dense. I am just terrible at explain it :rofl:

I actually have the exact same tool setter. RATTMMOTOR is reliably “better” than the 99% junk Amazon normally sells.

So that is my “tool setter” or “tool length sensor.” It is mounted on a retracting arm and has a fancy switch to allow it to use the same wire as the probe. It is also NC variant as well.

So the RATTMMOTOR Tool Setter is a permanented install and is used for every tool change and a M code is also used to take the initial measurements for a new tool, storing the offsets into the tool table.

Now, that second little manual tool setter from iGaging is ONLY to determine the probe (#99) offset from the master tool (#1). Once you have that value its just put back into the tool box until you mess something up.

Once you find the offset for the probe and recorded the machine position of the tip of the dowel (#1) so you can calculate the offsets for new tools then sure. You can recycle the ISO30 holder “for now.”

I tell folks that ATC are evil expensive! Most never realize it but here is just an example;

A “nice” ISO30 tool holder is about $150. Just to fill the 10 tool carousel you have spent $1,500.00 and we aren’t including the $30 to $80 for the tool in the holder!

It doesn’t take long before you are like me and have more money invested in tool holders and tool than you do in CNC machine.

So, I would advise just biting the bullet and keep that #1 as the master and put it up someplace safe because it is literally the “key” to all of your other tools.

This is gonna get expensive. When a tool goes into a holder it stays until it either breaks or starts tearing. What makes the ATC superior is the speed at which that individual tool can become usable.

If you only have a few tool holders and you are constantly swapping tools around in them, you don’t have a ATC. You have a pain in the butt that will eventually bite you when you make a mistake being the human that you are.

LOL yeah man I know about the $$$$$ spent on tooling!!!

Ok so in the tool table the probe (tool 99) should have 0 offset, tool 1 has the offset from the probe to the dowel, then all other tools have the offset from the dowel to each tool? So when I probe with the probe and get to Z0 Mach4 is going a calculation like Tool 1 offset + Tool 2 offset ?

Backwards, actually! I know its confusing as crap but it is what it is!

Tool #1 should ALWAYS be set to 0. It is the machine offset of that tool’s tip that you compare everything else in the tool table too.

Code for this “could look like this:”

------------- Get touch position and set offset -------------
local ZProbed = mc.mcCntlGetPoundVar(inst, 5063)
------------- Store Z Offset for T1

WriteRegister("ToolOffsetProbe/t1Z", ZProbed)

Notice I store it in a register and NOT the tool offset for #1!!! That is because this value we just got is the REAL key to tool #1. It is the absolute Z of the tool tip for #1.

Then you would compare the next tool to that value and use it to calculate the offset;

------------- Get touch position and set offset -------------
local default_tool = GetRegister("ToolOffsetProbe/t1Z")
local ZProbed = mc.mcCntlGetPoundVar(inst, 5063)
local ZOffset = ZProbed - default_tool

mc.mcToolSetData(inst, mc.MTOOL_MILL_HEIGHT, CurTool, ZOffset)
mc.mcCntlSetLastError(inst, string.format("Auto tool setting complete, Offset = %.4f",ZOffset))

NOW!! That little manual tool setter I showed you? The process to determine the probe (#99) offset from #1 is manual. You have to set that bad boy by hand. So tool #99 will have an offset and when you pull it off the tool clamp to probe with you will need to do it like this to make it work;

T99 M6
G43 H99
< do your probe commands here...>

And! Don’t forget to make the same before doing the same to the tool length sensor with #1;

T1 M6
G43 H1

Now, one difference is once you start the tool length scripts you generally don’t need to set the offsets for the tool after that because you are only looking at absolute machine coords.

If you base your tool offsets from the nose of your spindle, you don’t need to have a “master” tool. Every tool then has a positive offset value that you can sanity check by just looking at it. It also makes using a spindle probe easier.

Yes I have seen people do it that way as well. Do you need a tool measuring setup like this?

Yep, you will need to measure it by hand.

I’m lazy. I will program the machine to do it for me because if I know anything, humans are fallible.

UPDATE: I guess you could touch the tool setter with the lip of the spindle and then use that absolute value as the Z offset. BUT remember that G43 is a offset as calculated from #1 in the tool table. So you still need slot #1 to be zero.

Not sure how that makes using a probe easier. Please enlighten me! I am always up for other points of view.

In my setup the only tool that is not set by the tool setter automatically is my spindle probe. I first found the spindle nose with the tool setter and set that as zero. I then manually inserted one of my tools and manually touched the tool setter to find the tool length. Using that number, I setup the mach 4 tool auto tool setter settings to get the automatic measurement routine to match my manual measurement.

No, you do not need that. It also wouldn’t work for an S30 ATC spindle unless you had some sort of drawbar fixture that exactly matches the spindle to hold the tool in before measurement.

I should have said it makes a spindle probe easier to setup. You don’t need any additional tools and is a simpler process in my mind. You just set a suitable location as Z0 with a tool you have already measured with the offset active. Then swap to your spindle probe and manually touch (not G31) that same position with no offset active. When your spindle probe goes active, the current Z position is the spindle probe offset

Ah, ok. Understood. All valid points.

To me, tool #1 being a real-world 8mm dowel makes automation of the process easier and less error prone. When I am not there the operators are going to grab #1 off the wall and throw it on the table and I don’t have to worry about them reading anything other than the Mach4 operator manuals.

In a more hobby or small shop setting though I can see the desire to have “nice numbers” and not having to waste $150 keeping a master tool around.

What is the saying? More than one way to skin a cat?

I built the machine and all the custom logic so that none of our operators need to know anything about offsets unless they want to learn. We use a custom 16 tool rotary ATC in an enclosure that doesn’t allow you to change out tools manually. There is a custom script that will manage the replacement, adding and removal of tools. If the job uses a tool that is not in the rotary ATC, our M6 script has the logic to handle manually inserted tools and always measures every tool that isn’t from the rotary ATC on tool change.

Cool, would love to see pictures!

I plan on starting a topic with details on my whole setup sometime in the future once I have finished a couple things.

Thanks for all the info guys! I must be extra dense because I spent all morning setting this up, went to probe Z a work piece and it worked for the 1st touch but the 2nd touch went past the probe hit and bent the probe tip.

Here is what I did:

  1. I used the AVID touch plate to set the offsets from the master tool to all the other tools I have. Touch plate was set to G31

  2. Swapped to my probe manually, set my tool number to 99 where I want to setup the probe.

  3. Swapped to the offsets tab, made sure I was in machine coordinates (I was in machine when setting the other offsets) . Also made sure the tool number was set to 99 here as well.

  4. In the ESS config I set the 3D probe (tool 99) to g31

  5. Replaced the Avid probe with a 1-2-3 block on my table. The thinking here is that the Avid touch plate is 1 in high and so is the 1-2-3 block (or at least close enough for this exercise)

  6. Manually jogged the 3D probe down to the top of the 1-2-3 block in .001 steps until the probe hits.

  7. Hit “Set Tool” and checked the tool table and made sure the tool table was update and it was and seemed correct.

  8. Put Mach into Work coordinate mode

  9. Opened the probing tab, jogged the probe tip down close to the top of the 1-2-3 block and hit “Set Z Zero”

  10. Hit the measure Z button in the single surface tab, probe goes down, hits the top surface, retracts, and then plunges down way past the top and bends the probe tip.

I am confused clearly :laughing: :laughing:

Here is my tool table after setting the probe offset

Bill, are you using the AvidCNC touchoff button?

No I am using the offset and probing screen from the wrRouter screen set that I copied over to the Avid screenset.

What I found is those buttons will do the probing with the G43 turned off, once they are finished they re-enable the G43 and set the tool position with that turned on. If its not set right suddenly the tool will dive into the work piece.


I think what happens is once it find the zero, it then enables the g43 and sets the tool position to something like 1 inch above the surface.

Stupid me didn’t realize it but that would be half inch below the surface of the thing I just probed.

1 Like

Interesting but that explains a lot!

So do you still use the AVID Touchplate UI when probing with the 3D probe? I am not finding the touchoff button but I have a vague recollection of seeing it before.