servo repeatability / accuracy / drift / lifetime

I’m thinking of using a small servo to control the valve shown in the image below. At position “0 degrees,” say, the valve is closed; at position “90 degrees” the valve is open. It will probably operate 50 to 100 times a day for five or six months, or perhaps 18,000 times total.

Can I rely on a servo to go to position “0” and “90” (plus or minus a few degrees) throughout that time, or will it “drift” over that many operations and end up far from the starting positions? I can tolerate it being off a few degrees.

Would a stepper motor be a better choice for this application?

I don’t think it should drift. But make sure the servo has plenty of torque for the job and buy a good quality one.

If you need to be doubly sure you could have a limit switch that is pressed by the servo when the valve is closed. The Arduino could sound a warning if the switch was not triggered.


RC servos normally use potentiometers for position feedback. That would ensure good repeatability and low drift

Thanks everyone for the assistance.

I'd say a servo with analog feedback would be better. You'll be able to make sure the servo is where you want it to be even after thousands of sweeps.

In my world a potentiometer equals analog feedback....
There are servos with digital feedback but they tend to be more expensive, something that is not justified for this application

RC servos normally use potentiometers for position feedback. That would ensure good repeatability and low drift

Potentiometers are electro-mechanical devices, which tend to wear out after a (hopefully huge) number of moves. When this wearout causes a drift, the pot or entire servo should be replaced, eventually by a better one.


Both of the servos -- Tower Pro SD92R (Adafruit No. 169) -- recently failed after about eight months of use, 24/7. Failed as in: no motion, no noise, no nothing going on when they're supposed to open (or close) the valves.

But if I rotated them slightly by hand, then they'd operate.

They probably each operated about 6 to 10 times an hour, so that's about 50,000 operations. It seems odd that they failed within days of each other.

My guess is that potentiometer wiper wore a hole in the resist material due to jitter at the "hold open" and "hold closed" locations (where they are located 99% of the time). Not sure if that makes sense or would cause the noted failure. I took them apart and found no damage to the gear teeth.

Fortunately, I had two spares.

Assuming that my guess about the wiper wearing away the resist at the end points is correct, I've added code that changes the "open" and "closed" angles by a random amount (between -5 deg and +5 deg), so they won't be "jittering" at the same location every time. We'll see if that helps.

I'm also going to look into using the ServoTimer1 library as suggested here to, I hope, completely eliminate jitter.

PS: no "drift" noticed

another way to prolong servo life is to simply kill the DC power and PWM signal once desired position is achieved; this assumes/requires that desired position will hold in the absence of juice/signal. This is usually but not always true.

Thanks for the suggestion. There's not much load on the servos in either position, so that should work.