Recent Changes - Search:


Taig Mill

Duet3 Control


edit SideBar



Probing is the process of finding a given point on the stock - such as the top or a corner. Probing must be accurate and, more importantly, repeatable. To probe I use conduction with the milling bit. This requires using a fixture plate or a manual jumper because the bed is electrically isolated.


Required Changes to the Mill

  1. The various pieces of a factory standard Taig mill are not electrically connected together. This increases RF noise and is generally just not great so I started out by connecting all of the frame pieces, especially the motors and not the bed. Usually this is a wire from piece to piece. Sometimes it's just careful sanding or filing of the anodized aluminum to allow electrical connection. The anodize layer on aluminum is an electrical insulator.
  2. Place the fixture plate on the mill bed and set it up. Ensure that the plate->bed connections are not digging into the bed so that when you finish the plate is not grounded.


The mill is first all connected together (as above) and then the controller signal ground is applied to the mill frame. This produces a near-ground at the mill collet and bits (it's 1KOhm or less to ground). The controller signal input is applied to the fixture plate which is good enough for the digital input to switch when the bit is touching the stock (touching the vise touching the fixture plate).


On the Duet3 setup requires defining the probe pin along with test speeds and distances. Here's a sample.

M558 P8 C! H50 F100 T800 A1 S0.1
; define Z probe and set dive height, probe speed and travel speed

To probe to a Z height simply use G30.

To probe X,Y use G38.2. Here's a script for using a 1/4" blank bit to find X (system is in metric) from the left. It moves towards the named Xpos (here 0) until the probe makes contact then subtracts 3.175mm to set zero.

G38.2 X0 ; probe in the x dim
G10 L20 P2 X-3.175 ; X - 1/4 diameter 6.35 / 2 =

In the wrapup below, I show a more extensive / flexible probing script.

Testing Probing

So, how well does this work? To test probing I used a 1/4" blank bit and locked the collet so it couldn't rotate to avoid runout errors.

Z Probe Testing

To test the Z probing I ran the probe at 4 different speeds into the Z-setter. The Z-setter has a small polished-aluminum block that rests on a short spring - so if the probe goes too far it doesn't matter - which lets you probe at a much higher speed and ensures that the stepper motor isn't being physically stopped when contacted.

In this table, I ran the Touchpad macro repeatedly and used M114 to get the machine Z position.

Speed (mm/m)ZPosition (mm)ZPosition (uSteps)

As you can see, with the Z-setter the speed doesn't matter much and the repeatability is about +-2 microns with low deviation. Excellent results.

The downward motion in this video, which shows a Z probe, is running at 4x just to move it along...


X Probe Testing

The X and Y probing methods are physically identical, so I just tested X. I wanted to see how much force was being applied when the bit was stopping on contact and again how repeatable the tests were.

First test: stock in vise (fixed)

In this test I put stock in the vise and repeatedly found the zero point at different speeds.

Speed (mm/m)XPosition (mm)XPosition (uSteps)

Here it seems like additional speed is causing a 1 micron error, perhaps from timing, but it's not enough samples to know.

Second test: stock on vise (movable)

These tests were all done by X probing a small piece of aluminum (1"x1"x3/16") that could easily slide on the vise. At 200mm/m it slid 5 microns per touch while at 50mm/m it did not slide measurably - which is pretty amazing. This result implies that running at even 200mm/m for touching isn't applying much torque to the bit and the result is repeatable to +-5 microns. At 50mm/m it seems repeatable to +-1 micron.

SpeedXPosition (mm)


Testing has shown how well conduction probing works at nominal speeds so I'm now completely using the below 2-speed probing script. I'm confident it works effectively and accurately.

After doing the tests I wrote a more versatile script using the Duet3d support for macros with parameters. It uses the probe (M585) G-Code command which is really designed for finding tool offsets with ATCs but works just fine here if the tool offset is re-zero'd after probing.

This script gets called with an argument of the diameter of the test bit (in inches) in D and an optional argument for probe direction S (0=forward, 1=back). It relies on two global variables, ProbeFastXY and ProbeSlowXY, which are the two probing speeds - I use 200 and 50 based on the above results.

I run my scripts in metric but usually mill with imperial bits. Hence odd math is the norm and scripts help a lot. Here is my probe X script. It does a fast probe to cover distance then backs off slightly and does a slow probe for accuracy. I use the second virtual coordinate space usually.

Calling Script:

; probe with 1/4" bit
m98 P"0:/macros/Finders/FindXPlus.g" d0.25

Called Script (FindXPlus.g):

var dir = 0
var movs = -2
var multip = -12.7
if {exists(param.S)}
	set var.dir = param.S
if { var.dir == 1 }
	set var.movs = 2
	set var.multip = 12.7
if {exists(param.D)}
	G91   ; relative moves
	m585 S{var.dir} X-50 F{global.ProbeFastXY} P0   ; probe quickly until contact X
	G10 L1 X0 Y0   ; reset the tool offset created by m585
	G1 X{var.movs} F{global.ProbeFastXY}   ; back off a little
	m585 S{var.dir} X-50 F{global.ProbeSlowXY} P0   ; probe slowly until contact X
	G10 L1 X0 Y0   ; reset the tool offset created by m585
	G10 L20 P2 X{param.D * var.multip}	; subtract half the bit diameter and set zero
	G1 X{var.movs} F{global.ProbeFastXY}    ; back off
	G90   ; absolute moves
	M117 FindXPlus requires a D(iameter) parameter
Edit - History - Print - Recent Changes - Search
Page last modified on March 07, 2022, at 01:34 AM