I'm wondering if anyone else is interested in developing new ways of encoding position to adapt low cost motors into CNC machines while avoiding the standard method of using encoders on the motors. There are advantages to putting the encoder ON the axis as a linear strip with readers, instead of putting the encoder on the motor. One the motor, any slop, gearing, and non-linearity in the lead screws results in positioning error. With the position encoder rolled out flat on the axis, all of those issues disappear. You can use a cheap non-linear lead screw. You can use a sloppy gear drive. Because the system knows where the axis /actually/ is, it can drive the motor to compensate for any of those errors.

The trick is finding a good way to print and sense an encoder as a linear strip with low cost and fine resolution.

Fine resolution is possible via vernier sensing even with a low resolution strip. And a /type/ of vernier sensing (single track grey code) can provide absolute position sensing as well.

I've collected some data, ideas, and explanations on this web site:
techref.massmind.org/techref/new/letter/news0312.htm
if anyone is interested in reading up on it.

WARNING: Single Track Grey Codes are a horrific time sync for anyone who enjoys mathematical puzzles. You will become sure that the answer is just around the corner... for years of your life. ,o) Ask me how I know. But now, friends of mine and I have finally worked out how to generate the track and sensor positions for very long run tracks.

We have a mast for an 8 bit, 240 position code, and there are much longer ones potentially available. At this point, we could run the 240 code sequence down the length of the axis, and it would give you the rough absolute position in one 8 bit reading, then a low resolution rotary encoder on the lead screw shaft would give you the position within that 1/240th. Non-linearities in that short distance shouldn't be significant. The encoder on the lead screw would still compensate for gear slop between the motor and the lead screw, but not for slop in the nut riding the screw. Still a good thing.

It might be better to run 2 or more of the sequences down an axis since the axis can't jump from one place to the next instantly, it would be a good combination of absolute and incremental encoders. Absolute within each sequence, incremental between sequences. That depends on how closely we can space the sensors.

Anyone willing to give it a try?

We also need help turning the sequence of 1's and 0's into a nice printable graphic in both a straight line and in a wheel. Any SVG wizards out there?