Using VEXcode IDE 2.4.4-0 with C++ on EXP Brain (v1.0.2).
The vex 3-wire servo
has a range from -50 degrees to 50 degrees, according to the IDE
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!