Maker Pro
Maker Pro

An way to sense the torque of a stepping motor?

P

Peter

I am starting on the development of what is basically a DC servo,
which uses a FAULHABER microstepped stepper driving an inline gearbox.

There is a requirement to measure the torque on the output shaft of
the gearbox. Not accurately; within 20% would do.

Existing implementations of what I am trying to do have the whole
motor+gearbox swivelling on the gearbox output shaft, and deforming a
steel leaf with strain gauges on it. This works, but is weak (the
gearbox output shaft needs to be thick :)) and (this is a separate
problem) the strain gauges easily come unglued from the leaf.

It would be great if one could somehow use the stepper current, but I
don't think it will change much.

I am going to use an off the shelf stepper controller chip to do the
microstepping, e.g.
www.allegromicro.com/en/Products/Part_Numbers/3987/3987.pdf

Has anybody done this?
 
D

Don Y

Hi Tim,

Not quite. Speed, current and angle, these three. And very little on
current

On an *instantaneous* basis, yes. However, if the OP is looking
at a reasonably static load, then average current correlates
with torque quite well. This is why I specifically asked what
the nature of the load would be and the timescales over which it
is likely to vary. If, for example, the load is livelier than
the shaft (i.e., load changes more frequently than the shaft
angle), then its an entirely different measurement problem than
when the load remains relatively constant as the shaft rotates.

E.g., we drive stepper motors as if they were "brushless DC
motors". Tell the control loop what constraints you want to
place on its performance (within the range supported by the
motor, load and driver) and the system drives it as if it
was a very clever DC motor.

Want to control speed? Then the control loop supplies
current for the instantaneous torque required to drive the load
through the required number of radians per second. Want to
control *torque*? Then the control loop adjusts the speed to
"provide" the torque desired.

[of course, subject to acceleration profiles, angular positional
constraints, etc.]
At rest, there will be a torque from the current times some function of
the angle of the shaft with respect to the frame. This angle-dependent
function will repeat around the circle as many times as there are steps
in the motor. For most steppers there will also be a torque generated by
the field magnets and the geometry of the armature; this torque will also
depend on the angle, and will also repeat by the number of steps around
the circle.

Things get wacky with speed, which is one of the reasons that I detest
working with steppers.

You need to ensure you have enough voltage compliance to overcome
the back EMF as speed increases. I.e., you can't arbitrarily
change speed without concern for how it will affect available
torque. There is a locus of operating conditions within which
you have to remain ("SOA"?) just like any system.
But the main point is that without knowing the angle of the shaft with
respect to the frame, you have no clue of what the actual torque is --
just the pull-out torque.

If you were designing this from the ground up I'd suggest you consider a
DC motor with an encoder driven from a servo loop -- because with the

DC motors are a *lot* easier to control -- assuming you don't *also*
need precise control over shaft angle. OTOH, if you ever want to
"stop on a dime", change directions in a controlled manner, etc.
the DC motor is a big headache. (this is why the "stepper as
brushless DC motor" approach is so appealing -- in its operating
range, it gives you characteristics of both, simultaneously)
 
D

Don Y

Hi Tim,

On Mon, 23 Apr 2012 14:33:47 -0700, Don Y wrote:

On 4/23/2012 2:13 PM, Peter wrote:
I am starting on the development of what is basically a DC servo,
which uses a FAULHABER microstepped stepper driving an inline
gearbox.

There is a requirement to measure the torque on the output shaft of
the gearbox. Not accurately; within 20% would do.

Existing implementations of what I am trying to do have the whole
motor+gearbox swivelling on the gearbox output shaft, and deforming a
steel leaf with strain gauges on it. This works, but is weak (the
gearbox output shaft needs to be thick :)) and (this is a separate
problem) the strain gauges easily come unglued from the leaf.
It depends on how much sensitivity (gain) you need in the torque
transducer. And, the nature of the load -- i.e., does it vary over
time? What sorts of timescales?
It would be great if one could somehow use the stepper current, but I
don't think it will change much.

At a given speed, current drives torque. But, you may find that there
is too much "slop" in the signal for you to be able to extract the
information you need. Also, you probably want to *control* current
(unless you are willing to let the motor "slip"?) so you have better
control over the angular position of the shaft at all times (?)

Not quite. Speed, current and angle, these three. And very little on
current

