I am working on a robotic application, and I want to control the torque (or current) of brushless DC motors. There are many BLDC speed controllers but I could not find anything related to torque or current.

Instead of continuously spinning, the motor is actuating a robotic joint, which means I need to control the torque at steady-state, or low-speed, finite rotation.

I am looking for a low-cost, low weight solution, similar to what Texas Instruments DRV8833C Dual H-Bridge Motor Drivers does for brushed DC motors.

  • 1
    $\begingroup$ Can't you just do this by measuring the voltage across a resistor in series and use that as feedback for closed-loop current control? $\endgroup$ Nov 13, 2015 at 8:51
  • $\begingroup$ +1 for @BrianLynch 's answer, but I think it may be a little more complicated than that as the current controller will need to interface with a BLDC motor controller, which could be made difficult with a desire to operate at low speed. I don't have much experience with BLDC motors, but if you're planning on operating at very low speed you will probably need encoder feedback on the motor. $\endgroup$
    – Chuck
    Nov 13, 2015 at 15:55
  • $\begingroup$ That might also be exactly what you want to find some COTS part to do instead of whipping it up yourself. $\endgroup$ Nov 13, 2015 at 16:23
  • 1
    $\begingroup$ I agree with @BrianLynch, a couple hundred on ebay will get you what you need and save the massive amount of time needed to build one up from parts. The ELMO whistle is a favorite of mine for it's small size and high power. Try the TI DRV8301 if you want to do it yourself and you like the DRV8833. $\endgroup$
    – hauptmech
    Nov 30, 2015 at 22:31

1 Answer 1


You did not exactly specify the application you are working on, however, the fact that you have limited angular displacement range, and not continuous rotations, does not necessarily mean that you need torque control. If you are interested in positions instead of velocity, you will need position control, and you do not necessarily need also torque control. (e.g. if you want to do gravity compensation though a torque feed forward method, you will need a torque controller, but you would not need something like that for hobby applications)

If your application is simple and does not require high speed precise trajectories, because of simplicity, I would recommend trying position control without a torque control. For this, you could use the velocity controllers well known for BLDCs (as the ones you mentioned, might also come with overload protection) and add an external position loop around it. Your COTS velocity controller will get an input from the outer position controller, implemented on a microcontroller (or similar device, depending on what you use).

The position controller will have to get position feedback of some kind.There are more ways to get angular position feedback, depending on budget and application. Encoders are commonly used, but if high precision is not needed, you might be able to get away with using a potentiometer.

The control rule can be a simple proportional controller at first (PID later), generating the input for the velocity controller. If the difference between the desired position and the actual position (measured by the angular displacement sensor of your choice) is large the velocity controller will get a large input (the said difference multiplied by a constant, which you have to play around with). If there is no difference between the actual and the desired angle then zero velocity is required. Your position controller will generate an output, compatible with your velocity controller (e.g. PWM signals to the velocity controller), that tells the velocity controller how fast and in which direction should the motor move to reach the desired position. Depending on your application this simple approach could be enough.

If you want to start from scratch, you can build your own position/velocity/torque controller, here is an example of how it can be implemented on Atmel micro controllers, here for Microchip. Both documentations recommend motor driver ICs, I think all IC can be considered light weight.

If this is a hobby like project, you might be interested in R/C servos e.g. Dynamixel which have all the functionality you require, position control, built in. The ones I linked are quire capable (incl. torque control, modifiable PID gains), but be aware of their stall torque limitations.


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.