Is anyone using an automatic tool height setter?

I was wondering if anyone added an automatic tool height setter to their setup. (I’m talking about something like this)

I’ve been thinking it would be great to not have to manually re-zero after every tool change. But getting an automatic tool changer seems like overkill for the type of work I normally do.

Mostly wondering about the mach 4 setup for such a beast. Surely I can’t be the only one to ponder this.


I have just started fooling around with nearly that exact same one you have. I’ve been working my way through the software side of things. If you can get your head around Lua you can customize Mach to do it…

Check this video out:

This is how you can do it with the Avid CNC touch plate. This method just resets the Z zero mid job. That’s one way to do it. Another way to think about is would be to set a tool length, and also have a Z zero…

I think that’s what you’re after. You can do all of this now manually in Mach, and if you dig into Lua a little you can automate it in the M6 script.

Here’s another video that’s worth checking out: Mach4 Basics Auto Tool Zero - YouTube

I’m using the routine that comes with the Mach 3 2010 screen set (here: Mach3 2010 Screenset )

It works really well and makes tool changes quick and painless. Z is always set dead on.

Hi folks,
Whats the difference between what you are talking about and Avid’s own Auto Z Plate like this guy?

You use two touch plates. One on the material and one fixed. After initial Z off the material you run your first tool. When it comes time to change the tool, the software routine with stop at a tool change position, you change the tool, then the software moves the tool to the fixed plate and touches off. It automatically calculates the new z-zero height based off the difference between the old tool zero and the new tool zero and sets your z-zero appropriately.

This way, you never have to manually set the z-zero height for multiple tools in a job.


My thought is that I would want both. The avid touch plate would be used in the beginning to set the appropriate x, y, and z for my stock. But then after a tool change a specialized fixed sensor could automatically set the different in length of the tool. This would let me do manual tool changes more conveniently. But yes, one could use the touch plate to do everything, it is just more work.

It seems like I should be able to wire a new sensor into unused pins on the ESS, and plumb that info into mach 4. Right now I am just in the googling stage of planning though, and haven’t even gotten a prototype working yet.

Incidentally I think mach 4 customizations might be a good section of forums to add. I know I’d love to be able to copy other peoples work for something like this, an automated tool changer, or even just a sweet configuration for using a game controller to drive the cnc.

1 Like

Does this mean you use mach 3, or did you adapt this for use with mach 4?

Any recommendation of which actual hardware to use? I see prices vary quite a bit, and I don’t think I can trust their accuracy claims.

Greenleaf, I had exactly that set up on my older machine and I used Mach 3, and Gerry’s screensets. It was just a piece of flat bar I had fixed on one corner next to the machine home. One thing to keep in mind is that you need to run a ground for the touch plate through to the router/spindle chassis.

I’m using Mach 3, since that is what the machine came with when I bought it back in 2017. I’ve been thinking about switching over to Mach 4, but it sounds like I won’t have any less problems with mach4, just different ones :slight_smile: Not that I have many problems. Right now mach 3 is working well, and if it aint broke…

1 Like

I use a fixed position toolsetter - but it just rests in a slight recess cutout, as when cutting a full sheet the dust boot would crash into it if rigidly fixed. I have it programmed into the M6. Because I don’t have a toolchanger I don’t use tool offsets. On a M6 it just moves to toolsetter position, user confirms everything is safe, and it probes the current offset relative to machine origin. It then moves to toolchange position, user does a manual toolchange and then resumes. The spindle probes the fixed toolsetter again and adjusts Z offset to make it the same as the first tool. It continues the program. Simple and easy.

I also measured the Z height of the toolsetter, and because its mobile (due to the aforementioned full sheet need to move it occasionally) I have a separate macro for doing Z offset probing for stock surface setup. The one unit does double duty. Its a chinese one with overtravel.

I also use a 5$ cross laser for XY setting 99% of the time. Makes toolchanges/setups really fast overall.

I’ve set the macros up in UCCNC, Centroid and Linuxcnc, it works in all of them.

How did you do the programming for this in Mach?

