# Torque and speed control of a DC motor

I'm new to electronics and this is my first post so please be patient with me.

Introduction

I am required to design a rehabilitative exoskeleton-like knee-brace to assist sit to stand, I have faced a number of uncertainties due to lack of understandings of the working principles of a motor. This exoskeleton should exert minimal torque to assist the user to rise from sitting

As a rehabilitative device, the output speed of this motor is required to be constant and from what I understand, holding the Voltage input to the motor constant will achieve that. The motor needs to have a controllable output torque, and I can control torque by controlling the armature current.

1. In theory, with a buck converter, I am able to hold the input voltage to the motor constant. This would be able to hold the RPM constant but leaves the torque uncontrollable. However this would only leave one output parameter to be variable

2. I have also thought of connecting the buck converter to a DC motor driver as I understand that the buck converter can only control either Voltage or Current and not both simultaneously, the DC motor driver should help keep the RPM constant with a varying Voltage input while the buck converter would help to vary the Torque with a controllable Current output

Question

Would this be a feasible idea or are my principles extremely wrong, I would like to seek advice before sourcing for parts. I hope no one feels that I am asking to be spoon-fed, as I am only asking for advice

• A few pointers: (1) "... should exert minimal torque ...". Minimal would be zero but presumably you meann "a small or modest torque". (2) "... the output speed of this motor is required to be constant ..." You'll need some moderate acceleration and deceleration to avoid jerk. (3) You need to decide whether you want constant speed or constant torque as you can't have both at the same time. I suspect you want to set a current and voltage limit giving you a maximum torque (current) and a maximum speed (voltage). Feb 3, 2019 at 12:52
• Torque control is likely to be the best. It will apply a constant assistance to the user at whatever speed the user is moving at rather then try to force them to stand up at a specified speed. Feb 3, 2019 at 12:54
• It sounds like you’re describing a capstan.
– Chu
Feb 3, 2019 at 13:30
• @Transistor Thanks for the reply I really appreciate the effort (1) Yes, what I meant was small torque, minimal being the DC motor should exert as little torque as possible in order to help the user stand, in this case it depends on the user. (2) I haven't considered that all and I think that's something that would be extremely useful (3) Ah yes I would like to set a current limit so that the motor would not exert more torque than necessary as that would take away the concept of rehabilitation. In that case I should control the voltage while setting a current limit, is that right? Feb 3, 2019 at 14:59
• @Transistor Correct me if im wrong, but does that mean that I am able to just achieve everything with torque control or is there something I am overlooking, also what components would be required to implement it. I think I've seen somewhere that it can be done with PWM on a motor driver, however isnt that just speed control? Feb 3, 2019 at 15:03

## 2 Answers

Me: You need to decide whether you want constant speed or constant torque as you can't have both at the same time. I suspect you want to set a current and voltage limit giving you a maximum torque (current) and a maximum speed (voltage).

You: I would like to set a current limit so that the motor would not exert more torque than necessary as that would take away the concept of rehabilitation. In that case I should control the voltage while setting a current limit, is that right?

If you have a DC motor and a bench power supply you can play with you can get a good intuitive feel for how this might work.

Figure 1. A typical lab / bench PSU with adjustable voltage and current limit.

Experiment 1 - constant voltage:

• Set the voltage to 1/4 the motor's rated voltage and turn the current limit up high.
• Connect up the motor and load the rotating shaft by gripping it (carefully) with your hand. Observe the voltage and current readings. You will see the current rise as the motor slows slightly. This is as close to constant speed that you can get with just a straight DC supply.

Experiment 2 - constant current:

• Set the current to half the maximum observed in the previous experiment.
• Connect up the motor and notice that it runs at full voltage and low current.
• Gradually load the shaft by hand again. Not that at some point the power supply reaches the current limit and the voltage starts to fall while the current remains at the limit. You are now in constant torque mode.

You can play with the voltage to set the maximum speed and play with the current to set the maximum torque. The motor will run to whichever limit it hits first. In your case this is most likely to be the torque limit.

This will give you some instinct regarding the type of control you need. Then you can look for a suitable controller to meet those requirements.

• +1 for describing how the OP can gain intuition Feb 3, 2019 at 15:18
• Thank you for the detailed description, I tried the experiments and am relatively pleased with the results. That has led me to think that I should forgo the buck converter completely and use a bench PSU to power my motor since portability is not an important factor in my project, this would allow the user to set the current limit and control the output torque Feb 4, 2019 at 4:50
• The bench power supply is obviously very large so you'll need something more compact. You also need something compact and, presumably, battery powered so efficiency will be very important. This implies some type of switching power supply with adjustable constant current capability. This isn't my area of expertise so I don't think I can help you further on design or selection criteria. Feb 4, 2019 at 7:12

What seems to fill your requirements is known as cascade control. The figure below shows a more generic block diagram where the speed control is highlighted. In a DC machine, the torque is proportional to the value of the armature current. The setpoint for the torque is derived from the speed controller. So the speed controller asks for a torque needed to maintain a certain speed:

This architecture uses inner feedback loops to respond quickly to deviations rather than waiting for the effects to propagate through the entire control loop. The errors are minimized before they can propagate. If the internal current loop is faster (and should be), a slight change in load will have less influence on speed. Generally speaking, the internal loops should have a higher BANDWIDTH than the outer loops. The DC motor will usually have a small time constant. In this way, if only the speed control was used, a small change in the voltage at the motor terminals could cause a large variation in the current (uncontrolled). Thus, another advantage of the cascade control is the possibility of limiting the current to the maximum allowed values. The point here is that you will need to measure the current. I believe you are considering bidirectional control of the motor, so an H-bridge should be used. The figure below shows such a system operating in four quadrants and the current measurement included:

The figure below shows a way to measure the motor current and at the same time to discriminte its direction:

Apart from a more complex sensorless system, in order to measure the speed, Hall sensors and opto sensors are commonly used with digital controllers, whilst analogue circuits often use tacho-generators. The whole subject is vast requiring a lot on subject of control (modeling, systems identification and simulations). Also, special integrated circuit for motor control will greatly help with its built-in features.

• Could you please, poste the link (source) of the third circuit? it seemed very important to me!! May 25, 2023 at 18:55