Test Set-up Showing TowerPro 9g Servo, Teensy 2++, and external battery pack

Test Set-up Showing TowerPro 9g Servo, Teensy 2++, and external battery pack

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.

Servo timings and pin-out

Servo timings and pin-out

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).

Set up

Set up diagram

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

Graph 1 - Background Scan

Graph 1 – Background Scan – This is the level of noise present normally.

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.

Graph 2 - Battery Pack powering the Teensy – No servo present.

Graph 2 – Battery Pack powering the Teensy – No servo present.

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).

Graph 3 - TowerPro Micro Servo 9g

Graph 3 – TowerPro Micro Servo 9g

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.

Graph 4 - TowerPro MG996R

Graph 4 – TowerPro MG996R

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.

Set up diagram with Thurlby

Set up diagram with Thurlby

Thurlby set up showing Voltage and averaged Current draw

Thurlby set up showing Voltage and averaged Current draw

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

Graph 5 - TowerPro MG996R with Thurlby linear power supply

Graph 5 – TowerPro MG996R with Thurlby linear power supply

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.

If your curious about what the ‘real’ world looks like…

Graph 5 - Measurement System, measuring the G-Cell with the Door Open.

Graph 5 – Measurement System, measuring the G-Cell with the Door Open.

The area around work is not particularly noisy but you can still make out peaks due to commercial radio, mobile phones, and other sources of radio interference.

This blog post relates to the two example servos I have used, and can not be used to certify any other servos, or as a biases of compliance for any other set up.