1. This forum section is a read-only archive which contains old newsgroup posts. If you wish to post a query, please do so in one of our main forum sections (here). This way you will get a faster, better response from the members on Motherboard Point.

An way to sense the torque of a stepping motor?

Discussion in 'Embedded' started by Peter, Apr 23, 2012.

  1. Peter

    Peter Guest

    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?
     
    Peter, Apr 23, 2012
    #1
    1. Advertising

  2. Peter

    Don Y Guest

    Hi Peter,

    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


    This is how I've done it in the past.

    > 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.


    The "gauge" of the "leaf" can be whatever you want -- subject to
    the magnitudes of the strain you are measuring. Get creative:
    look at existing aspects of the mechanism that you can exploit
    to give you this information. But, you have to understand how the
    motor is likely to "twist" in a particular mounting configuration.
    I.e., you don't want to lose "signal" because the motor is
    squirming in a way that you hadn't considered in your instrumentation.

    E.g., the mounting bolts for the motor can be instrumented.

    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?

    In tablet presses, the strain in a ~1" diameter being "stretched"
    as the granulation (powder from which tablets are made) is
    compressed is measured to determine the force (many tons!)
    being exerted on the tablet. The deformations are tiny yet
    easily measurable.

    (of course, you are looking for forces in a different orientation
    but the issues are the same)

    > 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 (?)

    > 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?
     
    Don Y, Apr 23, 2012
    #2
    1. Advertising

  3. Peter

    Tim Wescott Guest

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

    > Hi Peter,
    >
    > 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

    >
    > This is how I've done it in the past.
    >
    >> 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.

    >
    > The "gauge" of the "leaf" can be whatever you want -- subject to the
    > magnitudes of the strain you are measuring. Get creative: look at
    > existing aspects of the mechanism that you can exploit to give you this
    > information. But, you have to understand how the motor is likely to
    > "twist" in a particular mounting configuration. I.e., you don't want to
    > lose "signal" because the motor is squirming in a way that you hadn't
    > considered in your instrumentation.
    >
    > E.g., the mounting bolts for the motor can be instrumented.
    >
    > 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?
    >
    > In tablet presses, the strain in a ~1" diameter being "stretched" as the
    > granulation (powder from which tablets are made) is compressed is
    > measured to determine the force (many tons!) being exerted on the
    > tablet. The deformations are tiny yet easily measurable.
    >
    > (of course, you are looking for forces in a different orientation but
    > the issues are the same)
    >
    >> 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

    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.

    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
    right DC motor, torque is quite proportional to current. But even then I
    wouldn't just flat out tell you it would have to be better -- only that
    it'd be worthwhile to think about. I suspect that with what you're
    already making, your best bet is to stick with the stepper, and
    (perforce) use some sort of torque measurement hardware.

    --
    My liberal friends think I'm a conservative kook.
    My conservative friends think I'm a liberal kook.
    Why am I not happy that they have found common ground?

    Tim Wescott, Communications, Control, Circuits & Software
    http://www.wescottdesign.com
     
    Tim Wescott, Apr 23, 2012
    #3
  4. Peter

    Don Y Guest

    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:
    >>> 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.]

    > 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)

    > right DC motor, torque is quite proportional to current. But even then I
    > wouldn't just flat out tell you it would have to be better -- only that
    > it'd be worthwhile to think about. I suspect that with what you're
    > already making, your best bet is to stick with the stepper, and
    > (perforce) use some sort of torque measurement hardware.
     
    Don Y, Apr 24, 2012
    #4
  5. Peter

    Tim Wescott Guest

    On Mon, 23 Apr 2012 16:37:27 -0700, Don Y wrote:

    > 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:
    >>>> 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:
    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.

    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.

    >> 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.


    Which is generally well within what you could do with a similar size and
    weight DC brushless motor, or even a brushed DC motor.

    >> 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.


    Definitely a different universe.

    > OTOH, if you ever want to "stop
    > on a dime", change directions in a controlled manner, etc. the DC motor
    > is a big headache.


    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?

    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
    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.

    > (this is why the "stepper as brushless DC motor"
    > approach is so appealing -- in its operating range, it gives you
    > characteristics of both, simultaneously)


    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.

    --
    My liberal friends think I'm a conservative kook.
    My conservative friends think I'm a liberal kook.
    Why am I not happy that they have found common ground?

    Tim Wescott, Communications, Control, Circuits & Software
    http://www.wescottdesign.com
     
    Tim Wescott, Apr 24, 2012
    #5
  6. Peter

    Don Y Guest

    Hi Tim,

    On 4/23/2012 6:40 PM, Tim Wescott wrote:
    > On Mon, 23 Apr 2012 16:37:27 -0700, Don Y wrote:
    >
    >> 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:
    >>>>> 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.

    >>> 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.

    >
    > Which is generally well within what you could do with a similar size and
    > weight DC brushless motor, or even a brushed DC motor.
    >
    >>> 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.

    >
    > Definitely a different universe.
    >
    >> OTOH, if you ever want to "stop
    >> on a dime", change directions in a controlled manner, etc. the DC motor
    >> is a big headache.

    >
    > 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.)

    >> (this is why the "stepper as brushless DC motor"
    >> approach is so appealing -- in its operating range, it gives you
    >> characteristics of both, simultaneously)

    >
    > 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!
    :>
     
    Don Y, Apr 24, 2012
    #6
  7. Peter

    Robert Baer Guest

    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 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?

    Two possible ways i can think of: monitor current to derive power to
    motor; know resistance for static IR loss and steady state power drive.
    You will need to model the motor - back EMF etc and do dynamic
    calculations.
    or..
    Use a laser to create holographic stress pattern on the shaft - the
    greater the torque the greater the stress.
     
    Robert Baer, Apr 24, 2012
    #7
  8. On Mon, 23 Apr 2012 22:13:52 +0100, Peter <>
    wrote:
    >
    >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.


    I would search to see what strain-gauge torque sensors are out there
    and look at the designs.

    Another possibility might be to use a bearing or pivot combined with
    something like this:

    http://www.futek.com/product.aspx?stock=FSH00934

    so that the torque is converted to a linear force on a load-cell with
    a stud.

    Strain gauges on leaf springs seems like a bad design.

    The material used for a load cell has to deform somewhat, but usually
    the thing is designed to still be quite rigid (i.e. the deformation
    won't be visually perceptible). I don't recall ever using a leaf
    spring with strain gauges.

    Also, some of the designs you find out there may give you some ideas.
    There is some model of helicopter I saw once that had a rotor torque
    gauge in the cockpit (one of many gauges, as you might guess with an
    aircraft). I asked the pilot how in the hell they can sense torque on
    the main shaft (because it is structural and rotates). He indicated
    that there is some sort of a gauge in the shaft that is AC-coupled, so
    you can sense torque without having to have a direct connection. I
    thought it was pretty clever.

    You may find something interesting and useful by examining existing
    designs.

    DTA
     
    David T. Ashley, Apr 24, 2012
    #8
  9. Peter wrote:

    >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.




    --
    Roberto Waltman

    [ Please reply to the group,
    return address is invalid ]
     
    Roberto Waltman, Apr 24, 2012
    #9
  10. Peter

    Peter Guest

    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.
     
    Peter, Apr 24, 2012
    #10
  11. Peter

    Don Y Guest

    Hi Peter,

    On 4/24/2012 1:23 PM, Peter wrote:
    > 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!)
     
    Don Y, Apr 24, 2012
    #11
  12. Peter

    Robert Macy Guest

    On Apr 24, 1:23 pm, Peter <> wrote:
    > 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.
    >
    >...snip,,,


    I didn't catch until now that you are using a chip. Presumably
    something like Rifa? Nice chip with H drive output that let's you
    forget about excess drive current, because it automatically goes into
    switch mode output as the stepper seats and you don't know it.?

    Those chips are handy. You can use high voltage that gives high
    initial torque, and then count on that switching function to limit the
    drive current. DON'T DO THAT!!!!

    I naively did that on a first design and got caught with the reality
    that all the damping goes away! Once you no longer are driving the
    stepper with a voltage source but what has effectively become a
    current source, you now have ringing on that last step you cannot
    believe! The ringing was so bad that sometimes combined with load the
    stepper actually jumped a cog. Took something like more than ten
    cycles of that ringing oscillation to get anywhere near final
    position, too.

    Instead you could match the voltage drive to the chip to the expected
    time constant of your system. That way the voltage to the drive, and
    therefore the motor as it seats, drops for each step.THEN you
    getcurrent limit *and* damping.

    Probably preaching to the choir, but still, a heads up.
     
    Robert Macy, Apr 24, 2012
    #12
  13. Peter

    Guest

    On 24 Apr., 22:54, Don Y <> wrote:
    > Hi Peter,
    >
    > On 4/24/2012 1:23 PM, Peter wrote:
    >
    > > 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)
    >


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

    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


    > > 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!


    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

    >
    > > 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)


    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

    >
    > > 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!)




    -Lasse
     
    , Apr 24, 2012
    #13
  14. Peter

    Don Y Guest

    Hi Lasse,

    On 4/24/2012 3:39 PM, wrote:
    > On 24 Apr., 22:54, Don Y<> wrote:
    >
    >>> 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)

    >
    > 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)

    >>> 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!

    >
    > 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. (?)

    >>> 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)

    >
    > 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).
     
    Don Y, Apr 25, 2012
    #14
  15. Peter

    Jamie Guest

    Peter wrote:

    > 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
     
    Jamie, Apr 25, 2012
    #15
  16. Peter

    Don Y Guest

    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...

    On 4/23/2012 8:50 PM, Don Y wrote:
    > Hi Tim,
    >
    > On 4/23/2012 6:40 PM, Tim Wescott wrote:
    >> On Mon, 23 Apr 2012 16:37:27 -0700, Don Y wrote:
    >>
    >>> 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! :> )
     
    Don Y, Apr 25, 2012
    #16
  17. Peter

    cbarn24050 Guest

    On Tuesday, April 24, 2012 4:50:01 AM UTC+1, Don Y wrote:
    > Hi Tim,
    >
    > On 4/23/2012 6:40 PM, Tim Wescott wrote:
    > > On Mon, 23 Apr 2012 16:37:27 -0700, Don Y wrote:
    > >
    > >> 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:
    > >>>>> 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.
    >
    > >>> 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.

    > >
    > > Which is generally well within what you could do with a similar size and
    > > weight DC brushless motor, or even a brushed DC motor.
    > >
    > >>> 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.

    > >
    > > Definitely a different universe.
    > >
    > >> OTOH, if you ever want to "stop
    > >> on a dime", change directions in a controlled manner, etc. the DC motor
    > >> is a big headache.

    > >
    > > 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.)
    >
    > >> (this is why the "stepper as brushless DC motor"
    > >> approach is so appealing -- in its operating range, it gives you
    > >> characteristics of both, simultaneously)

    > >
    > > 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!
    > :>


    Sorry Don but Tim is right!! you are in a different universe. It is you that does not understand how a brushless dc motor works and why they are different to stepper motors and why they are the same as brushed DC motors. A little study is required.
     
    cbarn24050, May 26, 2012
    #17
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Ted Wood
    Replies:
    3
    Views:
    280
    Bryan Hackney
    Dec 28, 2003
  2. bg
    Replies:
    2
    Views:
    367
    john jardine
    Apr 23, 2005
  3. bg
    Replies:
    0
    Views:
    307
  4. Replies:
    1
    Views:
    333
    Bryan Hackney
    Jun 6, 2005
  5. stepper motor torque

    , Aug 19, 2006, in forum: Embedded
    Replies:
    7
    Views:
    603
Loading...

Share This Page