Item code: 900-00005
What It Can Do
- Moves to any position between 0 and 180 degrees
- Keeps its position as long as power is applied
- Motorizes most anything, such as a robot or mechanical puppet
Servo motors are made for hobby radio-control tasks, like model airplanes and model racing cars. They’re also very popular in such things as robotics and animatronics.
R/C servos are made to spin in a limited circle, no more than about 180°. You set the precise position of the output shaft of the servo motor by using a timing signal; this signal is provided by a microcontroller. Once the signal is applied, the motor moves to that position, and stays there.
The control signal for a servo is a stream of pulses. The exact duration of these pulses, in fractions of a second, is what determines the position of the servo. Each pulse is nominally from 1000 to 2000 microseconds (μs) in duration — one microsecond is one millionth of a second. The pulses repeat about 50 times each second.
Note: To enable the servo to move a full 180° use pulse durations of approximately 750 to 2250 μs. Excercise care to not exceed these lower and upper limits.
Parts List
- Parallax Standard Servo
- BASIC Stamp HomeWork Board, Propeller QuickStart, or Arduino Uno microcontroller
- 22 gauge solid conductor hookup wire
- 4 x AA battery holder, 4 AA alkaline or 4 AA NiMH batteries (Propeller QuickStart)
Basic Wiring
- Power requirements: 4 to 6 VDC
- Power consumption: 15 mA @ 6V (when idle)
- Torque: 38 oz-in (2.8 kg-cm) @ 6V
- Dimensions: 2.2 x 0.8 x 1.6 in (55.8x 19 x 406 mm) excluding servo horn
Program KickStarts
Each of the example programs turns the servo counter clockwise, then clockwise, and finally to the center position. This movement is repeated indefinitely.
Important! Servo motors draw only minimal current when they’re not attached to a mechanical load, such as the leg of a robot. The example connection diagrams shown here provide only modest current to the servo, so they are not intended to move heavy loads. They’re useful for demonstration only.
To operate bigger loads the servo motor should be connected to its own 4.8 V to 6 V battery supply. See the links below for information on how to use separate power to operate one or more R/C servo motors.
BASIC Stamp 2 HomeWork Board
Download BASIC Stamp 2 code for the Parallax Standard Servo
’{$STAMP BS2} ’{$PBASIC 2.5} counter VAR Word Main: FOR counter = 1 TO 100 ’ Loop for 2 seconds PULSOUT 0, 1000 ’ Servo counterclockwise PAUSE 20 NEXT FOR counter = 1 TO 100 ’ Loop for 2 seconds PULSOUT 0, 500 ’ Servo clockwise PAUSE 20 NEXT FOR counter = 1 TO 100 ’ Loop for 2 seconds PULSOUT 0, 750 ’ Servo center PAUSE 20 NEXT GOTO Main
Note: A servo can drain a fresh 9 V battery in less than 20 minutes. For tips on using a separate power supply for a servo on the HomeWork Board, see the Parallax servos product pages (linked below).
Propeller QuickStart
Download Propeller Spin code for the Parallax Standard Servo
OBJ SERVO : "Servo32v7.spin" CON _clkmode = xtal1 + pll16x _xinfreq = 5_000_000 ServoCh1 = 0 ’ Servo to pin 0 PUB Servo32_DEMO SERVO.Start ’ Start servo handler repeat ’ Syntax: SERVO.Set(Pin, Width) SERVO.Set(ServoCh1,2000) ’ 2000 usec repeat 800000 ’ Wait a short bit SERVO.Set(ServoCh1,1000) ’ 1000 usec repeat 800000 SERVO.Set(ServoCh1,1500) ’ 1500 usec (centered) repeat 800000
Important! Use a separate AA-size battery pack to power the servo. Connect as shown, being sure not to mix up any of the wires. You can use alkaline or nickel metal hydride (NiMH) cells.
Note: To use this program you must include the Servo32v7 object in the same folder as the program file. The Servo32v7 object is included in the download archive file. See Using Propeller Objects for more information on using Propeller object files.
Arduino Uno
Download Arduino Code for the Parallax Standard Servo
#include <Servo.h> // Use Servo library, included with IDE Servo myServo; // Create Servo object to control the servo void setup() { myServo.attach(9); // Servo is connected to digital pin 9 } void loop() { myServo.write(180); // Rotate servo counter clockwise delay(2000); // Wait 2 seconds myServo.write(0); // Rotate servo clockwise delay(2000); myServo.write(90); // Rotate servo to center delay(2000); }
Note: This sketch uses the Servo library, which is included with the Arduino IDE software.
For More Information
- Refer to the Parallax Standard Servo (#900-00005) Product Documentation for additional information.
- You may substitute the Parallax Continuous Rotation Servo (#900-00008) if you want a motor that keeps turning, such as drive wheels on a robot.
- The product pages for the standard and continuous rotation servos provide downloads for the full product documentation and wiring diagrams for separate power supplies.
- Several Parallax development and education boards provide integrated 3-pin headers for easy connecting to servos (either 4 or 6 headers, depending on the board). These products are the Parallax Board of Education (BASIC Stamp 2), Board of Education Shield (for Arduino), Propeller Board of Education, and Propeller Activity Board.
Useful links:
- How to operate two servos using the Arduino (the same technique can be used with most any microcontroller)