Unfortunately I’ve never used Mach 3 / 4 so don’t know the exact implementation for those, just the three platforms I’ve mentioned. I imagine it shouldn’t be too hard though. It’s worked on all the other platforms.

Please share your findings when you sort this out! Saving heights in a tool table is great when you have tool holders for a spindle, but router collets sure make make tool changes a chore.

High level how did you do it on other platforms? Where you measuring tool hight at every manual tool change? What about mid job tool changes, how were those handled?

1 Like

Yes, height measured twice at each tool change, always. It only takes an extra few seconds and simplifies management considerably. Also makes no assumptions that the toolsetter is in place, or that the tool is ever the correct one. I have done it so that it prompts the user to allow a bypass of the toolchange, but ended up taking that out, it wasn’t worth it.

Mechanically, I have cutout a ~2" circle about 3mm deep where the fixed toolsetter rests. Because of the nature of the algorithm, there is two height measurements always, so it isn’t particularly critical if there is a small amount dust or height changes, as long as the toolsetter is where it is supposed to be. Thus the prompt for the user to make sure its where its supposed to be.

Adjust the M6 command as follows:

  1. Set up with some variables to make it easy to adjust: XY toolsetter location, fast probe speed, fast probe distance, XY toolchange location
  2. M5 - Stop spindle, M9 - stop coolant/misting/airblast/dust collection etc.
  3. Note current Modals, Note current XY position
  4. Z rapid to safe height (usually machine 0 on routers), XY rapid to toolsetter location
  5. Prompt operator to make sure toolsetter is in place.
  6. G91, fast probe protected distance, retract a tiny bit, slow probe
  7. Set machine Z position to some variable
  8. G90
  9. Rapid to safe Z, Rapid to XY toolchange location
  10. Prompt user to change tool
  11. Rapid back to toolsetter XY location
  12. G91
  13. G91, fast probe protected distance, retract a tiny bit, slow probe
  14. Note offset distance between current machine Z and saved variable machine Z
  15. Change current Z offset by the difference
  16. Rapid back to safe Z, Rapid to starting xyposition
  17. Restore Modals
  18. M3, M8 M7 etc. and resume operations

I find that this is convenient even for a starting M6, because sometimes I forget to change tooling before restarting and it forces me to make sure the right tooling is installed prior to running the op. It also means you can touchoff to material using any tool that you want, ie a a touchprobe, and then run the M6 to switch to the actual cutting bit prior to running the program.


This is nearly exactly how I have set these up in the past. And like you, I even let them run at the beginning of a job just in case I forgot to do it manually.

On one of my builds I also added an “MTC” button that I could press if I was changing tools NOT during a job. It basically ran the same script…

1 Like

I am switching to mach4 and use gers 2010 screenset. I have issues with mach3 that if you attempt to use the avid corner finding macro I get weird behavior and sometimes have random movement right after using it and then using the dual probe setup. I love the way that the 2010 probing works but would also like the fast corner finding with the avid corner probe. Using the probe routines in mach3 is a pain and slow.

I would love for that macro setup to exist in mach4 as well. I wrote to avid about this 2+ years ago because of how useful it is. It is amazing when using a rotary axis because the original touch position is gone or in another location if the material is still there when I change tools. It would be almost impossible to get to the right location and height again during a 10 hour carve on a rotary.

You can split out the connectors for another probe. I have added 3 to the same input. Depending on the probe setup, you may need to use a not gate circuit to allow it to work. If your probe is wired normally on and another is normally off, you can create this circuit and get the opposite output so that multiple types of probes can be used on the same input.

The site above is mine and I have had several people create the same circuit for their setup as well. I then created a board with 3 more m12 aircraft harnesses soldered into it for using the same connector as the rest.

This way I can probe the inside of circle to get center if I lose position somehow. I can also wire the permanent plate location and the avid plate all at once. My permanent plate can swing out of the way when loading full sheets and be raised in place after loading. Then I set the location to move to and after probing the first location with the plate on the table it moves to the permanent location to get the difference. All m6 commands after that will move to a tool change location, allow the change and then move to the permanent location to probe the difference.

Please Avid if you see this, make it a thing. It is amazing how much time and headaches this saves me.