Videos Taig Mill Duet3 Control |
Taig /
ProbingProbingProbing 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
ConnectionsThe 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). ScriptsOn the Duet3 setup requires defining the probe pin along with test speeds and distances. Here's a sample.
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.
In the wrapup below, I show a more extensive / flexible probing script. Testing ProbingSo, 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 TestingTo 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.
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 TestingThe 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.
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.
WrapUpTesting 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 else M117 FindXPlus requires a D(iameter) parameter |