Servo motors combine ordinary DC motors with a set of gears which slow the speed of rotation while at the same time increasing the torque, or rotational force. They also include control electronics which provide feedback on the current state of the device. This is data about either speed or position. Servos come in three basic types as explained in the table below. The precise control provided by a servo motor makes it a good choice for high-precision applications such as robotics and precision manufacturing. They are also relatively lightweight which make them useful in contexts such as drone design where excess weight might be a problem. Because of their light construction, they are also cheap in comparison to other types of motor.
|Positional rotation servo||The shaft of the servo is constrained to rotate only through 180°. The position of the shaft within that range is set by the control signal. For example, a control voltage of 0V could be used to represent the extreme in one direction (0°) while 5V could be used to set the position to the opposite extreme (180°). In this scenario, a control voltage of 2.5V would be required to maintain the mid-point position.|
|Continuous servo||The servo is not constrained to 180°, and instead of a position in the arc, the control signal represent the speed and direction of rotation. For example, a control voltage of 0V could be used to represent full speed rotation in one direction, and 5V would represent full speed rotation in the opposite direction. To stop the servo, a voltage of 2.5V would be required.|
|Linear servo||Less common that the other two types of servo, these motors translate the rotation of a positional servo into motion in a straight line. Here the control voltage corresponds to positional distance.|
A servo motor requires three connections, power, ground and signal.
Arduino provides a convenient library for controlling servo motors, and
you can find out about it by following the link in the Resources box.
There are also two example sketches for servos that are accessible from
the Arduino IDE. Go to
File → Examples → Servo.