The Servo PWM Pi is a 16-channel, 12-bit PWM controller for the Raspberry Pi and other compatible single-board computers; suitable for driving LEDs and radio control servos. The board is based around PCA9685 PWM I2C LED controller IC from NXT and can drive each of the 16 outputs with a 12-bit (4096 steps) duty cycle from 0% to 100%.
The output frequency is programmable from a typical 40Hz to 1000Hz. Each output driver is programmed to be either open-drain with a 22 mA current sink capability at 5 V or totem pole with a 22 mA sink, 10 mA source capability at 5 V. 220R current limiting resistors are used on each channel, allowing you to connect servos or LEDs directly to the outputs.
The PCA9685 contains 5 I2C address selection pins, which can be configured using solder bridges on the Servo PWM Pi Zero PCB. Using different I2C addresses on your Servo Pi allows you to stack several boards on a single Raspberry Pi; see the datasheet for more details on I2C address selection. The active LOW Output Enable input pin (OE) on the PCA9685 allows asynchronous control of the LED outputs and can be used to set all the outputs to a defined I2C-bus programmable logic state. The OE can also be used to externally ‘pulse width modulate’ the outputs, which is useful when multiple devices need to be dimmed or blinked together using software control. The OE pin can be connected to pin 7 (GPIO 4) on the Raspberry Pi GPIO port by bridging the solder pads on the Servo Pi marked OE.
Connecting RC Servos
The Servo Pi is only compatible with analogue RC servos; digital servos will not work. While the Servo Pi uses a 12-bit (4096-step) controller, due to the way RC servos are designed, only approximately 200 steps will be available for controlling the servo. You can find an example python library for controlling an RC servo in our Github Servo PWM Pi repository.
Powering the Servo PWM Pi
For safety reasons, the Servo PWM Pi is not connected to the 5V power rail on the Raspberry Pi.
Due to the high currents used on radio control servos and other PWM devices, it is recommended that you use an external 5V power supply to power the Servo Pi. External power can be provided through the 5V and GND pads on the Servo PWM Pi Zero. If you use two power supplies, one for the Raspberry Pi and one for the Servo Pi, please ensure that the ground wires on the two supplies are joined and do not have any potential difference between them. Any potential difference between the grounds could damage the Raspberry Pi and yourself.
If you are using the Servo PWM Pi for low current applications, below 300mA, you can power the Servo PWM Pi through the 5V pins on the Raspberry Pi GPIO port by bridging the “PWR Link” pads with a blob of solder.
Bridging the “PWR Link” pads will also allow you to power your Raspberry Pi from the Servo Pi power pins using an external 5V power supply, but please note this will bypass the internal fuse on the Raspberry Pi, leaving it vulnerable to damage from short circuits on any of the GPIO pins.
Technical Details
Input Ratings & Specifications
- Spec
- Ratings
- Supply Voltage
- 2.3V to 5.5V
- Voltage on any input/output pin
- Vss to 5.5V
- Logic Voltage at GPIO I2C Port
- 3.3V
- Output Current On Each Pin
- 25 mA
- Total Maximum Current
- 400 mA
- Total Power Dissipation
- 400 mW
3D CAD Model
Servo Pi Zero - 3D CAD File (STEP Format)
Schematic
Mechanical Drawings
Click the image to enlarge
Compatibility
We have tested the Servo PWM Pi on the following platforms.
Model |
Status |
Raspberry Pi Model A / B |
|
Raspberry Pi 1 Model A+ / B+ |
|
Raspberry Pi 2 Model B |
|
Raspberry Pi 3 Model A+ / B / B+ |
|
Raspberry Pi 4 Model B |
|
Raspberry Pi 5 |
|
Raspberry Pi Zero |
|
Raspberry Pi Zero W / Zero 2 W |
|
Raspberry Pi Compute Module 4 IO Board |
|
Raspberry Pi 400 |
|
Asus Tinker Board |
|
Odroid |
|
Code Libraries and Demos
We have Python, C, C++, Node.js and Windows 10 IOT libraries for this expansion board. You can download all of the libraries from our GitHub repository or click on the logos below for your selected programming language.
Assembly Instructions
The Servo PWM Pi is supplied with the 40-pin GPIO connector unsoldered.
We supply the Servo PWM Pi this way because the Raspberry Pi Zero is also provided without a GPIO header. The Servo PWM Pi could be fitted above or below the Raspberry Pi.
Before using the Servo PWM Pi, you need to solder the 40-pin GPIO connectors onto the PCB.
PCB Header Assembly Jig
Download and print our PCB Header Assembly Jig to hold your circuit board when soldering the header pins.