Connect with us

idle: driving steppers closed-loop?

Discussion in 'Sensors and Actuators' started by BGB, Jul 25, 2015.

Scroll to continue with content
  1. BGB


    Nov 30, 2014
    ok, so this is one of several ideas that I have been thinking of recently.

    so, goal is to drive a stepper closed loop (similar to what can be done with a BLDC motor), preferably without any reliance on external sensors (IOW: preferably no encoders or similar), and ideally without modifying the motors.

    I am wondering if anyone knows of "good" (AKA: cheapest possible) ways to do this?
    or if anyone can clarify whether or not my ideas here could work?

    why?: say, if someone is building something like a humanoid arm, a lot of motors will be needed, and encoders would add considerably to the cost. the goal would also be for it to be able to ideally have comparable speed and strength to a human arm (say, able to lift up to 50 or 75lbs, ...).

    why not servos?: cost mostly. they tend to be either very small/weak or very expensive.

    why not BLDC motors?: typically lower torque, so more reduction would be needed. also cost, as BLDC motors seem to cost a fair bit more than steppers (watts per $ is also a bit worse).

    so, steppers seem to be one of the cheaper options to get well-controlled reasonably high-torque output.
    however, for a useful arm, it would be useful for it to be able to move and respond gracefully to loads.

    so, the idea is preferably, if possible, to find a purely electronic solution.

    ATM, this is more of a hypothetical idea (I don't have money...).

    one possibility seems to be that, during part of the cycle, the bridge could be disabled. at this point, the voltages across the phases could be observed, and a "flip" could be used to detect when to commutate. potentially, both phases could be monitored, with the controller alternately watching each phase.

    however, monitoring one phase would require 7 IO pins per motor, and measuring both phases would require 9 or 10 IO pins.
    pins would be:
    bridges, A B C D;
    enable: EnA, EnB
    feedback: SnA, SnB, SnC, SnD

    probably the sense pins would give a value relative to the mid-point between the positive and negative rails:
    possibly, phase drives base of PNP, with emitter connected to a midpoint reference, and the collector is a pulldown;
    the pulldown drives an NPN connected to a 3.3v pullup, which does the signaling.

    issues: will it work? I really don't know.

    some people seem to argue that you can't get usable EMF feedback of this sort from steppers, but I am not sure (there is the trick of linking steppers together, where turning one turns the other, implying it should be possible to get "some" sort of useable feedback out of them). had at one point used a stepper to drive an H-bridge to run some other steppers with manual controls, so at least this can be done.

    another half-considered thought was if unipolar steppers were used, one possible hack would be to drive it asymmetrically, with one of the phases driven like in a bipolar stepper, and the other phase driven unipolar.

    in this scenario, the other half of the unipolar phase could be useable to sense the movement of the rotor. its voltage should fluctuate as the rotor spins, and with any luck this could be converted to a useable signal.

    this seems a little hacky though, and depends on the use of unipolar steppers, which would limit options (there are a lot less of them listed, where 4-wire steppers are most common, 6 wires less common, and 8 wire rather uncommon).

    another possible hack could be partly rewiring it, noting that each phase has 4 sub-coils (for 8 coils in-total), but the motor should still work with 3 coils per phase. two of the coils could potentially be disconnected and used as sensor coils (the motor spinning inducing voltages on these coils). alternatively, tap wires could be installed (with a 3/1 split), with the tap wires used to help with sensing.

    well, that or try installing a hall-effect sensor (with a piece of steel used to "read" the rotor at a particular spot).

    but, I don't know...

    otherwise: nevermind whether or not all of the electronics and similar could fit within the arm (chances are it would need to be largely moved using pulleys and cables, or be kind of large/bulky).

    probable option would be to use a mix of NEMA-17 and NEMA-23 steppers, probably still with a bit of reduction (via pulleys and spools).

  2. duke37


    Jan 9, 2011
    When I were a lad, model control used potentiometers for feedback. One wire plus two for a common power supply.
    Selsyns can monitor position. Three wires each plus two for a common power supply. Used to synchronise aircraft engines!

    How do printers and scanners do it?
  3. BobK


    Jan 5, 2010
    There is no need for feedback with stepper motors. The number of steps you execute determines it's position. As long as you allow sufficient time for it to respond to each step, it will stay in synchronization.

    In most applications, you will need a limit switch at one end of the range of motion. Then on startup you run it till it hits this limit and from there on you know where it is simply by counting the steps. This is why your printer / scanner runs back and forth a couple of times when you power it on, to determine where everything is positioned.

    Arouse1973 likes this.
  4. BGB


    Nov 30, 2014
    pots can work, but pose the difficulty of getting the analog signal back into a digital one. either need an MCU with analog input pins, or an ADC per motor (not free).

    selsyns seem to cost significantly more than the steppers I was looking at (would be cheaper just to buy more steppers and use these as encoders).

    printers generally sometimes use optical feedback or optical encoders.
    optical encoders are also the most popular option for closed-loop applications.

    3D printers and CNC typically use the steppers open-loop, as do cheaper printers.
  5. BGB


    Nov 30, 2014
    yes, in normal use, they are used open loop. this is good for positioning, but not necessarily a good option for variable-speed / variable-load applications (more typically where a BLDC motor is more popular). however, problem is mostly that BLDC's tend to cost a lot more than steppers of similar power.

    like, a low cost BLDC might peak at around 25 or 30W, but a similar cost stepper might peak at 400W, so, there is an issue. ideally, I would probably want a 3-phase stepper motor, but no one makes such a thing.

    PMDC is less good as accurate speed or position control is a lot harder with PMDC, though PMDC motors are still a lot better behaved under variable load than an open-loop stepper. like, under a heavier load, a PMDC will slow down, whereas an open-loop stepper will stall and make a grinding noise.

    for a humanoid arm, you might want to know the position, but this is less important than being able to be responsive to load.

    so, goals are mostly to be able to detect how quickly the limb is moving, as well as track its current joint position, while running the motors with just enough power to move the load (vs always driving the motors full power).
  6. Minder


    Apr 24, 2015
    I use BLDC in preference to steppers in servo positioning systems for quite a few of the obvious reasons already stated.
    There have been many attempts in the past to achieve near servo PID loop performance from steppers, some fairly successful , but so far I have not been tempted to change over.
    BTW NEMA is not necessarily an indication of torque, as it only indicates the mounting frame size, for e.g. I could have two NEMA 35 motors which indicates the mounting pattern, but not the length of the motor, which is also an affecting factor in torque.
    An equivalent BLDC to stepper motor torque can often be achieved by going up a frame size.
    With the proper controller the resolution of a servo is down to the smallest increment of the encoder.
  7. BGB


    Nov 30, 2014
    yeah. I am mostly looking for the cheapest route here.
    say, spending $30 or so on an optical encoder is no-go (costs more than the motor).

    though, from what I have seen, NEMA-17 motors tend to be around 50-64 oz-in, and NEMA-23 around 250-300 oz-in. bigger is more torque and more power, and generally also more expensive.

    also there are 11 and 14 motors as well, which could be useful for a few things (smaller movements or as encoders). granted, yes, very informal, but going on what I have been seeing.

    not sure where to best buy these sorts of things for cheap, like small steppers for under $5 each would be good, but not seeing anything like this (can't really seem to find where to buy bags of them like other components or small PMDC motors).

    as-is, toggling the bridge on/off and using sense circuits is looking like the cheapest option, but admittedly I don't really actually know if this would work effectively.
  8. Minder


    Apr 24, 2015
    I have picked up nice high quality BLDC on ebay such as Tamagawa, Aerotech, and Applied Motion etc, the controllers I use output analogue ±10vdc and I use Copley or A-M-C drives.
    The motors all come with differential encoder and commutation tracks.
  9. BGB


    Nov 30, 2014
    overall price per unit?... and how many watts?...

    the goal here is minimization of cost per unit, not really that much about motor quality or accuracy.

    ( this in also not for my CNC project, which uses open-loop steppers, and seems to basically be working ok as-is. though I ended up using a 250W power-brick found in a junk bin rather than the ATX PSU, as I couldn't really get the ATX PSU to run reliably, whereas the power-brick seems a bit more reliable... it is basically like an extra-large laptop-style power-brick. otherwise may have needed to get a different PSU better suited to the task. )

    for absolute positioning in an arm, probably potentiometers would be the lowest cost option, and should be sufficiently accurate for the use-case (at least initially, pots like to wear and get "gritty" though, implying limited life or needing to buy more expensive pots). this would imply the use of MSP430's or similar with analog pins.

    if not for wanting more fine control over speed and power, would just opt for PMDC motors, but the issue mostly boils down to effective electronic commutation for steppers. PMDC motors would be cheaper though, can throw some generic 35.8x57mm or similar motors at the problem and spend more about $11 per motor (with about $2 each for a decent-quality pot, vs cheaper $0.25 pots)

    for small things, there are those 29x20x15 motors for about $0.75 each (peak power is around 5W or so).

    but, crap, need more money, grr...
    Last edited: Jul 25, 2015
  10. JWHassler


    Dec 22, 2014
    Printers use encoders. Saw an HP printer that used a 5"-diameter wheel (unenclosed!) being watched by a garden-variety opto-detector
  11. BGB


    Nov 30, 2014
    yeah. I think most decent/big-name printers use optical encoders.

    AFAIK, some don't, partly due to cost, and partly due to there apparently being a patent on using optical encoders with steppers. this is apparently why most of the 3D printers and desktop CNC machines are driving their steppers open-loop.

    but, yeah, there are two things to be addressed: absolute positioning, and adaptive commutation.

    the imagined issue isn't so much of a positioning issue, but more of a commutation issue.
    half wondering also if a person could kludge in a hall-sensor with a piece of steel (such as a modified roofing nail) to "read" the rotor.
  12. Minder


    Apr 24, 2015
    Maybe a patent on certain Firmware/Hardware, but certainly NOT on the concept.
    Most D.Top CNC use steppers open loop because of cost, the attempts for closed loop do not appear yet to come close to the resolution of a servo PID loop, some have addressed it by using fractional stepping but this tends to reduce torque considerably.
  13. BGB


    Nov 30, 2014
    this is just what I had heard. apparently it is a patent on the use of a rotary encoder on a stepper motor for the use of absolute positioning, IIRC owned by Epson.

    had some random ideas for making custom motors partway between a 3-phase BLDC and a stepper motor, but this would not likely be cost-effective (though, if doing so, probably would use a steeper pitch though, say, 12 degrees or so).
Ask a Question
Want to reply to this thread or ask your own question?
You'll need to choose a username for the site, which only take a couple of moments (here). After that, you can post your question and our members will help you out.
Electronics Point Logo
Continue to site
Quote of the day