Adventures with silent stepper drivers (and 4th axis and other Nomad electronics fun)

I did some more research and found these documents from Trinamic:

They claim that the main benefits of the silent tech are had at low velocity but from the second document, it doesn’t look like the drop in torque at high velocities is all that much.

I think I’m just going to have to buy a controller and try hooking it up to the Nomad’s steppers to see what happens.

I noticed the X-axis has 17HS3401A-339IN, “JUGETEK” and “194320” written on it. So it’s made by this company. I can’t find the particular motor there however.

Dropping a little tq probably wont hurt you as the nomad grbl defaults are very conservative.

Shoot, even pushing a 1/4 through steel the stock steppers had no issues. I believe they are 2a around 85oz Nema 17s.

Lost most of what I wrote here before the server died but TL;DR:

  • The stepper drivers on my Carbide Motion board are Allegro A5977 rather than TI DRV8818s.
  • I successfully hooked up Trinamic TMC2209 stepper drivers.
  • Hooking up a new controller to the Nomad’s steppers is fairly straightforward. I was able to hook up both an Arduino Uno running GRBL and an Arduino Due running g2core without any problems.

The Trinamic stepper drivers make a huge difference to the noise levels. At low speeds the steppers are completely silent. At higher speeds they’re very quiet and much less obnoxious than they are when driven by the stock drivers.

So the noise issues I had with the steppers were absolutely the fault of the TI DRV8818 stepper drivers.

If anyone is interested I can try to record a short clip comparing the noise produced by each set of drivers.

The big open question is how the steppers run while cutting. I haven’t tried that yet.

6 Likes

You’ve been on quiet the quest, Lucas :wink:.

I don’t have a Nomad, but I’d still be interested in seeing some footage that compares the two; better yet, if you have footage with a way to measure sound levels.

2 Likes

Ask and you shall receive.

I’m documenting this to be as reproducible as I can so that anyone who has ideas/critique can suggest improvements.

If you’re just interested in videos/pictures, skip to the bottom.

Equipment

  • Nomad, with the back removed for easy access to the control box
    • Note: this means the Nomad was louder than it would be in normal operation, do not take the noise readings to be a good indication of the sound you’ll hear in normal operation
    • Another note: My Nomad has sound-insulating rubber on the bottom to stop vibrations into the surface it rests on, this may reduce noise relative to a stock Nomad
  • Arduino Uno, hooked up to Watterott’s TMC2209 SilentStepStick with a simple breadboard and some hookup wire.
  • For the stock Nomad controller, the original power supply provided by Carbide 3D
  • For the Arduino + TMC2209s, a MeanWell RSP-320-24 power supply.
    • Note: the RSP-320-24 has a fan built in, so you’ll hear wooshing in the background of the TMC2209 videos, resulting in a higher baseline noise level.
  • Pixel 4 XL for recording video
  • iPhone 11 with the Decibel X app for measuring noise levels

Setup

I set up the Nomad with:

  • Stock drivers
  • TMC2209 drivers in “StealthChop” mode (the one that’s meant to be silent)
  • TMC2209 drivers in “SpreadCycle” mode (the “normal” mode)

Method

  • I first homed the machine with the stock controller, then powered it down
  • For each run:
    • Turn on the machine but don’t home it, so that the following GCODE can run verbatim on both controllers (I didn’t connect the Arduino to the limit switches)
      G1 F100 Y-2.5 X-2.5
      G1 F200 Y-7.5 X-7.5
      G1 F400 Y-17.5 X-17.5
      G1 F800 Y-37.5 X-37.5
      G1 F1600 Y-77.5 X-77.5
      G1 F2600 Y-157.5 X-157.5
      G1 F2600 Y0 X0
      
      This GCODE was written to move the machine at a variety of feed rates, over a distance that results in the same amount of time for each line.
    • Switch on the iPhone’s noise level app
    • Turn on video
    • Run GCODE

Results

Summary

Setup Decibel X report Video
Stock Link Link
TMC2209 StealthChop Link Link
TMC2209 SpreadCycle Link Link

Graphs

Stock

stock

StealthChop

stealthchop

SpreadCycle

spreadcycle

Conclusion

The stock drivers are noisy as heck. If you look at the report, you’ll see that it peaks at 78dB (as loud as a truck) and if you look at the graph, the average noise level is around 70dB (as loud as a car) at all speeds.

At the lower feed rates, StealthChop and SpreadCycle are both essentially silent. StealthChop doesn’t even register above the ~44dB background noise until ~400 mm/min and it does so just barely. For the most part, StealthChop is around 60dB (conversation) but it does peak at around 70dB (car) when moving at 2600 mm/min.

SpreadCycle though does very well at higher speeds, peaking at a mere 60dB (conversation), a full 18dB quieter than the stock drivers.

