First, some data. This is a sequence of 132 moves, the largest of which measures a bit under 0.14 microns (average 0.0625 microns). The largest move is approximately 1/4 the wavelength of green light, and is over 3 times smaller than the rated DOF of Nikon's most demanding objective (100X NA 1.40). I'm guessing this would meet most people's needs for stacking.

How was this magic accomplished?
Well, there are two tasks:
1) making the movement in the first place, and
2) determining how fine of a movement has been made.
In the following picture, task 1 happens on the left and task 2 on the right. On the left, stage movements are made using a stepper motor driving the fine focus knob of a microscope as described HERE, while the stepper motor is driven by the updated StackShot controller. On the right, movements are captured with a 40X photomacrography setup, and the resulting images are analyzed by Zerene Stacker using its Align All Images function.

Below is a closer view of what the 40X photomacrography setup is watching, followed by what it sees. The target is just a piece of laser-printed paper, on which fine detail is provided by grain of the paper and edges of the small toner particles.


The final step of this operation is to reach into the Zerene Stacker console log or saved project file to retrieve the y-offset value for each image from the registration parameters. Those are in fractions of frame size, so they just need to be multiplied by an appropriate scaling factor to produce a readout in microns. A good source for the appropriate scaling factor is the fine focus knob of the microscope.

This is one of those setups that seems straightforward in theory. The microscope focus block is 200 microns per rotation, so at 200 full steps per rotation and 16 microsteps per full step, the motor will turn the focus knob at 1/16 micron per microstep. 1/16 micron is a tiny amount, but at 40X magnification, that turns into 2.5 microns on sensor, and for the T1i, that's more than half a pixel. I've previously tested to be sure that the alignment function in Zerene Stacker is accurate to a small fraction of a pixel, so it's tempting to ask "What could possibly go wrong?"
But that's in theory, and as we all know, in practice, theory and practice can be quite different.
So I'm still trying to get my head wrapped around the idea that this simple process worked so well. I really expected that environmental vibration, if nothing else, would somehow end up producing an ugly cloud of noisy measurements. But that didn't happen -- I've seldom seen cleaner data coming out of a physical experiment. Beginner's luck, maybe.

--Rik
Edit: add link to earlier thread.