# Stepper Motor Harmonics Question



## TomS (Jun 29, 2018)

A few days ago I changed my X and Y axis pulse/rev from 1000 to 3200.  I calculated and fine tuned the steps/per to where the table moves 6.000" (within .0003") when commanded to move this amount.  My issue is at low feed rates (10 IPM and lower) the motors are setting up a harmonics that sounds like vibrating sheet metal.  It's more pronounced when both axis are moving at the same time, i.e. cutting a radius.  At feed rates higher than 10 IPM the motors run smooth.  I've played with acceleration but it doesn't have any effect.  Surface finish is good so the harmonics are not affecting that.  For info velocity is set at 135 in/min and acceleration is 15 in/sec.  As long as the harmonics aren't doing any harm to my mill I can live with it but it sure is annoying.


----------



## Boswell (Jun 29, 2018)

Do you hear the "Harmonics" when moving only one axis at a time? I know my steppers will "sing" especially when moving in an arc and the spindle is off so I can hear them. I guess what I am trying to say is that you can often hear the steps of a stepper motor. If you are getting good surface finish then this is probably all that it is.


----------



## TomS (Jun 29, 2018)

Boswell said:


> Do you hear the "Harmonics" when moving only one axis at a time? I know my steppers will "sing" especially when moving in an arc and the spindle is off so I can hear them. I guess what I am trying to say is that you can often hear the steps of a stepper motor. If you are getting good surface finish then this is probably all that it is.



Yes, I am hearing the harmonics when moving a single axis.  Do you think the harmonics are a function of the number of pulse per rev?


----------



## Norppu (Jun 30, 2018)

TomS said:


> Yes, I am hearing the harmonics when moving a single axis.  Do you think the harmonics are a function of the number of pulse per rev?


Actually no.
The resonance comes out of the stepper vibrating at a frequency. The frequency in turn is a function of pulses per second - not pulses per rev.
However, these two may have a relationship depending on how the driver software was designed.
For example, in a VFD it is possible to skip certain frequencies in order to avoid resonances. I assume that the software driving Your steppers has a similar feature - at least is should.
If this vibration is severe, it can have a noticeable impact on surface finish.


----------



## spumco (Jun 30, 2018)

The harmonics are a function of your particular motors, drives, and the RPM.  Tormach's whitepaper about their series 3 upgrades describes the harmonics - not in great detail, but very understandable.

