Stepper Position Sensing and Control

Erni:
Try to look for winch servo (they are used in model sailboats to control the sail).
They can rotate 360 degrees ore more and and they have the same position control as "normal" servos .

I just looked at the winch servos and because they are still limited in the number of rotations they will not work for this application. On a long multi leg flight in bad weather with heavy traffic it is possible to be stuck in holding patterns (oval track loops) at length so any limit on the number of turns would not be realistic.

kf2qd:
A servo won't do what you want. Isn't a sail winch just a continuous rotation with a winch attached?

You could go half steps which would give you 400 positions, you could use a gear train and come up with more positions.

The hardest part is how do you handle the moves across 0 degrees. Not a major issue, just depends on how big the steps are that you would be sending to the stepper motor.

Another thought - Power up the compass and assume that is 0 degrees. then have a mechanical cam, push a button and the compass is then zeroed. You could also sense when the compas has beeen zeroed, delay a bit and then move it to the proper heading.

If the Arduino that is controlling the compass is recieving just degree numbers and moving the dial to position you should be able to keep the position correct for quite a while, no load, low speeds mean the stepper should have no problem keeping position without feedback.

How much total rotation do you think you would have in one "flight"? If your number for compass position were a long you could do a lot of 360's before you ever hit overflow.

Will your flight sim be sending position info in degrees? or degree step?

I did find one servo for about $80 us that had 0.337 degree steps so about 3 steps to a degree. A bit pricey but not out of reach.

I need to double check the interface app but I believe I am getting heading info as integers from 1 to 360. Having given this more thought, absent absolute position feedback, I am leaning towards an initialization routine using an optical sensor to bring the compass disc to zero and then read the initial aircraft heading and step the motor x steps to align with the actual heading value. From there I can keep track of the last heading value read and compare it to each subsequent value to step the motor as needed. I may also add a sync button so I can trigger the initialization at any time should errors start to accumulate and throw off the heading. I don't think crossing zero will be an issue as I can work out the math/logic programmatically.