Download Servos - UNC A

yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project

Document related concepts

Lego Mindstorms wikipedia, lookup

Direction finding wikipedia, lookup

Radio transmitter design wikipedia, lookup

Oscilloscope history wikipedia, lookup

Analog television wikipedia, lookup

Time-to-digital converter wikipedia, lookup

Index of electronics articles wikipedia, lookup

LN-3 inertial navigation system wikipedia, lookup

Opto-isolator wikipedia, lookup

The material presented is taken from a variety of
sources including:,,
and Parallax educational materials at
Servo motors are used for angular
positioning. They typically have a
movement range of 180 deg but
can go up to 210 deg.
The output shaft of a servo does
not rotate freely. It seeks a
particular angular position under
electronic control.
Servos are typically rated by torque
and speed. A servo rated 40 ouncein/.21 means that at 1 inch from
the hub, the servo can exert 40
ounces of force and move 60 deg in
0.21 sec.
What makes a Servo
Servo motors and are constructed out of basic DC
motors, by adding:
• some gear reduction
• a position sensor for the motor shaft
• an electronic circuit that controls the motor's
 The basic hobby servo has a 180:1
gear ratio. The motor is typically
 Typically, a potentiometer (variable
resistor) measures the position of
the output shaft at all times.
 An informative link
Feed-back loop
An external controller (such as the
Arduino) tells the servo where to go
with a signal know as pulse
proportional modulation (PPM) or
pulse code modulation (which is
often confused with pulse width
modulation, PWM).
PPM uses 1 to 2ms out of a 20ms
time period to encode information.
A control wire communicates the angular
movement. The angle is determined by the
duration of the pulse on the control wire.
The servo expects a pulse every 20 millisec
(.02 seconds). The length of the pulse
determines how far the motor turns.
For a 1.5 millisecond pulse, the motor
turns to the 90 degree position (i.e., the
neutral position).
If the pulse is shorter than 1.5 ms, the
motor turns the shaft to closer to 0
degrees. If the pulse is longer than 1.5ms,
the shaft turns closer to 180 degrees.
• Each pulse is from 1300 to 1700 microsec (μs) in duration
• The pulses repeat about 50 times each second---once every 20 millisec
The amount of power applied to the
motor is proportional to the
distance to be traveled.
If the shaft needs to turn a large
distance, the motor runs at full
If it needs to turn a small amount,
the motor runs at a slower speed.
Modified Servos
Servo motors can also be retrofitted to
provide continuous rotation:
Not always
Remove mechanical limit (revert back to DC
motor shaft).
Remove pot position sensor (no need to
know position) and replace it with 2 equalvalued resistors with a combined resistance
equivalent to that of the pot. Makes the
servo “think” it is in the 90 deg position.
Modified Servos
The idea is to make the servo think that
the output shaft is always at the 90
degree mark.
This is done by removing the feedback
sensor, and replacing it with an
equivalent circuit that creates the same
readings as the sensor at 90 degrees.
Then, the control signal for 0 degrees
causes the motor to turn full speed in
one direction. The signal for 180
degrees causes the motor to turn full
speed the other direction.
Since the feedback from the output
shaft is disconnected, the servo
continues in the specified direction as
long as the signal remains.
Parallax Servos
The parallax servos are modified
servos with the potentiometer
The potentiometer (a.k.a., pot)
should be adjusted to make the
servo think that it is at the 90
degree mark.
Parallax Servo Connections
Servo Connector:
Black – ground
Red – power
White – signal
Connecting to the Arduino
Calibration Program
#include <Servo.h>
Servo myServo;
void setup() {
myServo.writeMicroseconds(1500); // Stop
void loop() { }
Demonstration Program
#include <Servo.h>
Servo myServo; // Create Servo object
void setup() {
myServo.attach(9); // Servo is connected to digital pin 9
void loop() {
myServo.writeMicroseconds(1700); // Counter clockwise
// Wait 2 seconds
myServo.writeMicroseconds(1300); // Clockwise
myServo.writeMicroseconds(1500); // Stop