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.
Best Answer
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.