To set tool height on your CNC router/mill, you can easily make a spring loaded touch plate based on a “mini” momentary switch mechanism which provides the spring action needed. Rather than using the standard 'gage block and paper' technique that involves repetitive trials, the touch block will let you quickly set a cutting tool to an accurate distance from the work table surface. A basic continuity tester made from a battery and a LED provides a visual indication when the tool contacts the block.

The main component of the touch block is a simple momentary 'mini switch' with a removable push button which provides the spring plunger that the touch plate is attached to. Using parts I had on hand I was able to quickly build my touch block system for much less than commercially available devices, which may run $85.00 or more.

Step 1: Parts List

The project is actually two easy projects in one: 1) the touch block, 2) the continuity tester which powers the touch block and provides a LED indicator to show when the tool makes contact with the plate.

a) Continuity Tester parts. Skip this if you already have a continuity tester that is suitable for use with the touch block. Estimated cost: $10.00 or less before tax and shipping, if any.

1-ea 2-AA Battery Holder (enclosed 3.1v) Radio Shack # 270-408

2-ea AA Batteries

1-ea 5mm Red LED {2.5v or less} Radio Shack #2760041 or equivalent

1-ea Current Limiting resistor to match your LED (24ma or less) typically 27 – 56 ohm.

1-set Alligator Clip adapters

Note: you can determine the value of the resistor needed by going to: led.linear1.com and

entering the supply voltage (3.1), forward voltage of the LED (2.5), and desired LED current



b) Touch Block parts Estimated cost: less than $10.00. If you have a 'junk box' cost may be zero.

1 piece of 1/16” aluminum C-Channel 3/4” x 1.5”. I used a scrap of a 96” piece sold at Home
    Depot # 030699-568703 selling for under $11.00.

1-ea 2-AA Battery Holder (enclosed 3.1v) Radio Shack # 270-408. I had a contact plate and
    spring removed from the holder (left over from a previous project) that I used. If you don't
    have something suitable on hand, just buy an extra one of these to cannibalize.

1 small piece 1/16” thick conductive stock that you can solder a wire to, such as copper, brass, etc.
    I used a scrap of brass shim stock that I had on hand.

1-ea Mini SPST momentary switch (N.O.) Radio Shack #275-1556. The switch is only used to
    provide spring loaded plunger for the plate.

1-ea 2” length of stranded hook-up wire (14-18 ga. OK).

c) Tools needed

* Drill & drill bits
* Soldering iron

Step 2: Building the Continuity Tester

On the completed tester, touching the red & black clips together makes the LED light up. Power is provided by 2 AA batteries housed in the holder. Only one hole needs to be drilled to fit the size LED used.

Open the battery holder and locate the contact plates with the red & black wires attached. Push the wires back into the holder to give them some slack.   Then grasp the contact with the RED wire using small pliers and gently slide it upward and out of the holder. Continue pulling the red wire until it is completely free of the case.

Cut the red wire about 1” from the contact plate. Solder the resistor to the to the positive side of the LED. Then, strip and tin the wire lead to attach to the current resistor on the positive side of the LED. Strip and tin the remainder of the red wire and solder it to the negative (see flat spot) side of the LED and feed the end back through the hole in the case along side of the black wire. Drill hole in case bottom to allow a press fit for LED. LED can be secured to case with a spot of glue if needed. See the wiring diagram for details.

Step 3: Building the Touch Block

The completed touch block is made by mounting the momentary switch in the center of a one-inch piece of c-channel. You will need to drill a hole to suit the switch used.   The push button (cap) is removed by gently pulling it upward and off of the mounting post. A 1/16” thick piece of conductive copper, brass or other material approximately 3/8” x 3/8” is used as the contact plate. It has a hole drilled near the center for a press-fit on the switch plunger replacing the push button. A small external spring, salvaged from an AA battery holder, is used to beef up the plunger spring and provide stability for the touch plate. A dab of super glue can be used if the plate is not a solid and tight fit on the plunger, but make sure the external spring is fitted first.

A short length of wire is soldered to the contact plate and attached to one lug on the switch. A bare section of the wire provides a place to attach one lead from the continuity tester. This prevents the clip from creating a load on the contact plate spring, while still providing an electrical path to the plate.

