Make a spring loaded 'touch block' for setting the tool height (Z-Axis) on a CNC Mill or Router.


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

Chris Logan3 years ago
Won't work on a mill. Most machines are electrically continuous between the vise and the tool.
Rdfoerster (author)  Chris Logan2 years ago
Hi Chris --

Thanks for your comment.

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.

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.

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.

Thanks again for the feedback.


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.
metajon4 years ago
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.