On an *instantaneous* basis, yes. However, if the OP is looking at a
reasonably static load, then average current correlates with torque
quite well. This is why I specifically asked what the nature of the
load would be and the timescales over which it is likely to vary. If,
for example, the load is livelier than the shaft (i.e., load changes
more frequently than the shaft angle), then its an entirely different
measurement problem than when the load remains relatively constant as
the shaft rotates.

E.g., we drive stepper motors as if they were "brushless DC motors".
Tell the control loop what constraints you want to place on its
performance (within the range supported by the motor, load and driver)
and the system drives it as if it was a very clever DC motor.

Want to control speed? Then the control loop supplies current for the
instantaneous torque required to drive the load through the required
number of radians per second. Want to control *torque*? Then the
control loop adjusts the speed to "provide" the torque desired.

[of course, subject to acceleration profiles, angular positional
constraints, etc.]

I'm terribly sorry, you seem to be living in a different universe from
the one I inhabit.

In _this_ universe, stepper motors have absolutely no way of sensing
torque -- the current one puts through them affects the maximum torque at
which they will work, and beyond that they cannot hold the load:

Exactly! And, when you notice that it isn't executing the step
as expected, you are now operating at the torque associated
with that current and can no longer increase speed (step rate).
Set the drive current for the torque you desire/need and then
let the controller increase the step rate until the armature
starts to lag the rotating field.
generally what happens is that because with the shaft spinning with
respect to the magnetic field, the average current is zero and the load
just goes wherever it wants to unless or until it happens to get
synchronized with the motor again.

This happens if you run the motor open loop without watching
where the armature is "physically" in relation to the rotating
field. If you operate a stepper like that, you risk the
motor effectively *stalling* if it misses a step and is
unable to accelerate to the current step rate within a
cycle (likely!). So, you either artificially limit the
top rate to something that you *know* the motor can keep
up with regardless of load, or, you provide a means of
detecting when this HAS happened (or, if you are clever,
when it is *about* to happen) so that your drive can
be adjusted to resynchronize with the motor.
So here in this universe, we have to design the motor drive for the
maximum torque that the motor will ever have to generate, and accept the
fact that any excess current will get burnt up as heat. In other words,
the control system has to treat the stepper as a very _stupid_ brushless
DC motor, that cannot feed its armature position back to the controller
to be used in a sensible manner.

No. You can sense the position of the armature with encoders
or, if not completely driving all of the coils in the stepper,
by sensing the back EMF on the "idle" coils to tell when the
motor has effectively "taken" the step (this is how "sensorless"
brushless DC motors operate). Your controller then watches how
the armature is moving so that it doesn't advance to the next
"step" (using that term loosely) until it knows that the motor
can follow it there. Just like a brushless DC motor.
Which is generally well within what you could do with a similar size and
weight DC brushless motor, or even a brushed DC motor.


Definitely a different universe.


So, having your overly large, overly heavy, and overly power hungry motor
occasionally fall out of sync and damage equipment _isn't_ a big headache?

That;s why you track *when* the motor has actually taken the step.
You don't drive it "open loop and hope". Otherwise, you end up with
a motor poorly matched to the needs of the application.
Or are you just going to say that overly larger, heavier and power
hungrier is a good thing?

If you design your control law correctly, a design with a DC motor will
_always_ be able to deliver _all_ of it's available torque, without
requiring you to overdesign the motor or driver for fear that your motor
will fall out of sync.

And you _cannot_ stop a rapidly moving stepper motor that has any kind of

I didn't say that the motor was "rapidly moving". I stated that you
always have to operate within the design constraints of the system.
That includes the acceleration/deceleration profiles of your loaded
drive.
an inertial load "on a dime" -- at least not if "on a dime" means in one
step. You must decelerate the mechanism, open loop, and hope that the
motor doesn't fall out of synchronization.

