New Part Day: Silent Stepper Motors

Some of the first popular printers that made it into homes and schools were Apple Imagewriters and other deafeningly slow dot matrix printers. Now there’s a laser printer in every office that’s whisper quiet, fast, and produces high-quality output that can’t be matched with dot matrix technology.

In case you haven’t noticed, 3D printers are very slow, very loud, and everyone is looking forward to the day when high-quality 3D objects can be printed in just a few minutes. We’re not at the point where truly silent stepper motors are possible just yet, but with the Trinamic TMC2100, we’re getting there.

Most of the stepper motors you’ll find in RepRaps and other 3D printers are based on the Allegro A498X series of stepper motor drivers, whether they’re on breakout boards like ‘The Pololu‘ or integrated on the control board like the RAMBO. The Trinamic TMC2100 is logic compatible with the A498X, but not pin compatible. For 99% of people, this isn’t an issue: the drivers usually come soldered to a breakout board.

There are a few features that make the Trinamic an interesting chip. The feature that’s getting the most publicity is a mode called stealthChop. When running a motor at medium or low speeds, the motor will be absolutely silent. Yes, this means stepper motor music will soon be a thing of the past.

However, this stealthChop mode drastically reduces the torque a motor can provide. 3D printers throw around relatively heavy axes fairly fast when printing, and this motor driver is only supposed to be used at low or medium velocities.

The spreadCycle feature of the TMC2100 is what you’ll want to use for 3D printers. This mode uses two ‘decay phases’ on each step of a motor to make a more efficient driver. Motors in 3D printers get hot sometimes, especially if they’re running fast. A more efficient driver reduces heat and hopefully leads to more reliable motor control.

In addition to a few new modes of operation, the TMC2100 has an extremely interesting feature: diagnostics. There are pins specifically dedicated as notification of shorted outputs, high temperatures, and undervolt conditions. This is something that can’t be found with the usual stepper drivers, and it would be great if a feature like this were to ever make its way into a 3D printer controller board. I’m sure I’m not alone in having a collection of fried Pololu drivers, and properly implementing these diagnostic pins in a controller board would have saved those drivers.

These drivers are a little hard to find right now, but Watterott has a few of them already assembled into a Pololu-compatible package. [Thomas Sanladerer] did a great teardown of these drivers, too. You can check out that video below.

