Changing servo center position

I have a robot right now using a servo to control something, but I need the servo to move full travel upon activation. In other words, I need the full range of travel to use the servo to its full potential. I trimmed the joystick fully to one side but still get a few degrees of travel when I push it that way. Is there a way to give the robot a different idea of the “center” position of the servo? This would need to be without a programming kit, for radio control only.

to actually change the servo position, you could open up the motor and shift the internal gears around, which might work.

You may be able to do it in software.

Does any one know the length of a short data type? If it is only one byte you could assign the value from the stick to a short and then subtract 127 from it. You may also have to check the invert box to make it work correctly.

For servo motors i think the internal mechanism is only built to go 180 degrees and it has nothing to do with the program to judge how far it moves because it cant possibly move farther

Sorry, I thought the question was how to change the center position not change the range of the servo

He’s right- I don’t need to mess with the range, but I do need the servo to go from say 0 to 180 when I move the stick to one side.

Lemme explain again- Assume the servos move 180, havent checked but good start- when the stick is “home” the servo is at 90. Move the stick left, it goes to 0. Move it right, it goes to 180. Or, say the servo starts at zero, move it left, it goes to -90, move it right, +90. You say tomato… anyways. I need to do this without the programming kit, modifying stuff, etc. I was looking for a way to do this with like the transmitter software. I need the servo to act where when I have the stick home, it’s at 0, then when I move it one way it goes to 180 (I would be fine with using the trigger-style buttons on the back, but the servos wouldn’t move when I hooked them up to that channel before- I assume those are for cont. rotation only). Anyways, the reason is I need a really high torque, but only for a very few degrees- I geared down the output of the servo, and it works OK right now, but I can think of numerous applications where I would need the servo to go from far-left to far-right with one move of the stick (say attaching a servo to the throttle of a gasoline engine, perhaps)

Other than biasing the transmitter output by putting in the max possible “Trim” adjustment on the joystick channel you are using, I can’t think of a way to do this without taking the servo apart or using a programming kit.

By the way, the Vex Gods who read these messages might want to consider including this sort of behavior in their next version of the default “firmware”.


well… if you ARE having the servo move a mechanism, then you could always use those shaft locks. That is, unless you dont have the ones from the original kit. See, vexlabs sells them as one piece steel and the original ones were plastic with a little metal ring in them. If you took the little metal ring out you could get an adjustabe position for you to mount your mechanism at just the right angle on your servo.

Not sure what you’re trying to say. Maybe clarify that a little? From what I understand you’re thinking I need to position the mechanism off center- not quite what the problem is here. The issue is that I need more travel out of the servo- the full travel. Imagine a throttle control where you would mount a servo- one direction only, it’s a spring return to ‘off’. You wouldn’t need a servo that could move in the ‘on’ direction And the ‘off’ direction, since the servo physically couldn’t move the mechanism more ‘off’. You would want more travel in the ‘on’ direction.

The servo itself only travels 120 degrees and its possible to change center by messing with the gear position.

You could remove the springs from the joystick. That way, full left would be -60 degrees, full right would be 60 degrees, and the stick would generally stay where you put it without it jumping back to 0 degrees.

Of course, the ideal solution is to use the programming kit.

Is it possible (read:easy) to use the programming kit to JUST change the servo’s center position? As in all the other functions stay the same.

Yes - It’s easy.

You just do a little simple arithmetic to convert what the robot receives from the transmitter joystick channel you are using into where you want the servo to point - The worst it might get would be writing a simple equation along the lines of Y = mX+b.

If you need help with that arithmetic contact me (via PM) or post a description of where you want the servo to point when the joystick is at either end and when it is at the center of its travel.

Writing the rest of the program (to tell your robot how to drive around) will be a little tedious, but not rocket science.