No! The beauty of operating it as a "brushless DC motor" is that
you *remain* in closed loop control of the armature. It doesn't
(can't) fall out of synchronization any more than your DC motor
can be "overridden" by its load.

You can understand how a brushless DC motor operates, right? How
it recovers from a momentary stall? How it can adjust its speed
to match the torque available from the current flowing through
its windings?? The same technique applies when you operate a
stepper motor like this -- except *you* are controlling the
commutation instead of a hall effect sensor in the motor (or a
rotary encoder, etc.)
What, the worst ones from each?

I admit, my experience with steppers has mostly been with attempting to
rescue projects from mechanical engineers that designed them in without
paying attention to the notion of "safety margin". And I've even used
them in some low-demand applications with success.

But if you need small, light, low-power drives, steppers should be on the
bottom of your list.

Stepper motors are a win when you want precise control over the
angular position of the shaft. And, to be able to operate,
reliably, at very low angular velocities. Getting a DC servo
motor to give you precise angular control requires high resolution
encoders. A stepper operated with feedback from the armature
itself allows you to get finer resolution than available with
a given encoder and very low angular velocities.

When you can also operate the stepping motor as a brushless DC motor,
then you can drive it CLOSED LOOP at whatever speeds and
accelerations the load will tolerate -- without resorting to
open loop (de)acceleration profiles, etc.

You push a fixed current into your DC servo motor and, with a
stalled armature, the motor will exert a certain amount of
torque. With a particular load and that same current, the
motor will achieve a particular top speed (assuming you
have enough voltage compliance). The stepper as brushless
DC motor gives you the same sorts of characteristics -- with
the addition of fine control over armature position and
great holding torque.

We've used this technique on tiny steppers as well as "fractional
horsepower" units (e.g., NEMA 34 frame sizes, *hundreds* of
oz-in of torque, etc.). Cool to watch the same motor scream
along at a few thousand RPM -- then microstep to 15 minutes of
arc a few seconds later!

But, the controls get significantly nasty!

Same universe, you just haven't looked in all the right corners!
:>
 
R

Roberto Waltman

Peter said:
There is a requirement to measure the torque on the output shaft of
the gearbox. ...

Existing implementations of what I am trying to do have the whole
motor+gearbox swivelling on the gearbox output shaft, and deforming a
steel leaf with strain gauges on it. This works, but is weak (the
gearbox output shaft needs to be thick :)) and (this is a separate
problem) the strain gauges easily come unglued from the leaf.

Sounds like a in-house, poorly implemented, reinvention of a reaction
torque sensor. See:

http://www.transducertechniques.com/trs-torque-sensor.aspx
http://www.futek.com/product.aspx?t=torque
http://www.meas-spec.com/torque-sensors/static/reaction-torque-sensors.aspx

They will increase the cost of the stepper "micro-universe" by only
one or two orders of magnitude.
 
P

Peter

Thank you all for the responses.

My view is that measuring the stepper current is not going to work not
least because it will be very lightly loaded. The axial gearbox on the
end of it will be something of the order of 100:1...

Also it will be driven from one of those chips so presumably the only
way to get a grip on the current will be to measure the overall
current drawn by the chip. Actually I can try that. It will be easy
enough to see if there is any useful change.

Regarding the motor type....

The "thing" I am designing is a redesign of an existing product (not
mine) which is a crap design and with very poor reliability. There is
an external signal involved (which I can't change) which controls the
gearbox output speed and which contains a lot of noise. Some of the
noise is high frequency and even RF (which is trivial to filter out)
and some of it is within the passband of the whole control system so
one needs to be a little careful about filtering that out too keenly.
The latter noise creates problems with the existing design which uses
a crappy (Globe) DC brush motor whose brush life is similar to its
commutator life (!) and which ends up waggling back and forth trying
to follow the spurious signal. It's like taking a dog for a walk; the
dog covers about 10x the distance *you* walk.

So I originally went to a brushless motor (3-phase) which I know
pretty well; my son is heavily into model aircraft and that business
has gone that way, and the motors are amazing. The controllers are of
poor quality (like all model aircraft electronics) but it appears
feasible to build your own.

There are two issues (in fact I kicked off a long thread here some
months ago on controlling 3-phase brushless motors :)) with these. One
is poor low speed control (unless one uses a tacho of some sort) and
the other is that they do need a relatively clever controller
(relative to a stepper which gives you implicit precise speed
control). I do need a fairly accurate (few %) transfer function in
this case.

The existing product uses a stupid brush tachometer to achieve that,
which is gear coupled (and the gears wear out) and whose brushes wear
out, and because the whole assembly rotates (to sense the torque) the
tacho wires tend to come off :)

So I want to avoid the tacho. Also there is a space limit and I can't
add another inch or two onto the end of the motor+gearbox assembly
(which is probably why the existing tacho is geared).

