Motion Control Resources
- This tech paper is filed under:
How Fix Servo Motor Noise
by Performance Motion Devices
Performance Motion Devices Posted 03/20/2020
Everyone working in motion control has a war story; be it the machine that stopped working mysteriously or the motor that wouldn't stop vibrating. This deep dive around servo motor noise is part of a series that focuses on motion control problems you may run into and provides some ammunition to fight the good battle and get your machine design and development project back on track!
My servo motor is making a lot of noise
A noisy or chattering servo axis is one of the most common motion problems that engineers encounter when building their DC Brush or Brushless DC motor-based machine. This is not only annoying but can cause increased wear and tear on the motor and downstream mechanisms. The problem can occur both when the servo motor is holding position, and when it is moving - although the sound characteristic may be different for each of these conditions.
As it turns out, this common motion problem can come from a number of areas, and therefore can have a number of solutions, so let’s get started!
Tune-up your PID
The behavior of systems that use a servo loop to control the motor position is dominated by the settings of the tuning parameters. Most engineers use the ever-popular PID (proportional, integral, derivative) loop to control their system, and much has been written about how to tune PIDs, including some articles by Performance Motion Devices (PMD). The Figure below shows the control flow for a typical position PID loop.
Figure 1: PID position loop control flow
Increasingly, engineers use auto-tuning software to determine their PID parameters. You can use an auto-tuner either to generate final parameters or better yet to generate a set of starting values which you then further tweak and optimize.
A full treatise on servo loop tuning is beyond the scope of this article, but there are two quick tuning characteristics you can confirm to make sure your system is at least in the ballpark. The first is to check that your axis is critically damped, rather than overdamped or underdamped.
While there are precise mathematical definitions for these terms, the main thing is to familiarize yourself with the general form of the response that you want (critically damped), and adjust your settings if what you see is clearly one of the forms you don't want (underdamped or overdamped).
Figure 2: Underdamped, critically damped, and overdamped response curves
Note that the curves above are generated using a step function trajectory profile. The axis is asked to instantaneously jump forward or backward a small distance, and the resultant response of the actual motor position is then plotted. Nearly all motion system vendors provide a step function profiling capability as part of their tuning control software.
If you have the ability to generate Bode plots on your system, then you should also focus on two other measures of control system stability; phase margin and gain margin. Most systems will want to have a phase margin of 40 deg or higher, and a gain margin of 10 dB or higher. The more borderline the control loop stability is, the more the system will tend to oscillate and generate noise as it moves or even as it just holds position. So a system that has good stability characteristics is a strong foundation for a motion system that runs quietly.
Lower your derivative term
If using a PID controller, a high value for the derivative term tends to make the motor chatter and, in the extreme case, sound like a bag of ball bearings. Try lowering your derivative term in combination with your proportional gain to reduce noise.
If the noise goes away but the performance is no longer where you want it to be, perhaps because the system has now become underdamped, consider operating with two sets of servo parameters, an active set and a holding set. Many applications are fine with a bit of noise during motion but need to be quiet while holding position. Using a less aggressive, quieter holding set may be a good solution since the servo usually doesn't have to do much work to hold the axis in the same position.
Try a different sampling time
Another servo-related area to look at is the loop speed. Digital servo systems tend to run at very high servo loop rates, much of which is not needed in the average application. Higher servo loop rates can excite more resonances in the system's frequency response curve.
So, investigate whether changing the servo loop time, or the derivative sampling time if it can be adjusted, helps with audible noise. When lowering the servo loop rate, make sure you re-tune your PID parameters. While the P (Proportional) term may or may not be affected, the I (Integral) and the D (Derivative) values definitely will since they are time-dependent.
Bail your system out with a biquad
There are a few general-purpose filtering techniques that you can try to better stabilize the control loop, which should help to lower noise both at zero velocity and while moving. Most systems that offer such a frequency-domain filtering capability use a biquad filter mechanism because it is flexible and programmable.
Biquads can be programmed to construct a variety of filter types including low pass, notch, and band pass. Depending on what is happening with your machine's mechanics these filters can help attenuate specific resonances and linearize the overall system response.
Generally, this kind of application-specific filtering is built on the back of a system analysis session. Such a session involves generating open and closed loop Bode plots for one or more axes in your system, from which you should be able to identify resonance points or areas where the phase margin is marginal, resulting in a tendency to oscillate.
While not for the faint of heart, mechanical/control systems analysis such as this has become a lot easier in the last several years as motion control vendors include sophisticated tuning and analysis tools with their controller's exerciser software offering.
You may also be interested in: Mechanical Resonant Frequency and How to Analyze It
Figure 3: Biquad filter diagram
Despite the seeming mastery of time and space that Bode plots can provide, when fighting a noise issue in a discrete-time sampling system you will inevitably do some manual tinkering of the filter to get the best result.
Bode plots and other traditional servo optimization techniques assume an analog system, where input and output values change continuously. Digital systems, however, adjust their values to the beat of a digital metronome (the sample period) and are therefore not a perfect representation of the real world. So, more often than not trial and error will be an important part of reducing or eliminating a persistent noise challenge.
Is there a deadband in your future?
A special type of filter that can be quite effective at reducing noise is called a deadband filter. Used in either the current loop to limit integral, or the position loop, this technique tells the servo loop not to worry about small amounts of windup, or small amounts of position error, and to only kick in for larger corrections. This has the effect of reducing the number of small corrective commands, thereby reducing noise.
Figure 4: Deadband filter diagram
Figure 4 shows a general-purpose response curve for a deadband filter, which utilizes programmable lower and upper limits to establish the engage and disengage points of the filter hysteresis. If you end up using a deadband filter in your control system, make sure you test it out over the range of loads and operating conditions your system will experience. You want to ensure that the applied values achieve the desired effect over the full projected lifetime and application space of the machine you are designing.
Curb your current loop
If, in your quest to lower noise, you have fully dissected the position servo loop but still have issues, it may be time to look at the amplifier and its current loop. A current loop inputs the desired motor...