If you combine StealthChop and SpreadCycle (which Trinamic recommends, automatically switching is built into most of their drivers), your steppers should be essentially silent below 400 mm/min and peak at 60dB when running at higher speeds.

Finally, it should be repeated that I’m running my machine with the back removed, so all the sounds go straight into the air. When running this normally, it’ll be even quieter.

TL;DR: The Trinamic drivers turn a machine that makes as much noise as a truck into a machine that makes as much noise as a conversation.

8 Likes

Minor update: I redid the tests with the iPhone on a tripod instead of the ground leaning against the machine. I also tried a Gecko driver. This time I only tested the Y-axis because I was lazy, so these results are not comparable to the earlier results.

The video now also has a decibel overlay. This app is handy like that.

Test Video PDF noise report Summary
Nomad Stock Video PDF Terrible performance as always, spends most of its time around 60dB
Nomad TMC2209 StealthChop Video PDF So quiet you might not notice it’s running, barely breaks 50dB
Nomad TMC2209 SpreadCycle Video PDF A little louder than StealthChop at low speeds, a little quieter at high speeds
Gecko GR214V Video PDF A bit better than stock, not as good as Trinamic

I found it really interesting that the expensive Gecko driver ($150 GR214V) that seems to be all the rage in the big-boy world performed so poorly compared to the $20 Trinamic drivers. I suppose the Gecko’s features are targeted towards larger machines.

One thing I definitely noticed about the Gecko though was that despite being not so much quieter than the stock Nomad drivers, the quality of the noise was much less grating on the ears. The Nomad’s drivers are like nails on a chalkboard to me while this felt more like normal motor sounds.

I’m curious, does anyone have a lot of experience with Gecko drivers? Is there a reason why they might be preferred over Trinamic drivers on a Nomad?

Also @robgrz and @RichCournoyer, you both commented on the original post that mentioned Trinamic, do you have any thoughts about these results? Given the Nomad is a desktop CNC where noise is a concern, these quiet drivers seem like a pretty great benefit.

Different G-Code this time too:

G1 Y-1 F100
G1 Y1 F100
G1 Y0 F100
G4 P1.0

G1 Y-2 F200
G1 Y2 F200
G1 Y0 F200
G4 P1.0

G1 Y-4 F400
G1 Y4 F400
G1 Y0 F400
G4 P1.0

G1 Y-8 F800
G1 Y8 F800
G1 Y0 F800
G4 P1.0

G1 Y-16 F1600
G1 Y16 F1600
G1 Y0 F1600
G4 P1.0

G1 Y26 F2600
G1 Y-26 F2600
G1 Y0 F2600
G4 P1.0
3 Likes

Love the thoroughness here. Since this discussion started I have been paying more attention to the various noises and in fact have been capturing noise samples as part of experimenting with TiCN coating end mills on aluminum (data to be processed) and was somewhat surprised the amount the steppers contribute to the overall noise profile. Note I don’t have the same low noise requirements @Moded1952 but fascinated…

I guess the next step is testing the difference in torque delivery between the different drivers?

Me? Nooooo. I was just a tester for USB disconnects…

2 Likes

Only if you seriously upgraded the steppers. Those drivers take up to 80v and can feed 7A. They’re not worried about noise.

Not a bad idea. Any ideas about how to test the torque?

I have a luggage scale which uses a hook, maybe I could attach it horizontally and see how far the bed can pull it before stalling?

I think there’s a little more to them than high power, though I’m not sure what. I noticed that the noise out of the Gecko driver was more consistent and sterile than the Nomad drivers, which have a lot of “character” (like a creaky house has “character”).

I also have Gecko’s much cheaper G251X, maybe I should test it too…

Problem with anti backlash lead screw nuts is that there is backlash once the spring is overcome. Ball screws on the other hand…

Couple more updates. First, the less interesting one: I tested a Leadshine EM542S driver: Video, PDF

I’d say it’s a tad better than the Gecko driver but not nearly as good as the Trinamic. For some reason it gets crazy loud at 800mm/min, like stock driver loud. It performs quite well at low speeds though.

The more interesting one: I made a kind of “breakout board” for the Nomad. It has two purposes:

  1. Act as a molex -> screw terminal bridge for the stepper motors, so that they can be easily connected to arbitrary drivers (like Leadshine or Gecko). Same for the McGillicutty.
  2. Act as a carrier board for Polulu-style stepper drivers, in my case the Trinamic TMC2209 drivers.

Here’s a picture:

My next step is to measure torque but I’m almost certain at this point that the Trinamic drivers will end up the overall winners due to their crazy quietness. The only reason I can see myself not using them is if they don’t actually produce enough force that the endmill can cut.

Really not sure how to measure the torque though. A luggage scale is the best idea I have right now.

4 Likes

That is a serious like. Swappable Polulu driver boards. What are you using for a controller?