The other clip is attached to the shank of the tool bit. When the tool touches the contact plate the ground circuit back to the LED is completed. The switch serves no electrical purpose and is only used to make the contact plate spring loaded.

In the example here, the touch plate was made from a scrap of c-channel, then covered with a small piece of brass shim stock with a short piece of stranded wire soldered to it. Although hard to photograph, this assembled block measured 2 thousandths over 1” in height.


Step 4: Using the Touch Block

In the example Zenbot 1216 CNC Router, install the tool to be used for the current job. Then place the touch block directly on the work table and connect the clips of the tester.  It doesen't matter which clip is attached to the touch block and which is attached to the tool shank.   Lower the tool until contact is made with the touch block, lighting the LED. Moving the tool up one single step turns the LED off and allows the touch block to be removed from the table. Since the tool is now one step high, lower it by one step, returning it to touch block height and set the tool ( Z-Axis) to ZERO. Z-Axis zero is now exactly the 'height of the touch block' above the work table.

Next adjust the z-axis so that the tool is zeroed at the top of the material {TOM) to be machined. That is done with the following calculation. TOM = ( Material Thickness + spoil layer thickness, enter zero if none) – Touch Block. For example if my material is 0.75 and I am using a 1/8” (0.125) spoil layer and my Touch block is 1.00” then: (0.75+0.125) – 1.0 = -0.125 In other words, I must jog my z-axis lower until the digital read out (DRO) reads -0.125 or slightly higher. After this z-axis adjustment is made I re-zero the z-axis, and raise the tool to the SAFE-Z position.

In the case the material and spoil layer together are higher than the touch block, the top of material adjustment value will be a positive number. For example if the material is 1.25” thick, then the calculation would be: (1.25+0.125)-1.0 = 0.375 ...so that I need to raise the DRO to that reading and re-zero.

To test the set-up, mount the material and spoil layer (if any) on the table and lower the tool close to Z=zero. Then single-step until it is at zero. If all is properly set, the tool will be at the top of material with the tolerance desired which is usually the closest single step without overshooting.


Step 5: Conclusions and Going Farther.

Some would argue that this method is not as simple and direct, nor much of an improvement over the 'paper feeler' method. In actual practice, I find it simple, quick, accurate and safe.  Since the spring feature avoids the risk of crashing the tool on the work surface, the Z-axis can be jogged down faster and minimizing many 'single step - paper feeler' iterations.  If you carefully measure the touch block height, it is easy to consistently find the exact height of the tool from the table surface, then calculate the adjustment needed for the 'top of material'.

Control software, like Mach 3, can make the process more automatic. It can make adjustment calculations for you, if you want to go farther. For a small format CNC mill/router like the one in the example, I prefer the direct unambiguous method described here which avoids messing with offsets, programming, and automatic techniques.

Won't work on a mill. Most machines are electrically continuous between the vise and the tool.
Hi Chris --<br><br><br><br>Thanks for your comment. <br><br> <br><br>You are correct for mills where there is electrical continuity between the tool and the work piece. In those cases, the solution is to insulate the touch block. One way to do this would be to mount the switch on a plastic channel (or base) rather than the aluminum channel I used. <br><br> <br><br>Another would be to glue a thin plastic (or other insulator) layer to the bottom of the aluminum channel and re-measure the total touch block height.<br><br><br><br>My own Zenbot CNC mill is insulated between the tool and the work table. Many similar machines also isolate the continuity between the tool and the work through the spoil-board even when the machine is all metal. Your comment is helpful in clarifying the case I had overlooked.<br><br><br><br>Thanks again for the feedback.<br><br><br><br>--Rich<br><br>
Great idea for someone running a manual mill or for someone running a CNC without an automatic z-limit script! The spring switch should save the bit from damage too if one were to crash the end mill down a little too hard.
This is a great instructable. Very clear and thorough. This method _has_ to be better than the paper method, and certainly cheaper than a commercial height setter. Plus an extra continuity tester is a handy thing in its own right.

About This Instructable




More by Rdfoerster:Make a spring loaded 'touch block' for setting the tool height (Z-Axis) on a CNC Mill or Router. 
Add instructable to: