2
\$\begingroup\$

I have a question about servo control (PWM) signal.

I want to use one PWM pin to control two servo motors through a 1:2 MUX. That means that depending on which servo position I want to correct, the other servo control signal will be low. My servo refresh rate according to the manufacturer is 50 Hz.

I can't find information on these questions:

  • For how long can the servo hold position without refreshing PWM signal and will it damage servo motor if PWM is low longer than refresh rate period?
  • Can the servo position be refreshed with lower frequency than 50 Hz without damaging the servo motor?

Note: The two servos have almost maximum load applied at all times.

\$\endgroup\$
4
  • 2
    \$\begingroup\$ There is no way we can answer that question in general, as each servo may work differently, and we don't know which servo you have and will the datasheet tell what is the acceptable range for pulses. However, since servo pulses happen every 20ms theoretically, and are theoretically up to 2ms long, it in theory means that you can multiplex 10 servos on same pin and still have 20ms pulse rate for each servo, so why are you worried about muxing two servos to one pin? \$\endgroup\$
    – Justme
    Feb 27, 2022 at 23:40
  • \$\begingroup\$ Edit your question to indicate exactly what you are trying to doing without saying how. \$\endgroup\$ Feb 28, 2022 at 0:06
  • \$\begingroup\$ If the supplier cannot answer the question then find a new supplier OR just try it with no load and see what happens. I very much doubt the servo will be damaged but I am not experienced enough with servos to know if it will hold position. So position the servo then disconnect the control signal, then try to move the servo out of position manually (do it in some safe fashion... maybe push with a stick or whatever is safe in case the servo moves unexpectedly). \$\endgroup\$
    – user57037
    Feb 28, 2022 at 2:10
  • \$\begingroup\$ If you want to drive both servos with the same signal, just use a 'Y' cable. If you've got some setup that's sophisticated enough to allow you to change the pulse width pulse by pulse then I have to assume that it'll let you double the frame rate. \$\endgroup\$
    – TimWescott
    Feb 28, 2022 at 3:19

2 Answers 2

3
\$\begingroup\$

Assuming an analog "hobby" servo (like the HS-311 I once tried this with), going below the 50 Hz refresh rate will make the servo's response slow, and it won't hold position well.

Go even slower, or stop sending pulses completely, and the servo will stop holding position when mechanically loaded.

This by itself will not damage the servo, but the servo may hit its mechanical stops which will then have to hold the mechanical load.

Too large a load, and the stops may give (this bit I didn't try). I assume the stops can hold against the maximum torque a servo can produce when properly driven, as otherwise a servo could also pull itself through its own stops. YMMV here, depending on the quality of the servo (and there are some very crappy ones out there).

When driving only two servos, however, you shouldn't have a problem, as the refresh is sent only every 20 ms (at 50 Hz), and the most common maximum pulse length is only 2 ms. This should give you plenty of time to send two signals to two servos from one GPIO pin.

Note that so-called digital servos work differently, and behaviour will depend on the specifications of the specific digital servo.

\$\endgroup\$
2
\$\begingroup\$

It depends on the servo. The software running on the microcontroller of a digital servo can be made to continue to drive the motor however long it wants, however it wants in the absence of an PWM pulse to update the position information it was last given.

But an analog servo directly translates the incoming PWM pulse to drive the motor so driving it at a lower rate reduces the torque and driving it even slower makes it run out of spec. It probably won't be inherently damaged but it won't operate in spec nor will it behave properly.

\$\endgroup\$
3
  • \$\begingroup\$ I'd have to do the experiment, but I'm pretty sure that for most analog servos, running a 25Hz frame rate would just make it sluggish and lower torque. If that's what you meant by "run out of spec", then yes. I know from experience that running an analog servo faster than the frame rate makes it to really, really odd things. \$\endgroup\$
    – TimWescott
    Feb 28, 2022 at 3:18
  • \$\begingroup\$ @TimWescott Yes that is what I mean. I don't know what happens if you run faster. \$\endgroup\$
    – DKNguyen
    Feb 28, 2022 at 3:21
  • \$\begingroup\$ The servo starts jittering madly. Analog servo amplifiers measure the difference in pulse time between the incoming pulse and one generated from the internal pot. They do it by generating a pulse that's the width of the difference (presumably with an XOR gate). Then they take that difference and stretch it. I can't swear to this, but I'm pretty sure that the wonkiness happens when the interval between pulses gets smaller than the stretched pulse. \$\endgroup\$
    – TimWescott
    Feb 28, 2022 at 3:25

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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