Is there a way that the torque on a stepper motor can be determined without some kind of additional force sensor.

Additional electronics such as current shunts etc would be acceptable.

I would like to use the stepper in a winding mechanism and want to be able to check if the stepper is under load before I swap to freewheeling mode.

As far as I understand I would not be able to tell directly when the stepper motor is stopped directly. However I thought some kind of trick like jogging the stepper backwards and forwards a step and watching the current may be plausible.

Does this sound plausible? Or does anyone have a better idea.

Edit: To clarify I am not that interested in the precise value of the torque, I am more interested in checking that there is no significant torque.


I am not that interested in the precise value of the torque, I am more interested in checking that there is no significant torque.

Since you don't need the precise value of the torque, perhaps stall detection or torque limiting or both will be adequate for your application.

torque limiting

The maximum torque that a stepper motor can produce is proportional to the current through the motor coils.

Many stepper drivers make it easy to set a limit on the maximum current through the motor coils.

Perhaps in your application, it would be sufficient to simply dial down that limit so the motor never applies "significant torque".

stall detection

Many stepper motor drivers such as the Trinamic TMC249A, Trinamic TMC246, TI DRV8711, ST L6470, ST L6482, ST L9942, ON AMIS-30623, Allegro A4979, etc. have "sensorless stall detection".

As Dave Tweed already stated, the back-EMF is proportional to the speed of the motor. My understanding is that these "sensorless" techniques rely on directly or indirectly measuring the back-EMF while rapidly stepping the motor. So these techniques don't detect anything while the stepper driver is holding the stepper motor in one position (or trying to drive it at a slow speed).

As you suggested, "jogging the stepper backwards and forwards a step and watching the current may be plausible." While the stepper driver is rapidly stepping the motor forwards and backwards a few steps, then the stall detection circuit can work: If the back-EMF is zero (or below some threshold), then the motor has stopped (or the speed of the motor is below some threshold); if the back-EMF is above the threshold, then the motor is moving at least some threshold speed.

  • 1
    \$\begingroup\$ Torque limiting would not be useful in this application, (winding a spring) where I want to be able to check if it is unloaded before switching to freewheel mode. The stall detection stuff is great information, and from that info I think I should be able to set a torque threshold based on the back EMF (without having to go to stall). Upvoted for now, will mark as correct and edit in some scope plots if it works after testing. \$\endgroup\$ – Hugoagogo Nov 29 '14 at 21:46

No. I don't think that you want is even theoretically possible. The only electrical feedback you get from a motor is its back-EMF, which is proportional to its speed, not its torque. With a conventional motor, the best you could do is apply a current (known amount of torque) and then see whether that brings up the speed enough to measure a back-EMF.

With a stepper motor, as long as you're applying enough current to keep the motor from slipping, there isn't much you're going to be able to tell from measuring the voltage or the current waveforms.

What you might be able to do is to gradually reduce the holding current on one winding, and monitor the voltage on the other winding. If the motor slips as the holding torque is reduced, you'll see one or more pulses on that other winding. You'll probably lose track of the motor's absolute position, but it sounds like this is an application in which that isn't terribly important anyway.

In any case, if you get to zero current without any slipping, then you'll know that it was safe to do so. :-) In other words, as soon as you see any pulses, bring the holding current back up again. The level of current at that point is a measure of the load torque.

  • 1
    \$\begingroup\$ Do you think watching the voltage waveform I would notice a difference in how fast the voltage comes up stepping against the load or with the load. Will have to do some experimentation \$\endgroup\$ – Hugoagogo Nov 20 '14 at 3:04

You say you don't want to use a force sensor. If the reasoning is only because you do not want the extra signal line and/or another analog measurement then how about putting the load feedback signal right onto one of the stepper control lines?

For example if you had a micro switch that detected the fully wound point of your mechanism you could use the NO or NC contacts to alter one of the stepper motor drive lines. Back at the stepper motor drive circuit you could monitor that drive line for a significant change. If the driver chip has fault detection you could use the switch to purposely induce one of the faults.

For example if you're using a belt driven system the belt tightens on one side as you approch the fully wound point, so placing a spring loaded idler pully on the belt could detect over tighting and as it moves would press the micro switch. Similarly if the winding mechanism itself were placed on a spring loaded pivit mount it would move slightly when fully wound and could activate the micro switch.

The trick to makeing the above idea work would be to set the spring loading and the micro switch position to match the high tourqe point that signals the fully wound position.

The switch could fully open one of the drive wires, place a resistor in series with it, place a capacitor to ground, etc. The best part of this idea is that you can determine the change to the drive wire that signals the fully wound point. Insering or shorting a component on the drive line might also work with your idea of using a curent shunt back at the driver. By jogging the motor back and forth you may be able to determine the exact point where the switch indicates fully wound, then the next time you do the wind up you can send only the correct number of stepper pulses to reach that same point.

Of course if you were to connect one of the drive wires directly through the micro switch you would need a switch rated to handle the full motor current. Also, completely opening one of the drive wires may cause the stepper motor to stall, though perhaps that would in itself be helpful in this case.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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