It seems more like a code problem than hardware. Can you post the code here and let us try to work out what's happening.
Are you refreshing the pulse width every 20 ms ? Normally you send the 1ms - 2ms pulse width to the servo every 18 - 20 ms so that the servo holds its position and via the feedback pot knows its position. It looks as if the code is not sending the pw every 20ms or that the servo is mis-reading it and losing its starting point, so on each instruction it trys to move 180 but hits the limits and thus results in limited travel.
Bookmarks