0
\$\begingroup\$

I did a bit of Googlin' but I couldn't find anything about this.

My hexapod uses analog servos (these ones) to move the legs around.

I have the control line hooked up to a servo controller (which is in turned controlled by an STM32 Discovery board's I2C lines).

The power line is connected to an output of a voltage regulator circuit capable of providing 11A of current - each one of these regulator circuits connects to 9 servos, there are heatsinks on the LM317 and the Darlington pair.

The ground naturally... goes to ground.

Anyways, the servos do move, but for some reason they do not reach the minimum that I can achieve when rotating it by hand. I'm trying to figure out if I'm an idiot or what.

The pulse width that the servos accept ranges between 0.5ms for minimum and ~3 ms for maximum. This constitutes about a 160 degree rotation.

When I set the pulse width to 0.5ms, it moves to a position and stops. It will not move if I reduce the pulse width any more (so 0.4 ms will not move it). However, the position it reaches for PW = 0.5ms is not the minimum or the maximum, there is still quite a bit of room to move (about 15 degrees I think). I can move it further when I shut the power off.

Is there any way to make it move there? I kind of assembled the whole robot while considering it would move to the extremes, but since it doesn't, the hexapod can't lift his feet up as high as I wanted to, for example.

\$\endgroup\$
1
\$\begingroup\$

The mechanical rotation will usually exceed the electrical rotation- there are dead spots at the end of the feedback potentiometer travel, and you generally want to stop the motor (electrically) before it hits the mechanical stops.

There exist ultra-wide angle servos that have a controlled angle of 180° or more, but they are not as common/cheap as the typical nominal 90° types.

\$\endgroup\$
  • \$\begingroup\$ Mm okay, so there isn't really anything I can do about it. I guess I'll just have to adjust the servo horns. I was really hoping to avoid that! \$\endgroup\$ – Mewa Aug 17 '15 at 18:47
  • 1
    \$\begingroup\$ Ah I found the (chinese) datasheet for it and it states that the range is 180 degrees, but maximum travel is 165 degrees. \$\endgroup\$ – Mewa Aug 17 '15 at 18:52
1
\$\begingroup\$

Standard servo controllers assume 1500 us for the center and +-500-ish us for the ends (full travel between 1-2 ms). If your servo needs 300 - 3000 us for full travel you need to make sure controller you're using can provide that.

\$\endgroup\$
  • \$\begingroup\$ My controller can provide it, but the servo will not respond to shorter pulses anyways. \$\endgroup\$ – Mewa Aug 17 '15 at 18:47
  • 1
    \$\begingroup\$ does your servo has a part number? \$\endgroup\$ – Oleg Mazurov Aug 17 '15 at 18:48
  • 1
    \$\begingroup\$ Yes, I provided this in the original post. It's the 1501MG. I just found the datasheet (click here), which says that the range is 180 degrees, and maximum travel is 165 degrees. So that explains everything, I suppose. \$\endgroup\$ – Mewa Aug 17 '15 at 18:55
  • 1
    \$\begingroup\$ @Mewa Great.. could you provide a link for future reference by others? \$\endgroup\$ – Spehro Pefhany Aug 17 '15 at 20:19
  • \$\begingroup\$ @SpehroPefhany, yes it's in the post above, but here it is again: Pololu HD-1501MG Servo. \$\endgroup\$ – Mewa Aug 18 '15 at 17:07

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.