Oh another requirement is a -40C min temp, and I haven't yet found a
stepper controller which does that... that Allegro chip I mentioned
earlier is -20C. I better sort this bit before doing anything else. On
another project, I had a bit of "fun" finding a plain old 7805 TO220
regulator which was specced down to -40C :)

A "brushless" motor (brushless or stepper) will neatly sidestep the
problem with the in-band spurious signals coming in, because apart
from the bearings, and the gearbox, there isn't much to wear out.

A stepper seems to be an easy solution to the transfer function too.

Regarding sensing the torque, I could use a version of the existing
steel leaf system (with the motor+gearbox swivelling around the
gearbox output shaft) but with Hall sensors around it. Or some
magnetic-proximity sensing (a form of LVDT) which would work better
over the temp range than Hall sensors. There are probably several ways
to do it. I know about the shaft torque sensors; they are a damn
clever solution but pricey and too bulky for this. I don't have the
room to put one in.

Actually I think sensing the stepper current is a useless idea because
the torque sensing has to work even when there is no control voltage
i.e. the motor is stopped, and in that situation the stepper
controller won't be doing any stepping; it will just be holding the
armature in position.

A pity I can't openly discuss the application.
 
D

Don Y

Hi Peter,

Thank you all for the responses.

My view is that measuring the stepper current is not going to work not
least because it will be very lightly loaded. The axial gearbox on the
end of it will be something of the order of 100:1...

Ah, OK. You'd not mentioned this nor the frame size of the
motor/load magnitude, etc.

Keep in mind that a gearbox can influence the backlash that
you see -- if this is important in your control.
Also it will be driven from one of those chips so presumably the only
way to get a grip on the current will be to measure the overall
current drawn by the chip. Actually I can try that. It will be easy
enough to see if there is any useful change.

I don't think you will see much (since you're hiding behind the
gearbox *and* the driver chip) -- uless you drastically vary the
mechanical load on the motor shaft (e.g., grab it with some vice grips
and "try" to stall it -- that's the *biggest* signal you'll encounter)
Regarding the motor type....

The "thing" I am designing is a redesign of an existing product (not
mine) which is a crap design and with very poor reliability. There is
an external signal involved (which I can't change) which controls the
gearbox output speed and which contains a lot of noise. Some of the

^^^^^^^^^^^^^^^^^^^^^ meaning "motor speed", indirectly?
noise is high frequency and even RF (which is trivial to filter out)
and some of it is within the passband of the whole control system so
one needs to be a little careful about filtering that out too keenly.
The latter noise creates problems with the existing design which uses
a crappy (Globe) DC brush motor whose brush life is similar to its
commutator life (!) and which ends up waggling back and forth trying

Engineering is all about tradeoffs! :> It's a lot easier to just
dump DC into a motor and watch/vary the current than it is to
sequence a stepper/microstepper. But, the mechanical commutation
(vs. electronic) shows signs of wear!
to follow the spurious signal. It's like taking a dog for a walk; the
dog covers about 10x the distance *you* walk.

So I originally went to a brushless motor (3-phase) which I know
pretty well; my son is heavily into model aircraft and that business
has gone that way, and the motors are amazing. The controllers are of
poor quality (like all model aircraft electronics) but it appears
feasible to build your own.

This is a (very) *small* motor, then? (I don't imagine large
*anything* in model aircraft)
There are two issues (in fact I kicked off a long thread here some
months ago on controlling 3-phase brushless motors :)) with these. One
is poor low speed control (unless one uses a tacho of some sort) and
the other is that they do need a relatively clever controller
(relative to a stepper which gives you implicit precise speed
control). I do need a fairly accurate (few %) transfer function in
this case.

Are you ultimately controlling something's "position"/orientation?
Or, does the shaft "just spin" (like the wheels on a car)?
The existing product uses a stupid brush tachometer to achieve that,
which is gear coupled (and the gears wear out) and whose brushes wear
out, and because the whole assembly rotates (to sense the torque) the
tacho wires tend to come off :)

Presumably, the rotation is "against a spring" for the torque
measurement. Just how much rotation are you seeing? Could
you, instead, let the motor frame rotate and sense the torsional
strain exerted "off the back" against a fixed member?

<frown> No graphics, here...

