How can I control the torque of a DC servo? Servo model: DS51150-180

Image of servo off of eBay: https://i.ebayimg.com/images/g/pEkAAOSwmFNl4NkA/s-l1600.jpg


The current in a DC motor, as well as in a servo, determines the torque it exerts. I understand that a servo motor automatically demands the current it requires to generate the necessary torque and thus reach the angle indicated by the PWM control signal.

For a project, I want to control the servo not by manipulating its angular position, but by manipulating the torque generated. This torque control would be in proportion to an input signal (a signal that goes through an ADC, then processed with an Arduino to later manipulate the torque dynamically).


Even though I want to control the torque generated by the servo, I have to indicate the angle I want it to reach, so, regardless of the input signal value, it will always be programmed to reach 180°. What I would be manipulating based on an input signal would be the way it reaches those 180°, in this case, with what torque or motor par it gets there. EXAMPLE: Although it may seem counterintuitive, I want that if the input signal is not large enough, and the servo tries to load 2kg at 180°, it couldn't carry it. If the input signal is large enough, the necessary torque will be generated to move those 2kg to 180°, and if the signal is even larger, I want it to carry those 2kg faster to their destination.

My Idea

The servo will always try to demand the current it requires in order to generate the necessary torque to reach the desired angular position, so I was thinking of implementing a current limit control so that even if the servo demands more current, the source does not deliver it, thus generating the torque i want it to generate. However, I have not found an IC/circuit/driver that does this; those I have found alter the delivered voltage, and a servo must maintain its input voltage constant for its correct operation.

How could I solve this? How could I limit the current supplied to a servo motor without altering the voltage that feeds it? I have been researching for a long time and have not found a solution, maybe it's not even possible haha.


1 Answer 1


The gear train is a confounding factor. You'll probably need to drive your servo through a torque sensor, and have a controller in the Arduino that backs the servo off when the torque reaches your torque limit.

You could, in theory, rip out the drive electronics and just bring out the potentiometer and motor wires to a drive/sense board. Then monitor both the servo position and the motor current, and drive to the correct position while limiting the current.

In practice, this won't work unless you have a very loose tolerance for the torque limit on the servo output.

This is because the geartrain in the servo is very inefficient*. As a consequence, you won't have good reliability in how much torque is exerted in the forward direction, and the amount of torque it'll take to back-drive the servo will be significantly more than the torque the servo will exert -- possibly to the point of stripping gears if you try to back-drive it hard enough.

* For gears, "inefficient" means that the torque exerted on the output shaft is lower than the torque you'd expect from the gear ratio alone. RC servos like that have several stages of gear reduction, so you can expect them to have efficiencies on the order of 50% or less.

  • \$\begingroup\$ Thank you very much, I really didn't even know that torque sensors existed, I think they would be quite useful to me. I believe another very good option is the one you mention, modifying and altering the servo to function as I require. \$\endgroup\$ Commented Mar 22 at 23:36
  • \$\begingroup\$ You left me with a doubt, as far as I know, the servo controller delivers the power required to reach a certain position, but, when they say "power," do they refer to varying the current or both the voltage and the current? I know it might sound like a silly question because it would challenge Ohm's law if only the current is varied, but I don't know if there's any special phenomenon due to it being a coil or something of the sort. so much thanks in advance. \$\endgroup\$ Commented Mar 22 at 23:36
  • \$\begingroup\$ This is really a separate question, but unless it's worded carefully it's too broad for Stackexchange. I suggest you start by searching on "how does a servomechanism work?" and see if that leads you to something useful. \$\endgroup\$
    – TimWescott
    Commented Mar 23 at 1:19
  • \$\begingroup\$ When an article on servomechanisms talks about "supplying power" to a motor, they mean that they are directly controlling something, like voltage, current, or PWM to the motor, that causes the motor to drive harder. \$\endgroup\$
    – TimWescott
    Commented Mar 23 at 1:20

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.