Chapter 11. Motors

11.0 Introduction

In this chapter, you will investigate the use of different types of motors with the Raspberry Pi. This includes DC motors, servo motors and stepper motors.

11.1 Controlling Servo Motors


You want to use a Raspberry Pi to control the position of a servo motor.


Use pulse-width modulation (PWM) to control the width of pulses to a servo motor to change its angle. Although this will work, the PWM generated is not completely stable, so there will be a little bit of jitter with the servo. For alternative solutions that produce much more stable pulse timing, see Recipe 11.2 and Recipe 11.3.

If you have an older Raspberry Pi 1, you should also power the servo from a separate 5V power supply because peaks in the load current are very likely to crash or overload the Raspberry Pi. If you have a Raspberry Pi B+ or newer, improvements in the onboard voltage regulation mean that you might get away with powering small servos directly from the 5V pin on the general-purpose input/output (GPIO) port.

Figure 11-1 shows a small 9g servo (see “Miscellaneous”) working quite happily with a Raspberry Pi B+.

Figure 11-1. Direct connection of a small servo to a Raspberry Pi B+

The leads of the servo are usually 5V wire as red, the ground as brown, and the control lead as orange. The 5V and ground leads are connected to the GPIO header 5V and GND ...

Get Raspberry Pi Cookbook, 3rd Edition now with O’Reilly online learning.

O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.