linear absolute encoder on rotating surface?

I need to know the orientation (rotation) of a turntable, in absolute degrees or radians. The turntable is not driven by a motor -- if it were I could use a stepper motor and use the motor counts to get the turntable position -- it's rotated by an external force (a human).

Fortunately, it rotates only through 180 (+/- 90) degrees; unfortunately, it's not possible to install a coaxial mechanical rot encoder. I can only work with the outer edge or the top surface. I've considered a friction drive on a mechanical encoder, and a belt drive; not really thrilled with those options. So... optical?

I have seen some downloadable gray-code disk encoder layouts, but they seem rather crude (resolution 45 degrees, that kind of thing). I was hoping for far more accuracy than that.

I thought of trying to repurpose the linear encoder strip from a junked inkjet printer, but have no idea how to go about it, what kind of sensor would be required etc. The samples I have seen look very finely graduated, so I'm not sure if my crude "hobby grade" optical sensors are suitable. Also, I would want to use reflectivity or albedo (can't easily get a light source behind the tape) and I'm not sure, but I think I recall that these print head position tapes use backlighting.

At present I am leaning away from optical encoding altogether, and towards a generic accelerometer/compass unit, but am not sure whether they are accurate enough for my purposes. Was wondering if anyone has experience with these and if so, would you recommend them (or not) for this type of application, i.e. absolute rotation encoder.

If anyone else has solved this problem and knows the best way to go at it (cheap, reliable, accurate), I'd be very interested to hear about your project.

A compass will be terrible if there are any metal objects nearby or on the turntable.

A gyro or accelerometer will drift unacceptably.

Belt drive with a toothed belt ("timing belt") won't ever drift. You can even use different pulley sizes to increase your resolution or travel.

Optical can be done really easily. Print yourself a strip with two "tracks". One will have black lines spaced at whatever resolution you require - 1 degree or whatever. The other will have only one black line. This is zero. Use the detector on that track to tell you when you pass zero, then use the other track to count degrees.

If you can, put the optical strip on the underside or somewhere which won't see lots of dust or changes in ambient light.

Use a $5 optical mouse to measure the movement at the outer edge.
If the surface is polished then you'll need to attach masking tape or something with a pattern or surface texture so the image sensor has something to look at.

Hi,
To get clear on what you want to do.

  • You have a turntable?
  • It is to be ONLY rotated by hand?
  • You want to continuously monitor its rotational position?
  • What resolution do you need?

A grey code encoder would be ideal as it is absolute, will not lose position on power down.

Google grey code rotary encoder Arduino

You can get high resolution grey encoders.

Tom...