... still sorting Z axis repeatability ...

A project log for Minamil: a minimal CNC mill. And friends.

Each axis: ̶$̶5̶ ̶$̶8̶ $10 motor+lead screw, 3x LM6UU, 3x 6mm x 100mm rod, 1/8in hardboard, PC case screws

Paul McClayPaul McClay 09/27/2022 at 00:072 Comments

tl;dr: thermal expansion ... and skipping steps upwards?

Wringing repeatability from this counterweight-less cheap-motored Z axis redesign has stalled me for a while.

Here's why I'm still trying:

Microns. That shows <10 μm variation for 720 Z probes over three hours. Each ~1 hour block of 240 touches starts with a long up/down excursion. Indicated steps alternate between 1 and 2 μm because the actual microstep size is ~1.5 μm. The three downward spikes are the first touches after the long excursions and could be avoided by adding a small up/down hop after long up/down moves.

Other than those avoidable spikes, and a ~5 μm drift over ~20min (~80 probes) in the second hour, that looks like micron scale repeatability over usefully long time spans and cycle counts. Relative to a target of maybe 25 μm variation (match X&Y full step), that looks very encouraging and worth pursuing.


That 3hr stretch of wunnerful repeatability is cherry picked from data like this:

first big graph
first big graph
second big graph
second big graph

...preceded by a bunch of manual data collection, preceded by a bunch of random thrashing trying to figure out what's the deal.

Generally, I've been seeing that short term repeatability can be, and often is, very good -- and long term repeatability can be, and sometimes is, acceptable (relative to a target of 25 μm which is somewhat arbitrary but comparable with the full step stride of the X&Y axes and aimed at cutting just through ~35µm nominal thickness of 1oz copper cladding that isn't flat).

Some of the runs in the first graph show strong similarity in fine structure:

I've pretty well convinced myself that the wiggles in the initial downward slope reflect non-uniform microsteps. The distance/step cycle runs through two full steps. At least two of the 28-BYJ48 motors I've look at -- closely enough to notice -- show significant asymmetry between even & odd full steps. Haven't dug into that much yet, but for now I'm counting two full steps as the practical resolution of these motors. In the latest rev. I've shrunk the pulleys again to make two full steps move about 25µm for parity with the X & Y axes. (Finer string -> more turns fit -> less motivation for big pully diameter; more about string below.) These data were measured with 8x µstepping which is where the 1.5µm steps come from. While that's impractical "resolution", I'm much surprised that this marginally constructed device actually distinguishes single µsteps at ~16k steps/rev. While kinda neat, that's not really useful and as of right now I've dialed that back to half-stepping (~6µm/step).

Thermal expansion(s)

Apart from the finer wiggles, I think the general trend looks like different parts heating up differently. I'm guessing that the fast initial slope reflects the pulley heating quickly. Then the slower up-slope reflects the XY table growing taller as it heats up less quickly. That's a little less speculative because I can test that by unplugging the X&Y motors. The second-to-last spike-drop-slow-rise in the first big graph dropped like others then turned back up less quickly with the XY motors unplugged, which seems to corroborate that idea. The fact that there's still some slower exponential-like change happening suggests something else warming up. I'm guessing that it's the bulk of the Z axis heating up. Maybe changing the relationship between the stepper axle(s) and the tool clamp. ?.

Anyhow, this kinda sorta validates the idea that the Z probe data reflect smaller and larger parts heating up quickly or slowly:

The yellow line is the sum of two exponential curves -- one faster and one slower. The gap reflects the time span of uncollected data.

The horizontal lines on that last graph above mark 25µm intervals, which is the variation I'm kindasorta aiming for. From my "artist's interpretation" curve fit, it looks like the longer time constant is about 45 minutes. That suggests that letting the machine sit for some small multiple of 45 minutes with the steppers powered would get well within 25µm of dimensions at eventual thermal equilibrium.

Not indicated there is the further effect of the "spindle" (dremeloid) heating up too.

The first big graph includes several temp cycles; the second big graph reflects longer kinda-continuous heating.

I think some of the trending in the first big graph correlated with room temperature.

So maybe something like...

I've been trying this idea: let the machine sit with the spindle running, room closed (doors/windows), and the XY table scanning back and forth across a diagonal similar to the extent of planned work at the planned XY feed rate, for a sufficiently large small multiple of whatever the long time constant turns out to be. Then probe/map the surface (because Z precision motivated by milling copper-clad board) and start a job.

Scripting gcode to loop scanning X&Y was reason to get after a >25-year-old to-do item: learn some expect (beyond most trivial use).

There there's yet more other stuff...

Z hoist cord material

For a first try, I used the same white, three strand, probably-nylon cord that I've been using for the tool clamp. That gave the first encouraging result of close-enough-to-uniform 50 µm Z steps milling a small part.

While that finish cut sequence of starting at the top and stepping down demonstrated adequately holding a constant Z between equal increments down, it didn't really challenge repeatability of moving away (up) and returning to the same point. While that stuff showed pretty good short term repeatability for small motions, I was getting pretty random results from longer moves (higher Z lift). Like, more than 100 µm variability but I don't think I kept any numbers. Then I tried heavy carpet thread to see if that would be more consistent. It was, but not really convincingly so. But then there was other stuff going on that I didn't understand (see above) too, so: inconclusive.

For a different project idea a while back I looked for the lightest/thinnest Spectra® (UHMWPE) cord and found some 0.5 mm < d < 2 mm options sold for kites and spear/bow fishing. That didn't go anywhere and I didn't buy anything then. Looking again this time I discovered "braided" fishing line. Fishing people ("anglers" but does anyone other than anglers know what "angler" means?) use braided Spectra®/Dyneema®/generic UHMWPE cord with diameters down to less than 0.1mm. Prices at the nearest sporting goods monger were essentially flat up to 50lbs tensile strength before ramping up significantly for stronger/bigger line. So I picked up a reel of 50lbs-rated braided Spectra cord with nominal diameter of 0.36mm. Woot. Because neat. 

That eventually looked like it would work well enough (first big graph). While the per-unit cost of enough of that is nearly nothing, the retail cost of >100x the needed length becomes the most expensive item in the BoM. So I went back to trying the carpet thread again. It kinda looked like that would work (second big graph). But...

Skipping steps - the wrong way

After much (muchly much) futzing, I've lately convinced myself that the Z stepper shaft(s) rotation is in fact actually drifting out of sync from where Grbl thinks it is. For now I'm believing that Grbl is doing the right thing with step pulses and not accumulating asymmetric rounding or some such subtle evil.

The weight of the Z axis hangs directly from the output shaft(s) of the lamest of geared steppers. Missing steps would be no surprise ... if the axis was drifting down as a result of missing upward steps. How does it miss downward steps and drift up?


I have half an idea what might be happening, and a couple of ideas to try...

...and so it continues. Bah.


dekutree64 wrote 10/02/2022 at 06:42 point

I would be wary of thermal expansion with the fishing line. You can make thermally-activated actuators by twisting it up a lot. Search youtube for "fishing line muscle"

  Are you sure? yes | no

Paul McClay wrote 10/02/2022 at 07:24 point

Spectra braid is not your father's fishing line ;-)

(it's also prolly an unnecessary expense for a "minimal"-themed project)

(but thanks for the pointer to muscle thing - that's neat)

  Are you sure? yes | no