Torque control servo or stepper motor

Hello everyone!

I'm new here and I hope you can help me with my question :grinning:

I'm about to buy arduino so I can control a stepper motor or servo motor. I need it for a very specific application. The motor would need to spin several rotations until a specific torque is achived (the motor will inderectly compress an item) and then it would need to hold this torque for few minutes until a button is pressed.

I have no idea if this is actually possible with either a stepper or servo controlled by arduino. Any advice on how to achive such function will be helpful.

Thank you!

Please describe the mechanical details of the application.

You will probably need a sensor to measure force (not torque). The distinction is explained here: Pololu - Force and torque

Thank you for your quick reply!

Is there a way of measuring the torque applied indirectly by measuring the current/voltage sent to the motor? I don't need high accuracy - 10%, 20% error would be acceptable.

I want to avoid adding any strain gauges to measure the load on the item, I need to keep it as simple as possible...

Mechanical description: The motor(size about NEMA 23) shaft will drive a pulley set 1:5 (to increase the torque and reduce speed). The second pulley will drive a leadscrew with 2mm lead. This leadscrew will then compress an item to a specific load. The load would need to be held for some time.

There is a chance You can measure the current and calculate torque provided You calibrate the system before.

The lead screw will attempt to be displaced by the force, so use a force sensor on the end bearing at the lead screw.

I was thinking of having a closed loop system where the encoder sees that the motor starts to decrese its speed and the current goes up. Then the motor would be controlled so that the current (torque) is maintained.

Thank you, I will keep this in mind as an option. As I mentioned, I want it to be as simple as possible so I would like to explore some options without adding any additional sensor. More parts= more things that can fail.

You will HAVE to add sensors for the motor voltage/current.

You will HAVE to add sensors for the motor voltage/current.

I didn't think about this :wink:
So there is no easy way of torque control on a stepper or servo motor? I will consider than a strain gauge or a load cell somewhere in the system...

Thank you for your help!

How much do the items being compressed vary? If they're similar enough, you might get away with just moving your stepper the same number of steps (determined by experiment) every time.

The thickness and material type will vary so it will not work that way…

Is there a way of measuring the torque

Please read through the link in reply #2 before continuing.

Static motor torque is proportional to motor current.
That won't hold for a stepper motor with a current limiting driver, of course.

As soon as you include the word "control" you must measure something in order to "control" it.

Actually there is, although it will need calibrating, and may need a careful choice of motor.

Some applications routinely use an electric motor in a stalled condition. I'm referring to a traditional brushed motor. The motor maintains a particular torque, proportional to the current flowing in it, and when stalled it behaves like a resistor electrically. This means two things: firstly, it wastes electricity, so it wouldn't normally be wise for a battery-powered application. Secondly, the motor will get hot and you need to make sure it doesn't get hot enough to suffer damage.

But in theory all you need to do is drive the motor from a constant current source, and it will wind up that spring (or whatever it is) until the the force from the spring equals that from the motor, at which point it will stall and hold its position. The stall point can be set by adjusting the current from the constant current source.

Ok this is interesting! No, this is not battery driven so waisted energy is not a concern but weight is. I need to do it as light as possible so the solution would need to be as efficient as possible in this matter.

I’m wondering how and where I could check up a for different motors the possible stalled torque so I could compare it to stepper and servo

I’m reading this article right now- very interesting, thank you!

Very, very few brushed motors and servos are designed to operate in the stalled condition and if not, will burn out quickly if you try. The ones that are will be expensive, and probably custom designs.

The simplest approach is to use a geared motor and continuously measure the force applied to the object. If you use a worm gear drive, the shaft position will hold with the motor powered off.

Says someone who's never actually tried it. The biggest risk of burnout is from the use of constant voltage supplies, rather than constant current. With a "normal" power supply, a stalled motor will draw enough current to overheat quickly and catch fire, as @jremington says. Plus, of course, its cooling fan isn't running.

Any brushed DC motor* can be held stalled without harm provided the temperature rise is not excessive.** I don't know of any way of ascertaining that except by experiment, although there will be motors specifically made for the job, and the spec sheet will give the necessary information.

For what it's worth, I'm not actually advocating a stalled motor approach for this application. I simply wanted to offer it for consideration, bearing in mind that @kill_gil wanted a solution that was as simple as possible, preferably without using any additional sensors.

*AC induction motors can also be operated stalled. Three-way splitter valves in domestic heating systems (in Europe, at least) use a stalled motor to hold the valve open against a spring when energised, the spring closing the valve when power is removed from the motor.

**An electrical engineering lecturer told me this rather informal approach to finding the maximum safe current. With an ammeter in circuit, increase the load on the motor (or transformer, or other wound component) until it just starts to smoke. Read the current. Then halve it to find the maximum safe continuous current.

So there you go: the maximum continuous current is half the smoke current.

Sounds like it could be a good rule of thumb, but it's probably worth buying a couple of spare motors. Make sure they're cheap! :laughing:

I honestly think you'll need to do some experimentation, unfortunately. I fully accept that it may not be a suitable solution for you. I just wanted to offer it for consideration.

Any brushed DC motor* can be held stalled without harm provided the temperature rise is not excessive.

Very helpful and extremely useful information for the typical beginner on the Arduino forum! Thanks for your thoughtful input.