Imagine the front of the motor sitting in a pillow block.
Imagine a plate fastened to the back of the motor with a
"shaft" protruding coaxially wrt the actual output shaft.
Fasten the far end of that shaft to a stationary member.
I.e., the front of the motor is captive and supported
by the pillow block (or equivalent). As the load *fights*
the motor, the motor's frame will want to twist ABOUT IT'S
SHAFT. This torsion is transfered to the fixed mount at
the rear of the motor where a *stationary* sensor can be
mounted (i.e., you are measuring the deformation in the
"rear shaft").

Alternatively, the rear shaft can be "point-attached" to
a cantilevered member who's deformation is measured.

(You're not looking for *motion* as much as you are
*deformation*. Google "poisson configuration" and
"strain gauge")
So I want to avoid the tacho. Also there is a space limit and I can't
add another inch or two onto the end of the motor+gearbox assembly
(which is probably why the existing tacho is geared).

Is the motor "fastened" off the shaft end of the gearbox?
Or, is there other support?
Oh another requirement is a -40C min temp, and I haven't yet found a
Ouch!

stepper controller which does that... that Allegro chip I mentioned

Does the lubricant in the gearbox exhibit a change in viscosity
at -40F?
earlier is -20C. I better sort this bit before doing anything else. On
another project, I had a bit of "fun" finding a plain old 7805 TO220
regulator which was specced down to -40C :)

A "brushless" motor (brushless or stepper) will neatly sidestep the
problem with the in-band spurious signals coming in, because apart
from the bearings, and the gearbox, there isn't much to wear out.

A stepper seems to be an easy solution to the transfer function too.

Regarding sensing the torque, I could use a version of the existing
steel leaf system (with the motor+gearbox swivelling around the
gearbox output shaft) but with Hall sensors around it. Or some

It seems to me that your approach suggests you are looking for
lots of *motion* to indicate torque. :< What happens if the motor
is ever "back driven" by an excessive load? Does the support
mechanism/sense scheme fail?
magnetic-proximity sensing (a form of LVDT) which would work better
over the temp range than Hall sensors. There are probably several ways
to do it. I know about the shaft torque sensors; they are a damn
clever solution but pricey and too bulky for this. I don't have the
room to put one in.

Can you afford to calibrate each unit? (to whatever degree of accuracy
you ultimately need)
Actually I think sensing the stepper current is a useless idea because
the torque sensing has to work even when there is no control voltage
i.e. the motor is stopped, and in that situation the stepper
controller won't be doing any stepping; it will just be holding the
armature in position.

That doesn't preclude using torque -- see my description, elsewhere,
of a scheme by which you can effectively measure/control the
present "holding torque" (with shaft position feedback). But,
I agree, in the situation you've outlined, it seems like your
best bet is a sensor+mechanism combination that gives you a
signal more directly proportional to instantaneous torque.
A pity I can't openly discuss the application.

