Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I really never understood why hobby servos are so shitty. Their protocol uses only a very narrow range of PWM values and not the full 0-100% scale and that alone completely wrecks their precision beyond what their motors can achieve.

Also they do measure position to achieve their feedback, might as well just output that on a 4th wire.



It's because the default "analog output" PWM mode of a microcontroller will only give a rough approximation of the signal that the servo actually requires. For a servo, the duty cycle is (almost) irrelevant, the 0-100% scale has no meaning here. What matters is the actual length of the control pulses in milliseconds - the gaps between them can be arbitrarily long within a certain range.

If you think about it, it actually makes a tiny bit of sense. First, it is failsafe: Breaking the control line or shorting it to ground will not move the servo to 0%, shorting it to signal level will not move it to 100% - it just doesn't move at all and stops applying force. Any sentient being within the movement range will definitely prefer it that way instead of random movements. Second, it can actually be pretty precise: The driver circuit can be completely analog, it doesn't have to be limited by arbitrary digital quantization steps. All it needs to do is check if the current encoder value is above or below the target and apply power to the motor accordingly.


They've been around for a really long time. I suspect that back in the analog radio days of yore, the control pulses transmitted by your Futaba were recieved as a pulse train - 6 channel radio, six pulses and a big enough gap between frames to reset the index. At the RX all you have to do is feed those pulses through to successive servos one after the other, which is easy and cheap to do with basic logic ICs.

So when you use hobby servos for robots, you're taking a low precision actuator meant to make a flap or throttle or other control surface go relatively up, down, in, or out, that was designed in like, the 70s, and asking it to do modern robotics stuff


My guess would be they use variable resistors for encoders. I haven't done servos for a while, but the industrial stuff all used optical encoders with Gray code patterns.


There are bit more expensive servos with proper encoding. The thing is hobby airplanes don't need high precision as pilot controls looking at the whole plane movement. Now that hobby is killed by regulations. Robotics is coming..


Yep




Consider applying for YC's Summer 2026 batch! Applications are open till May 4

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: