From ShapeOko

A touch plate allows one to set the zero for the Z-axis (as opposed to home). Typically, the plate is manufactured to a known thickness, so one sets it on the surface which one wishes to use for zero (either the wasteboard or the top surface of the material), “touches off” using the probe command, and then sets zero using the thickness of the plate as the offset.



One is easily constructed[1] of:

a clip or clamp

suitable wire

a metal plate of known thickness w/ a suitable mechanism to avoid damaging the endmill (the shelf bracket shown will have its central hole covered in foil)

suitable connectors

An even simpler design would be to use a pair of clips and simply cover a corner in metallic tape: https://www.youtube.com/watch?v=aT_9LtDPnKw [2]



An elegant example: Touch Plate v2[3]

Hook it up to the "Probe" connector (see the silkscreen labeling on your board, usually next to the homing switches).

Once constructed, connected and suitably placed:

measure the distance between the endmill and the touch plate

initiate a probe command using a longer distance:

G38.2 Z-26 F100

(assuming the spindle w/ clip attached is less than 26mm above the touch plate)

Originally, this was done in the Tools pane of bCNC, but there is now a pane dedicated to Probe functionality.





Determining and applying tool z-length offsets is why Grbl v0.9 has G38 probing and G43.1 tool length offset commands. The general workflow is:

Insert your first tool.

Move to a fixed probing location to determine the z-location of the tool tip. People often use G38 and G30 commands to move there, and usually use a touch-plate of some kind to touch off the tip of the tool.

Run the job until a tool change.

Insert the next tool.

Move back to the probing location (via G28 or G30) and determine the z-location of the tip of the new tool.

Calculate the z-position difference between the first tool and this tool.

Send Grbl a G43.1 command with that difference.

Run the next part of the job until the next tool change.

Rinse, repeat, and always calculate the z-position difference based on the first tool location.[4]



Note: “It's much better if the spindle is ground and the plate is connected to the pin. If you're doing this on a Shapeoko 3, that's all you need to do; if you have just a gShield or GAUPS or some other board with no filtering nor buffering, it helps to add a stronger pull-up and a simple RC low-pass filter...”[5] Because, “The plate is small and easy to keep insulated. The spindle is large, may be electrically connected to the rest of the machine and possibly to ground, and has its innards connected to mains voltage (even when off). It's an ideal antenna to collect noise and cause false triggering, and also much more likely to receive an electrostatic discharge that can destroy your electronics.”[6]

Notes on connections for a Carbide Motion board: https://community.carbide3d.com/t/wiring-confirmation-for-xyz-probe-on-carbide-controller-2-4d-board/24642/2





Commercial

https://shop.carbide3d.com/collections/tools/products/shapeoko-touch-probe --- Dimensions: http://community.carbide3d.com/t/touch-probe-no-longer-going-to-be-offered/4786/188

Amazon: CNC Z-Axis Tool Setting Touch Plate Probe Compatible With Mach3 and Other Router Mill --- simplistic device with no spring or other features.[7]

c.f., http://www.penntoolco.com/precise-zero-set-cnc-instrument-setter/

DIY

Touch Probe (actually a plate)







c.f.

Touch probe

Continuity

Most routers do not have continuity between the collet and the body.[12]

Method for making clipping onto a DWP611 or other router safe: http://www.shapeoko.com/forum/viewtopic.php?f=4&t=8149&p=64116

Alternatives

At least one touch probe is designed so as to be usable as both a probe and a plate.

A highly sensitive scale can be used to register a touch if one is patient --- just lower the machine in increments small enough not to damage the scale and continue to do so until it registers the touch by displaying a non-zero weight.

Thingiverse: (3D printed) Z-Zero Plate for CNC