Tracking rotation with extremely high accuracy

What you're doing is possible, but I don't see how you're going to do it cheaply.

.05 degrees (3 minutes of arc) implies a resolution of 7200 counts/rev, or the equivalent of 13 bits (8192). Worse, since you're trying to make a position loop, you'll need at least one extra bit of resolution, or a 14-bit system. The problem lies in the fact that your position loop cannot detect an error of less than one bit, so if the arm starts to drift the angle sensor won't detect it until the output is one bit off. The position loop will drive the arm back the other way, and will stop driving it when the error drops to zero. But this will let the arm swing the other way until it gets a count in the opposite direction, etc. So, for instance, if you want the arm to maintain a sensor count of 100, the system may well produce 100, 101, 100, 99, 100, etc.

I suggest that an optical encoder is your best bet, but a 14-bit (16,384 ppr) encoder will not be cheap. Another possibility is a resolver or synchro, with an RDC or SDC (resolver/digital converter or synchro/digital converter) as a second possibility, but this will cost even more. Synchros/resolvers have 2 drawbacks. First, they've been generally superseded by optical encoders so what you'll find on the market are mostly surplus units. Second, accuracy is not usually adequate. Size 23 resolvers are usually rated at about 5-10 minutes of arc, so you'll need a high-precision unit, and good luck on finding one.

Inductosyns will give you exceptional resolution and accuracy, but will cost even more than an optical encoder. Essentially, you need a high-speed RDC to read the output.

Your concern about optical encoder accuracy is based on a specific manufacturer's paper, but that is essentially a scare piece. The possibilities for error are the same for every manufacturer, and the linked manufacturer is not somehow better than other manufacturers. Generally, for precision encoders, accuracy is the same as resolution.

While it is possible to get optical encoders with parallel outputs, you're probably better off with an incremental encoder and rolling your own up/down counter. If you do go this route, you'll use the "home" signal to reset the position counter every time you turn the system on.


I think what OP suggest isn't a bad idea at all. What he wants to use is ready made ring: http://ams.com/eng/Products/Position-Sensors/Magnets/AS5000-MR10-128 , it has 128 poles = 64 pole pairs. The resolution is 16 bit=65536, max 305 rpm.
If you take apart a high resolution optical encoder you will find out that is almost impossible to align detector without special tools, indeed using this new method makes this very simple.
You would need a turning machine to make a proper fit for the ring and then place the sensor at close distance, no special aligning is required. The sensor itself comes in kit versions already soldered on breakout board, what you would need is an additional reference sensor - a gap with photodetector, then you can reference the encoder within one pole pair with combination of index output + ext ref sensor.


Since it's a brainstorming question, and WhatRoughBeast has already mentioned everything I would consider, why not add the harmonic drives to the list? In theory (I haven't checked with empirical estimates, or first calculations), it allows you to get 20:1 gearing ratio easily without any backlash (100:1 is common), bringing the number of required steps down to 720/rev. Might be something worth taking a look at. Harmonic drives are not cheap, but they are generally much cheaper than high resolution sensors especially for this gearing ratio.