Servo range limit on Braccio Robotic Arm (Servo SR -311)

Good Morning all,

I recently purchased the Braccio Robotic Arm Tinkerkit. The advertised range for the ‘Rotatory Wrist” is 180 degrees but I can only get a maximum of around 170 degrees, even though I’m sending 0 to 180 command values. Manually moving the arm, I can get over 180, so the servo isn’t stuck.

It’s this a limitation of the firmware/hardware or the SR-311 servo ? if it’s the servo can someone recommend an alternative. If not, any other suggestions?

My project needs the full 180 degree range. I wouldn’t have bought the Braccio kit if I’d know it had this limitation :frowning:

Any help appreciated.


I also have a Tinkerkit Braccio.

Have you tried the simpleMovements from the example ? It moves the wrist from 0 to 180 and vice-versa, and it seems to do so at full range.

The servo motor for the wrist is M5 below from the simpleMovements example:

void loop() {
   Step Delay: a milliseconds delay between the movement of each servo.  Allowed values from 10 to 30 msec.
   M1=base degrees. Allowed values from 0 to 180 degrees
   M2=shoulder degrees. Allowed values from 15 to 165 degrees
   M3=elbow degrees. Allowed values from 0 to 180 degrees
   M4=wrist vertical degrees. Allowed values from 0 to 180 degrees
   M5=wrist rotation degrees. Allowed values from 0 to 180 degrees
   M6=gripper degrees. Allowed values from 10 to 73 degrees. 10: the toungue is open, 73: the gripper is closed.
                       //(step delay, M1, M2, M3, M4, M5, M6);
  Braccio.ServoMovement(20,           0,  15, 180, 170, 0,  73);  

  //Wait 1 second

  Braccio.ServoMovement(20,           180,  165, 0, 0, 180,  10);  

  //Wait 1 second

You might test the range of the individual servo.
Servo.attach uses a default signal range of 1000-2000 microseconds.
Then your 0-180 degrees gets mapped into that range.
You can specify a non-default signal range in the attach. Some servos accept 600-2400 microseconds.
Others accept different signal ranges.

You can search for specs on your servo or simple experiment with different ranges in an attach.

If I've got it right, the 0 to 180 range in the servo library always maps to 1000 to 2000 µs. And 1000 to 2000 µs means the both end points of the servo, no matter if it can twist 180 degrees or only 170 degrees as some cheap servos can. Or 270 degrees. So using the degrees 0 to 180 in our calls won't give us correct angles.