<grin> Welcome to my world! :> (Imagine having to live by
that same constraint decades *after* the project's completion!)
 
D

Don Y

Hi Lasse,

the stepper driver is constant current so even when you stall it'll be
the same current

Some drivers are voltage mode -- though that doesn't change the
(faulty) answer, here.
unless theres an encoder of some sort to tell you where the motor is
compared
to where you trying to make it go, I can't see how you could measure
torque

Yes, sorry, I misspoke (thinking about how *I* drive motors and
not the application at hand)
with numerous stepper ic's with sequencer and all the bells and
whistles
you can image driving a stepper the difference isn't so big I think

It depends on the size of the motor. E.g., I've dealt with 34 and
43 frame sizes -- *lots* of power delivered to the motor (i.e.,
many amps per phase). I don't believe there are any integrated
solutions that can address this range of devices. (?)
they come in all sizes
this big enough?: http://www.hobbyking.com/hobbyking/...y_CA120_70_Brushless_Outrunner_100cc_eq_.html

there are several open source projects doing BLDC with small MCUs

I think with an encoder so you could calculate torque from measuring/
controlling
current and motor position vs. driving waveform

It's still not trivial. You have to decide where you are
willing to put your development and recurring dollars.
Complexity in the controller vs. cost in a transducer. :<

I don't like "mechanism". It tends to add recurring labor,
cost, failure points, etc.

OTOH, it is usually a lot easier to understand and "relate to".

Ideally, come up with a hybrid that lets you save cost/complexity
by integrating the two approaches. E.g., I've designed systems
where a mechanism drove a known "calibration spring" so the
drive could observe its feedback and calibrate itself (instead
of using, e.g., NBS traceable transducers).
 
J

Jamie

Peter said:
Thank you all for the responses.

My view is that measuring the stepper current is not going to work not
least because it will be very lightly loaded. The axial gearbox on the
end of it will be something of the order of 100:1...

Also it will be driven from one of those chips so presumably the only
way to get a grip on the current will be to measure the overall
current drawn by the chip. Actually I can try that. It will be easy
enough to see if there is any useful change.

Regarding the motor type....

The "thing" I am designing is a redesign of an existing product (not
mine) which is a crap design and with very poor reliability. There is
an external signal involved (which I can't change) which controls the
gearbox output speed and which contains a lot of noise. Some of the
noise is high frequency and even RF (which is trivial to filter out)
and some of it is within the passband of the whole control system so
one needs to be a little careful about filtering that out too keenly.
The latter noise creates problems with the existing design which uses
a crappy (Globe) DC brush motor whose brush life is similar to its
commutator life (!) and which ends up waggling back and forth trying
to follow the spurious signal. It's like taking a dog for a walk; the
dog covers about 10x the distance *you* walk.

So I originally went to a brushless motor (3-phase) which I know
pretty well; my son is heavily into model aircraft and that business
has gone that way, and the motors are amazing. The controllers are of
poor quality (like all model aircraft electronics) but it appears
feasible to build your own.

There are two issues (in fact I kicked off a long thread here some
months ago on controlling 3-phase brushless motors :)) with these. One
is poor low speed control (unless one uses a tacho of some sort) and
the other is that they do need a relatively clever controller
(relative to a stepper which gives you implicit precise speed
control). I do need a fairly accurate (few %) transfer function in
this case.

The existing product uses a stupid brush tachometer to achieve that,
which is gear coupled (and the gears wear out) and whose brushes wear
out, and because the whole assembly rotates (to sense the torque) the
tacho wires tend to come off :)

So I want to avoid the tacho. Also there is a space limit and I can't
add another inch or two onto the end of the motor+gearbox assembly
(which is probably why the existing tacho is geared).

Oh another requirement is a -40C min temp, and I haven't yet found a
stepper controller which does that... that Allegro chip I mentioned
earlier is -20C. I better sort this bit before doing anything else. On
another project, I had a bit of "fun" finding a plain old 7805 TO220
regulator which was specced down to -40C :)

A "brushless" motor (brushless or stepper) will neatly sidestep the
problem with the in-band spurious signals coming in, because apart
from the bearings, and the gearbox, there isn't much to wear out.

A stepper seems to be an easy solution to the transfer function too.

Regarding sensing the torque, I could use a version of the existing
steel leaf system (with the motor+gearbox swivelling around the
gearbox output shaft) but with Hall sensors around it. Or some
magnetic-proximity sensing (a form of LVDT) which would work better
over the temp range than Hall sensors. There are probably several ways
to do it. I know about the shaft torque sensors; they are a damn
clever solution but pricey and too bulky for this. I don't have the
room to put one in.

Actually I think sensing the stepper current is a useless idea because
the torque sensing has to work even when there is no control voltage
i.e. the motor is stopped, and in that situation the stepper
controller won't be doing any stepping; it will just be holding the
armature in position.

A pity I can't openly discuss the application.

You need to use a load cell.

Jamie
 
D

Don Y

Just a followup...

A chap watching this discussion dropped this in my mailbox this
morning:

<http://en.nanotec.com/steppermotor_driver_SMCI47-S.html#top>

An excerpt from which appears at the end of the post...

Hi Tim,

On 4/23/2012 3:05 PM, Tim Wescott wrote:
On Mon, 23 Apr 2012 14:33:47 -0700, Don Y wrote:

On 4/23/2012 2:13 PM, Peter wrote:
There is a requirement to measure the torque on the output shaft of
the gearbox. Not accurately; within 20% would do.
It depends on how much sensitivity (gain) you need in the torque
transducer. And, the nature of the load -- i.e., does it vary over
time? What sorts of timescales?

It would be great if one could somehow use the stepper current, but I
don't think it will change much.