Take this with a grain of salt, as I am no expert...  As I understand it, stepper motors are noisy for a number of reasons.  One of these is the cogging effect when one of the poles lines up with the coil.  The pole snaps in to position, overshoots slightly, bounces back past, and then settles after some number of decreasing amplitude oscillations. At certain speeds this causes detectible noise from a harmonic and Tormach indicated about 10-15IPM is typical given a 5mm (or 0.200") pitch direct drive ballscrew.  Think "thump thump thump" and then increase the frequency until the sheet metal vibrates.

On my mill its about 12IPM and the motors are groaning.  12IPM is 60RPM with my 5mm screw  No lost steps and no surface finish issues at my level of precision and measuring ability.  But they sound horrible.  Slower speeds and they are noisy but not annoying; much faster and they just whine a bit.

Here's what I've read or tried myself that can reduce it (or eliminate it):

1. Increasing microsteps.  My drives (cheap, but not garbage) are set at 10x microsteps with 200 pole (step) motors.  This smooths things out considerably from 5x, but there's still a (lesser) groan around 10-12IPM.

I'm not sure how this can be reconciled with Norppu's statement above because, according to that theory, if you change the pulse p/sec (switch from 1x to 5x to 10x) then the resonant frequency should result in a harmonic at different RPM depending on the microstep setting.  Assuming I understand his statement, of course.

I've not found that to be the case in my limited experience - I find that the noise happens at about the same RPM regardless of the pulse frequency; only the _amplitude_ changes with pulse frequency changes.

2.  Change drives to a modern, digital version.  I'm no electronics guru, but many of the newer name-brand drives claim to reduce noise through various magical sprinkles.  I won't begin to speculate what they're doing, but the more expensive ones are probably using some back EMF as a feedback source to constantly adjust the motors to reduce harmonics.  Do a search for Trinamics and see what some clever Germans have done with stepper drives.

3. Switch to 3-phase motors & drives.  These have 300 poles (steps) and three coils, and I've heard them run and they're much, much less likely to 'groan' - in addition to having a significantly higher top speed before all torque disappears.  What I heard may be a combination of the 3-phase motors and high-quality drives and not just the motors themselves, but I'll leave that debate to others.

Note - Tormach changed all three axis motors to 3-phase Leadshine motors & drives when they developed their Series 3 upgrades.

4. If you really want to dive in to black magic, Galil Motion Controls has an interesting video (long) on youtube where they discuss driving a stepper motor a different way.  No 'pulses' are sent to each coil; instead they use an encoder _and _back EMF to continually adjust the energy sent to both coils at the same time.  At that point it's not really a simple, cheap stepper motor.  They've essentially turned it in to a 2 (or 3) phase high pole-count AC (DC?) servo with potentially infinite positioning (depending on encoder resolution).  Very cool, and way over my head.  I'm probably butchering the theory, but watch the video and go to Galil's web site for some engineering articles.  Those guys are _seriously_ clever.

Anyway, if you want to fiddle around I'd suggest changing to 10x microstepping if your drive supports it.  You'll also need to make sure your controller and BOB can support the increased pulse frequency, as you might run in to problems during rapid moves if the commanded motor RPM bounces off the optocoupler rev limiter.  I've got no clue about your hardware, but if you were running at 1000 pulses per rev, I'll hazard a guess that was at 5x microsteps.  And now you're at 16x - have you tried moving at high speeds yet?

Articles from Gecko Drive indicate there's really no benefit beyond 10x - either with smoothing or positional accuracy since it's impossible for the drive to hold a motor between two poles with that precision (it wants to oscillate).  Even with a fine resolution encoder the motor will possible be dithering - or worse you'll command a number of steps and it won't/can't move that tiny amount - then bang, it moves all xxx number of little microsteps all at once.

I'm hoping there are some folks who can correct any gross errors I've put down here.

Good luck,
Ralph


----------



## coherent (Jun 30, 2018)

Spumpco pretty much hit on everything. Also, I have had stepper drivers (like the gecko G250 in their G540) that allow you to "fine tune" the drivers using a trim pot.  In the instructions it refers to  " using the trimpot to adjust/tune each motor/driver when it is running at very low rpm (2 rpm?)  and will have an audible “sweet spot” when it is in proper position. This position will change with each motor"

Depending on your driver type, you may have a way of adjusting them for smoothest operation.


----------



## TomS (Jun 30, 2018)

Thanks for everyone's input and explaining how the motors and drivers work together.  I certainly can play with microstepping and see how that affects the harmonics.  At this point new drivers and motors aren't in the cards so I may have to live with what I've got and wear ear plugs.


----------



## spumco (Jun 30, 2018)

Quick update

I watched that Galil video again, and they call the different drive process '2 pole brushless drive' when they're driving the stepper with the encoder and PID loop, along with controlling torque - not just commanding discrete positions.

There are some wicked smart engineers out there...


----------



## Pro70z28 (Jun 30, 2018)

I had a harmonic issue with my CNC router. I just changed the travel speed a little and it got a little better. Recently the old control board died. Old board was obsolete, so I replaced with the latest version. Harmonics problem went away. The steppers overall run much quieter than they ever did with the old control board.


----------



## RJSakowski (Jun 30, 2018)

There are a number of applications on line that will convert MIDI files to G code so you can play music with your CNC.


----------



## markba633csi (Jun 30, 2018)

Combine that with a "flame loudspeaker" to entertain guests on the patio


----------



## TomS (Jun 30, 2018)

Pro70z28 said:


> I had a harmonic issue with my CNC router. I just changed the travel speed a little and it got a little better. Recently the old control board died. Old board was obsolete, so I replaced with the latest version. Harmonics problem went away. The steppers overall run much quieter than they ever did with the old control board.



My control hardware is not top of the line but very good; PMDX-126 BoB, ESS, and PMDX-107 spindle control board.  The motors, drivers and power supplies are of Asian origin so I can't speak to their quality although they have been very reliable for the past 4 years.  The feedrate absolutely has an effect on harmonics.  Anything over 15 IPM is very quiet.  All you hear is the hum of the motors.


----------



## Paul Thompson (Aug 1, 2018)

If you can afford it, reducing the current reduces the sharpness of the pulse and that can help some.


----------



## TomS (Aug 1, 2018)

Paul Thompson said:


> If you can afford it, reducing the current reduces the sharpness of the pulse and that can help some.



Thanks.  I'll give that a try.


----------

