How electrically noisy are Servo motors?

At work my day job is as an EMC test Engineer, on of the Tests we do as part of EMC compliance testing is a Radiated Emissions scan between 30 MHz and 1 GHz.

There are two sets of emissions limits that are most commonly tested for (others are more specialist requirements), you can see these limits on the graphs below. The upper limit is class A and the lower limit is class B.

The Limits for Residential, Commercial and Light Industrial emissions are specified in Table 1 of BS EN 61000-6-3:2007 (class B):

• 30 MHz – 230 MHz – 30 dB(μV/m) Quasi-peak at 10 m
• 230 MHz – 1000 MHz – 37 dB(μV/m) Quasi-peak at 10 m

The Limits for Industrial emissions are specified in Table 1 of BS EN 61000-6-4:2007 (class A):

• 30 MHz – 230 MHz – 40 dB(μV/m) Quasi-peak at 10 m
• 230 MHz – 1000 MHz – 47 dB(μV/m) Quasi-peak at 10 m

The two servos I am going to test quickly are the Tower Pro Micro Server 9G (Datasheet) and Tower Pro 996R (Datasheet), as these are what I have on my desk at the moment.

The code I will be using to run them on my Teensy 2++ is as follows:

```/* Sweep
by BARRAGAN http://barraganstudio.com
This example code is in the public domain.

modified 8 Nov 2013
by Scott Fitzgerald
http://arduino.cc/en/Tutorial/Sweep

modified 21 Oct 2014
by Philip McGaw http://philipmcgaw.co.uk
for use on http://Skippy.org.uk/how-electrically-noisy-are-servo-motors/ to work with the teensy 2++
*/

#include <Servo.h>

Servo myservo; // create servo object to control a servo
// twelve servo objects can be created on most boards

int pos = 0; // variable to store the servo position

void setup()
{
myservo.attach(26); // attaches the servo on pin 26 to the servo object
}

void loop()
{
for(pos = 0; pos<= 180; pos += 1) // goes from 0 degrees to 180 degrees
{ // in steps of 1 degree
myservo.write(pos); // tell servo to go to position in variable 'pos'
delay(10); // waits 10ms for the servo to reach the position
}
for(pos = 180; pos>=0; pos-=1) // goes from 180 degrees to 0 degrees
{
myservo.write(pos); // tell servo to go to position in variable 'pos'
delay(10); // waits 10ms for the servo to reach the position
}
} ```

The code tells the servo to move the horn by 1 degree and then wait 10ms at each point, fully sweeping back and forth 180 degrees.

The Red wire is attached to the +5V rail, and the Brown wire the GND (ground) rail, the orange wire is attached to Pin 26 (identified as B6 on the Teensy).

When the Equipment under test is placed in the chamber, and the emissions are recorded, we can plot a graph of amplitude against frequency.

There is always some radio emissions present in this frequency: commercial radio, mobile phone handshaking, and wireless doorbells. All this allows us to do is know that at the time of taking the next set of measurements we are aware of what is caused by the unit under test.

Along with the information from graph 1. Graph 2 allows us to see what noise is caused by the teensy and the battery pack. There is a a small amount of noise. This is due to the switch mode power supply in the battery pack. (And why switch mode power supplies will never be 100% efficient).

Here you can see additional noise due to the operation of the micro servos motor. There some peaks above the class B line.

Quasi and average peak analysis of the data shown in graph 3 gave results within the limit set by the standard, as such despite the line readings crossing the class B limit line all emissions recorded were within the limit set by BS EN 61000-6-3:2007.

This servo, the MG996R draws too much current and causes the teensy to restart (according to the MG996R Datasheet about 500 mA is the normal current draw) . By attaching the setup to our Thurlby power supply we can see that the average  draw is 149 – 200 mA (current limiting the Thurlby to 500 mA causes the Teensy to reset) the peak current draw is higher.

So Changing the Power supply to use the Thurlby linear power supply we can re-run the scan:

As you can see the line is much more continuous on this scan, and I have asked the spectrum analyser to do point Quasi and average peak analysis of the recorded data, despite the line readings crossing the class B limit line all emissions recorded were within the limit set by BS EN 61000-6-3:2007.