At a given speed, current drives torque. But, you may find that there
is too much "slop" in the signal for you to be able to extract the
information you need. Also, you probably want to *control* current
(unless you are willing to let the motor "slip"?) so you have better
control over the angular position of the shaft at all times (?)

Not quite. Speed, current and angle, these three. And very little on
current

On an *instantaneous* basis, yes. However, if the OP is looking at a
reasonably static load, then average current correlates with torque
quite well. This is why I specifically asked what the nature of the
load would be and the timescales over which it is likely to vary. If,
for example, the load is livelier than the shaft (i.e., load changes
more frequently than the shaft angle), then its an entirely different
measurement problem than when the load remains relatively constant as
the shaft rotates.

E.g., we drive stepper motors as if they were "brushless DC motors".
Tell the control loop what constraints you want to place on its
performance (within the range supported by the motor, load and driver)
and the system drives it as if it was a very clever DC motor.

Want to control speed? Then the control loop supplies current for the
instantaneous torque required to drive the load through the required
number of radians per second. Want to control *torque*? Then the
control loop adjusts the speed to "provide" the torque desired.

[of course, subject to acceleration profiles, angular positional
constraints, etc.]

I'm terribly sorry, you seem to be living in a different universe from
the one I inhabit.

In _this_ universe, stepper motors have absolutely no way of sensing
torque -- the current one puts through them affects the maximum torque at
which they will work, and beyond that they cannot hold the load:

Exactly! And, when you notice that it isn't executing the step
as expected, you are now operating at the torque associated
with that current and can no longer increase speed (step rate).
Set the drive current for the torque you desire/need and then
let the controller increase the step rate until the armature
starts to lag the rotating field.
generally what happens is that because with the shaft spinning with
respect to the magnetic field, the average current is zero and the load
just goes wherever it wants to unless or until it happens to get
synchronized with the motor again.

This happens if you run the motor open loop without watching
where the armature is "physically" in relation to the rotating
field. If you operate a stepper like that, you risk the
motor effectively *stalling* if it misses a step and is
unable to accelerate to the current step rate within a
cycle (likely!). So, you either artificially limit the
top rate to something that you *know* the motor can keep
up with regardless of load, or, you provide a means of
detecting when this HAS happened (or, if you are clever,
when it is *about* to happen) so that your drive can
be adjusted to resynchronize with the motor.
So here in this universe, we have to design the motor drive for the
maximum torque that the motor will ever have to generate, and accept the
fact that any excess current will get burnt up as heat. In other words,
the control system has to treat the stepper as a very _stupid_ brushless
DC motor, that cannot feed its armature position back to the controller
to be used in a sensible manner.

No. You can sense the position of the armature with encoders
or, if not completely driving all of the coils in the stepper,
by sensing the back EMF on the "idle" coils to tell when the
motor has effectively "taken" the step (this is how "sensorless"
brushless DC motors operate). Your controller then watches how
the armature is moving so that it doesn't advance to the next
"step" (using that term loosely) until it knows that the motor
can follow it there. Just like a brushless DC motor.

The promised excerpt (emphasis mine):

"ClosedLoop current control (sinusoidal COMMUTATION VIA
THE ENCODER) In contrast to conventional stepper motor
positioning controls where only the motor is actuated or
the position adjusted via the encoder, sinusoidal
commutation CONTROLS THE STATOR MAGNETIC FIELD as in a
servomotor via the rotary encoder. The stepper motor acts
in this operating mode as nothing more than a high pole
SERVOMOTOR, i.e. the classic stepper motor noises and
resonances vanish. As the current is controlled, the motor
can no longer lose any steps up to its maximum torque.
IF THE CONTROLLER SEES THAT THE ROTOR IS FALLING BEHIND
THE STATOR FIELD due to overload, adjustments are made
with OPTIMAL FIELD ANGLE and increased current. In the
opposite case, i.e. if the rotor is running forward due
to the torque, the current is automatically reduced so
that current consumption and heat development in the motor
and controller are very much lower compared to normal
controlled operation."

So, as I said:
Same universe, you just haven't looked in all the right corners!
:>

Unless, of course, you truly *are* operating in a different universe
and the Nanotec firm hasn't managed to set up a sales office in yours,
yet! ;-) (This could be an excellent business opportunity -- the
first, in *your* universe, with CLOSED LOOP control! :> )
 
Top