39 thoughts on “New Part Day: Silent Stepper Motors

      1. The first three is just easiest since there are solder jumpers to configure them as 1-2-3.
        If you solder on wire to connect the direction and step to other pins you can stack as many
        as you can find free pins for. The SPI is daisy chained so you doesn’t use extra pins

  1. The future of 3d printing, the way forward and the only proper solution to noise from stepper motors is to dump the stepper motors and go to DC servo drive. Slightly more complicated drive electronics, MUCH more accurate, faster, more power, more efficient and no noise

      1. Requires matrix transformations which is difficult to do on cheap 8-bits, lots of floating point math that needs to be crunched fairly quickly on top of the PID controler…

          1. Not to mention that the 32-bits chips can execute many more instructions per second. From what I have seen, the programming environment is a bit different, with the exception of the teensy.

        1. BLDC doesn’t need floating point math, it’s perfectly possible to do everything in fixed point math instead. Besides, most of the code needed for a servo controller is exactly the same for brushed DC motors as it is for BLDC, and commutating a BLDC with hall sensors is nearly trivial. Back-EMF sensing obviously doesn’t work for motion applications, and while there are other sensorless methods, Hall effect position sensors are the standard for industrial servodrives, while resolvers are also possible, but rather uncommon.

          If you can’t do the math in an ancient 8-bit controller, just dump the damn thing, the AVRs and PICs are ridiculously overpriced and underpowered anyway. A modern 16 or 32-bit controller (a DSP or some ARM-based controller) will do a much better job for the same price.

          1. The “proper” way to control a BLDC nowadays is “field oriented control”. Once you have the (small-ish) extra hardware installed it is a lot better than the old fashioned rectangular control method. The drawback is… the floating point math.

            But an STM32F4xx processor for about $12 is good at floating point, about 10x the clock frequency of an arduino, on some things about 10x more efficient in lines-of-code-executed per clock…. So there some room to work with. :-)

  2. I am afraid the new Ultimaker2 & UMO+ PCB will make it more or less impossible to get the new driver ICs installed….. Stupid new boards :(
    Or is there a good way that I did not think of?

    1. It wouldn’t be pretty, but couldn’t you just solder wires to the pads for step/dir and hook that up to a daughter board housing the new drivers?

      Except for the Z-axis the UM2 is pretty darn quiet though.

  3. “Most of the stepper motors you’ll find in RepRaps and other 3D printers are based on the Allegro A498X series of stepper motor drivers” – I think you mean “most of the stepper motor drivers”.

    1. That is pretty impressive. For most 3D printers, the current capacity is more than enough, and you start to reach practical limits of the header pin and receptacle. I think you can even do NEMA23 in 1A if you pick the right motor.

      Trinamic does offer higher current drivers, and more microstep options in some the other drivers too. If you’re going to use a high microstep driver though, you might need to accept a lower speed, at least if you’re using an AVR-based controller, because AVRs are pretty close to their pulse rate limitations. Each doubling of microstep halves the max speed of the machine with a given controller.

      1. AVRs aren’t “pretty close” to their pulse rate limitations. If you look at Marlin source code, you’ll actually find that they simply quadruple the step pulses as they’re sent out. We’re _already_ past out pulse rate limitations, we’re just doing some cool tricks to bypass them.

  4. I’ve seen microstepping drivers, with as many as 64 microsteps. If the noise is a result of the sudden start-stop of each full step, wouldn’t taking full advantage of any microstepping driver through software also reduce noise? Granted this new IC may be more highly integrated and cheaper than previous options, but I wonder if anything new is actually being done – at a glance it just seems they’ve slapped some trademarked names on previously existing techniques.

    1. Just did a comparison of the TI8824 to the TMC2100. Driving the same stepper motor using their stealthChop or spreadCycle at in the range of 1-3 rev/s, the only noise that is easily apparent is from the mechanism driven by the motor. As the rate is increased, the motor noise does increase but only slightly and does not come close to the noise generated by the motor using the TI chip.

  5. Microstepping accomplishes this just fine, in addition to detuning control that gets you off the resonance point of the motor.

    The biggest problem with how the majority of folks control steppers in the maker/hacker community is that they all use fairly high resistance, high-ish voltage steppers…instead of going the route (rather old, this has been common for a long time) of the fairly low voltage, very low resistance steppers that you control with a constant current chopper from a voltage significantly higher than the nameplate voltage of the motor.

    You get torque from amp * turns in your windings, but more turns means more inductance means challenging microstepping at anything but very slow speeds — current is where you want to derive your torque from.

    Now, the Pololu Allegro driver can do this — but whether or people pick the proper motors then tune the current is another story entirely. Doesn’t help when you run things on computer power supplies…but the Allegro chip includes a Mixed Decay mode that it can automatically select based on the current characteristics of the motor to reduce audible noise in the same way.

    1. Some of that makes sense, but these drivers do seem to be adding something more to the mix, particularly spreading the chopping spectrum. I gather from a different demo video that it can make the motors practically inaudible in comparison, depending on setup and usage.

      Microstepping is very standard in 3D printing, most boards are either set to 1/16 or default to that. I’ve not really found any stepper motor that I’d consider runs quietly with the Allegro drivers. Even motors run by a TI driver in 1/32 mode emit an annoying amount noise.

      Another problem is that current is a bit of a problem already, especially with the postage stamp style driver boards that are way too popular.

    1. Trinamic does offer more powerful driver chips. But a postage stamp sized circuit board can only dissipate so much power, and the connectors can only carry so much current as well. For example, if you want 2A of continuous current, it’s well worth exploring external driver options.

    1. I’d argue preventing noise generation in the first place, is probably better than dampening generated vibration. I’d also be concerned about the flex of the dampener affecting the part dimensions.

    1. Sounds like you did not read the entire article:

      Why Microstep Then?

      There are still compelling reasons other than high resolution for microstepping. They include:
      1.Reduced Mechanical Noise.
      2.Gentler Actuation Mechanically
      3.Reduces Resonances Problems

      We have products in the field that run with reduced noise and vibration. Not sure where you are coming from with your comment.

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.