- What is a Servo?
- How Do I Control a Servo?
- How Do I Control a Servo from an Arduino?
- How Do I Control a Servo from a Raspbery Pi?
- How Do I Power a Servo?
- How Do I Send a Signal Over a Long Distance?
- How Do I Rotate a Servo a Specific Amount (90°, 180°, Continuous, etc)?
- How Do I Replace a Servo Gear Set?
- How is Servo Speed Measured?
- How is Servo Torque Measured?
- What is the "Direction" of a Servo Referring to?
- What is a Servo Spline?
Unlike brushed DC motors, servos cannot be run by simply applying a voltage. Besides supplying supply voltage (on the red wire) for the motor to pull from, a specific signal called a PWM Signal must be sent on the signal wire (usually yellow or white). This signal can come from a variety of sources such as servo controllers, RC receivers, or Arduinos.
Servos are controlled by sending them a pulse of variable width. The control wire is used to send this pulse. The parameters for this pulse are that it has a minimum pulse, a maximum pulse, and a repetition rate. Given the rotation constraints of the servo, neutral is defined to be the position where the servo has exactly the same amount of potential rotation in the clockwise direction as it does in the counter clockwise direction. It is important to note that different servos will have different constraints on their rotation but they all have a neutral position, and that position is always around 1.5 milliseconds (ms).
The angle is determined by the duration of a pulse that is applied to the control wire. This is called Pulse width Modulation. The servo expects to see a pulse every 20 ms. The length of the pulse will determine how far the motor turns. For example, a 1.5 ms pulse will make the motor turn to the 90 degree position (neutral position).
When these servos are commanded to move they will move to the position and hold that position. If an external force pushes against the servo while the servo is holding a position, the servo will resist from moving out of that position. The maximum amount of force the servo can exert is the torque rating of the servo. Servos will not hold their position forever though; the position pulse must be repeated to instruct the servo to stay in position.
When a pulse is sent to a servo that is less than 1.5 ms the servo rotates to a position and holds its output shaft some number of degrees counterclockwise from the neutral point. When the pulse is wider than 1.5 ms the opposite occurs. The minimal width and the maximum width of pulse that will command the servo to turn to a valid position are functions of each servo. Different brands, and even different servos of the same brand, will have different maximum and minimums. Generally the minimum pulse will be about 1 ms wide and the maximum pulse will be 2 ms wide.
Another parameter that varies from servo to servo is the turn rate. This is the time it takes from the servo to change from one position to another. The worst case turning time is when the servo is holding at the minimum rotation and it is commanded to go to maximum rotation. This can take several seconds on very high torque servos.
The purpose of this information is to give an overview of how servos operate and how to communicate with them. Though we have taken steps to assure the quality of information here, ServoCity makes no guarantees about the information presented. ServoCity cannot be held liable or accountable for any use or misuse of the provided information. If you have questions about this information please e-mail firstname.lastname@example.org.
While Raspberry Pis can output a PWM signal, they often are unable to maintain a clean signal due to the lack of a dedicated timer. If you are controlling servos from a Raspberry Pi we strongly recommend getting a servo hat for your raspberry pi.
The best way to power a servo is with a battery with a voltage within the voltage range specified on the servo pages specs table. Make sure to use a healthy battery that can supply more than enough current. Since current is pulled and not pushed, having more current available than is needed will not hurt the servo (it is like having more gas than you need to get someplace in your car). The power for the servo's motor is supplied on the red wire. It can be useful to cut the red wire (or use an X-Acto to pull the connector from the housing) so that you can supply power separately from the signal. This would allow you to power your receiver on a different battery than your servo if they need different voltages. It also would allow you to power your servo's motor directly from a battery while the signal comes from an Arduino since Arduino pins cannot handle the kind of current a servo needs (they generally max out at 40mA).
Sometimes when sending a signal over a long distance, the signal can degrade due to voltage drop and electromagnetic interference (EMI). A servo signal booster can resolve these issues and make it easy to transmit the signal over a great distance of wire.
When controlled with a radio control system, most hobby servos offer 90° (45° either direction) rotation right out of the box. This can sometimes be increased if your radio system offers end point adjustments or your servo controller has a 180° jumper pin. If you are using Hitec digital servos, you simply want to purchase the hand-held programmer to increase the rotation. If you have a Hitec or Futaba analog servo that only offers 90° of rotation, the amount of rotation can sometimes be increased to 180° by performing a simple modification.
Note: You can purchase Hitec servos from us that are pre-modified in our own manufacturing facility on the individual Hitec servo pages. This modification voids all ServoCity and Hitec warranties.
All servos will rotate clockwise and counterclockwise. The direction the servo rotates all depends on the signal the servo is receiving. Not all servos match in regards to direction of rotation right out of the box. If you plug in a Hitec servo into your radio control receiver or servo controller and you tell the servo to turn to the right (clockwise), it will move to the right. If you then plug a Futaba servo into the same receiver or servo controller and tell it to go the same direction as the Hitec servo did, it will move the opposite direction (counterclockwise). This is an easy fix with most radio control systems since they have a servo reversing
function on the transmitter. This difference between manufacturers is the reason each servo will have a spec calling out the direction that the servo will move with an increasing PWM signal.
The toothed output shaft of a servo is generally referred to as a the servo spline. For a breakdown of all the different kinds of servo splines on the servos we sell, check out the Servo Spline entry in our glossary.