Edit - never mind - I see you are using Arduino Uno GRBL/ Arduino Due g2core TinyG

I imagine the quick and dirty would be something like a luggage scale and a dial indicator to see at what point you start losing steps.

No, I’m not using those, I’ve just tested them. I’m using Eding-CNC. I had a long look at all the options available and it stood out as the best for me.

Other options I considered:

  • GRBL: Too primitive. Doesn’t seem likely to become less primitive, as it’s limited by the ATmega it runs on.
  • TinyG: Seems to be mostly abandoned in favour of g2core.
  • g2core: Seems like beta-quality software at the moment. Maybe worth another look when they finally release the board they’ve been working on for the past few years.
  • Mach3/4: Windows-only, expensive, uses the PC as the controller?
  • PlanetCNC: Expensive.
  • LinuxCNC: Didn’t look bad but looks like a whole lot more screwing around to get it to work. Uses the PC as a controller.

Eding-CNC is very affordable (219€ for a CPUA3 + software license) and has a ton of features I consider fairly high-end (particularly its macros). It’s also very well documented.

Specifically, I went with the CNC720, which is overkill but I bought it with an eventual upgrade to a larger machine or addition of a 4th axis in mind.

EDIT: I missed stock in the list. I don’t like Carbide Motion because of its lack of documentation and hackability. It’s not treated as a CNC controller in its own right but as a closed, integrated component of a Nomad or Shapeoko. In particular, as you might have guessed from this thread, I want to replace the stepper drivers.

5 Likes

For anyone who’s interested, the new controller is now 100% up and running. Everything works. Stepper driver, spindles, homing switches, the whole shebang.

One thing I love about this new controller is that it works over ethernet. No need to fiddle with short USB cables anymore.

I decided to forgo the torque tests. Some of the drivers I ordered had short return policies so I didn’t have enough time. Plus, I’m fairly confident that unlike noise, torque will remain pretty consistent independent of the drivers used, so long as they output similar voltage/current.

I do need to tune the current though. I think 1.8A RMS/2.4A peak is too much.

Anyhow, it works. I think the next step is PCB V2. I think I want a PCB with some kind of microcontroller onboard that I can connect to the Polulu configuration pins for easy configuration (e.g. changing microsteps, config over SPI/UART for Trinamic drivers).

I have two ideas in mind on that note:

  • I could basically add an Arduino to the board and in that case I’d basically have a new GRBL board. This makes SPI/UART more difficult though because the ATmega328P doesn’t have reconfigurable pins like the ESP32. Software UART/SPI would work but I prefer to use hardware.
  • I could add an Espressif IC chip like an ESP8266 or ESP32 and make the board configurable over WiFi. In this case I could also add some handy sensors to remotely monitor various things (e.g. driver temperature, maybe voltage or curent too).

I’m curious, is anyone else interested in doing this or is everyone basically content with the Carbide Motion controller? I think my obsession with quietness could be a bit odd.

6 Likes

Excellent work.

One question, did you use the model of Trinamic with the dynamic torque and missed step detection from motor back-EMF? If so, have you tried using the missed step detection?

4 Likes

I believe those features are what Trinamic calls CoolStep and StallGuard respectively. I haven’t tried them yet because they require some configuration that I haven’t got around to yet.

The drivers that make it into my machine will certainly have both features fully configured. That’s one of the reasons I chose them.

My controller actually has a drive alarm input, so my hope is to connect the Trinamic drivers up in such a way that if a step is lost, it can be signalled to the controller which can immediately pause the job for manual intervention.

5 Likes

Minor update: I think I should change my name to “slayer of CNC controllers” or something along those lines.

I managed to design and fabricate a functional carrier board for the CNC 720:

Unfortunately however, while I was debugging, I was unplugging and re-plugging the stepper drivers quite a few times with low visibility (this was all inside the small controller enclosure of the Nomad).

I ended up connecting the stepper driver offset by a pin, like this:

Unfortunately, on a Polulu-style driver, that means that the +24V and +5V pins from the board were connected to the two GND pins of the driver. Those GND pins are bridged on the stepper driver board, which means that I ended up connecting +24V and +5V.

All 3 stepper drivers exploded in a puff of smoke and unfortunately, though the controller didn’t explode and doesn’t show many signs of physical damage, it became completely unresponsive and no longer powers on.

I’m hoping I can get it repaired, otherwise this will have been a very expensive lesson in making sure I connect things properly.

Out of curiosity, does anyone know of 2.54mm pitch connectors that only connect in the correct orientation?

3 Likes

Ouch :frowning:
Is there one pin that is unused on those modules ? If so you could cut it flush on the module side, and put a drop of glue in the corresponding spot on the female connector, so that the module can only be plugged in the right direction and with no shift.
Poor man’s poka yoke.

8 Likes