Servo Problem - Range of Motion Issue

I'm not sure if this is a problem with me, the Arduino, or the servos I'm using, but I can't get 180 degrees of motion out of three different servos.

I'm using the "sweeper" example to run the servos, and powering them from the board via USB, but with no load on the servos, just the horns attached.

The servos are one small/medium HiTec and two different Futaba S3003 servos.

The Hitec won't go more than about 100 degrees. And the Futabas will go about 130 and 160 degrees respectively. The Futabas will both go to 0 degrees without a problem, but at the other end of the swing they stall out (as if they are trying to get to 180, but not making it). The HiTec is the opposite (goes to 180, but won't go below 80 degrees or so.)

I don't particularly want to pull the servos apart, but I think the internal stops are installed incorrectly (in the case of the 3003's) and I'm pretty sure the HiTec is actually mechanically malfunctioning, as it keeps getting worse.

Any help, or recommendations on servos that will be more likely to not have these issues would be greatly appreciated. :slight_smile:

OR, is this just what happens when I buy servos on the cheap?

OR, is this just what happens when I buy servos on the cheap?

No, servos are not guaranteed to move a full 180 degrees, that is a Ardunio misleading/misunderstood specification/concept.

Hobby servos are guaranteed to be able to move from one "end point" specified at 1 millisecond pulse width to another "end point" of 2 millisec pulse width. Most servos allow for some "over-travel" at both end points (when driven below 1 or over 2 millisecs), but the amount of 'over-travel' is specific to each servo model.

Normally a servo manufacture will specify the maximum degrees of travel that the two 'end point' travel, but again that is servo model specific and there is no industry standard that all servos must be able to move 180 degree total travel.

Lefty