3-Wire Servos have a wider range

Using VEXcode IDE 2.4.4-0 with C++ on EXP Brain (v1.0.2).

The vex 3-wire servo
image
has a range from -50 degrees to 50 degrees, according to the IDE
image

However, it’s actual range seems closer to -55 to 58, sometimes wider.

Below is the code I’m using:

int main() {
  float current_angle_pot = 0;
  float previous_angle_pot = 0;

  float current_angle_encoder = 0;
  float previous_angle_encoder = 0;

  servo_c.setPosition(-50, degrees);
  wait(3, seconds);
  current_angle_pot = pot_d.angle(degrees);
  current_angle_encoder = EncoderG.position(degrees);
  printf("servo angle: -50, pot value %.2f, encoder %.2f\n", current_angle_pot, current_angle_encoder);
  previous_angle_pot = current_angle_pot;
  previous_angle_encoder = current_angle_encoder;

  servo_c.setPosition(0, degrees);
  wait(3, seconds);
  current_angle_pot = pot_d.angle(degrees);
  current_angle_encoder = EncoderG.position(degrees);
  printf("pot difference: %.2f, encoder difference %.2f\n", previous_angle_pot - current_angle_pot, current_angle_encoder - previous_angle_encoder);
  printf("servo angle: -50, pot value %.2f, encoder %.2f\n", current_angle_pot, current_angle_encoder);
  previous_angle_pot = current_angle_pot;
  previous_angle_encoder = current_angle_encoder;


  servo_c.setPosition(50, degrees);
  wait(3, seconds);
  current_angle_pot = pot_d.angle(degrees);
  current_angle_encoder = EncoderG.position(degrees);
  printf("pot difference: %.2f, encoder difference %.2f\n", previous_angle_pot - current_angle_pot, current_angle_encoder - previous_angle_encoder);
  printf("servo angle: -50, pot value %.2f, encoder %.2f\n", current_angle_pot, current_angle_encoder);

  servo_c.setPosition(0, degrees);
  
}

This is the data I’ve collected:

-------pot 1 ---------
servo angle: -50, pot value 199.48
servo angle:   0, pot value 146.47, difference: 53.01  <-- difference should be closer to 50
servo angle:  50, pot value 88.78, difference: 57.69   <-- difference should be closer to 50

servo angle: -50, pot value 199.48
servo angle:   0, pot value 146.47, difference: 53.01  <-- difference should be closer to 50
servo angle:  50, pot value 88.22, difference: 58.25   <-- difference should be closer to 50

servo angle: -50, pot value 199.24
servo angle:   0, pot value 146.47, difference: 52.77  <-- difference should be closer to 50
servo angle:  50, pot value 88.38, difference: 58.09   <-- difference should be closer to 50

-----pot 2 ---------
servo angle: -50, pot value 201.50 
servo angle:   0, pot value 143.97, difference: 57.52  <-- difference should be closer to 50
servo angle:  50, pot value 84.92, difference: 59.06   <-- difference should be closer to 50

servo angle: -50, pot value 201.17
servo angle:   0, pot value 143.97, difference: 57.20  <-- difference should be closer to 50
servo angle:  50, pot value 85.56, difference: 58.41   <-- difference should be closer to 50

servo angle: -50, pot value 200.69
servo angle:   0, pot value 144.13, difference: 56.56  <-- difference should be closer to 50
servo angle:  50, pot value 87.17, difference: 56.96   <-- difference should be closer to 50

---- with encoder ---------
servo angle: -50, pot value 199.64, encoder -64.00
pot difference: 54.62, encoder difference 58.00    <-- difference should be closer to 50
servo angle: -50, pot value 145.02, encoder -6.00
pot difference: 58.89, encoder difference 63.00    <-- difference should be closer to 50
servo angle: -50, pot value 86.13, encoder 57.00


--- servo 2 ---------------
servo angle: -50, pot value 210.60, encoder -58.00
pot difference: 56.15, encoder difference 57.00    <-- difference should be closer to 50
servo angle: -50, pot value 154.45, encoder -1.00
pot difference: 58.25, encoder difference 62.00    <-- difference should be closer to 50
servo angle: -50, pot value 96.20, encoder 61.00

--- servo 3 ---------------
servo angle: -50, pot value 202.30, encoder -59.00
pot difference: 56.07, encoder difference 59.00    <-- difference should be closer to 50
servo angle: -50, pot value 146.23, encoder 0.00
pot difference: 59.22, encoder difference 64.00    <-- difference should be closer to 50
servo angle: -50, pot value 87.01, encoder 64.00

I’ve tried different servos, different potentiometers but both pots and encoders show the 3-wire servo has a wider range.

Is this normal or did I do something wrong?

Thank you!

could be true, to be honest it was a nominal range and, as vex 3wire servo is very old and not VRC competition legal, we didn’t give much priority to fine tuning it.

5 Likes

Understood! Was just curious about the old servos.

Thank you!