1. Introduction
The Adafruit 16-Channel 12-bit PWM/Servo Driver is a breakout board designed to expand the PWM output capabilities of microcontrollers. It allows control of up to 16 free-running PWM outputs using only two I2C pins from your microcontroller. This driver is suitable for applications requiring multiple servo controls or precise LED dimming, offering 12-bit resolution for each channel. Multiple boards can be chained together for even greater control capacity.

Figure 1: Adafruit 16-Channel 12-bit PWM/Servo Driver. The board features the PCA9685 chip, 16 PWM output pins (labeled 0-15), I2C address jumpers (A0-A5), power input (V+ and GND), and I2C communication pins (SCL, SDA, VCC, GND). Included components like male headers and a 2-pin terminal block are also shown.
2. Package Contents
Verify that all items listed below are present in your package:
- One (1) fully tested and assembled Adafruit 16-Channel 12-bit PWM/Servo Driver breakout board.
- Four (4) pieces of 3x4 male straight header for servo/LED connections.
- One (1) 2-pin terminal block for external power input.
- One (1) piece of 6-pin 0.1" header for breadboard integration.
3. Features
The Adafruit PWM/Servo Driver offers the following key features:
- I2C-controlled PWM driver with a built-in clock, eliminating the need for continuous signal sending from the microcontroller.
- Solder jumpers for 6 address select pins (A0-A5), allowing up to 62 unique I2C addresses for chaining multiple boards.
- Polarity protection on the terminal block input to prevent damage from incorrect power connections.
- 3-pin connectors arranged in groups of 4, facilitating the connection of up to 16 servos or LEDs simultaneously.
- 220 ohm series resistors on all output lines for protection and simplified LED driving.
4. Setup Instructions
Follow these steps to set up your Adafruit PWM/Servo Driver:
- Assembly: Solder the provided headers and terminal block to the breakout board. The 6-pin header is typically used for connecting to a breadboard or microcontroller's I2C pins. The 3x4 male headers are for connecting servos or LEDs. The 2-pin terminal block is for external power.
- Power Connection: Connect an external power supply to the 2-pin terminal block (V+ and GND). Ensure the voltage is appropriate for your servos or LEDs (typically 5V-6V for most servos). The board includes polarity protection.
- I2C Connection: Connect the board to your microcontroller using the I2C pins:
- Microcontroller GND to Driver GND
- Microcontroller SCL to Driver SCL
- Microcontroller SDA to Driver SDA
- Microcontroller 3.3V/5V (logic level) to Driver VCC (for I2C logic power)
- I2C Address Configuration: The board has six solder jumpers (A0-A5) for setting the I2C address. By default, all are open (address 0x40). Solder closing a jumper sets that bit to '1'. This allows multiple boards to be used on the same I2C bus. Refer to the PCA9685 datasheet or Adafruit's learning resources for detailed address configuration.
- Servo/LED Connection: Connect your servos or LEDs to the 3-pin output headers. Each header has a signal pin (PWM 0-15), a V+ pin (connected to the external power supply), and a GND pin. Ensure correct polarity for LEDs.
For detailed wiring diagrams and specific microcontroller connections, please refer to the official Adafruit learning guides available on their website.
5. Operating Instructions
Operating the Adafruit PWM/Servo Driver involves sending I2C commands from your microcontroller to control the PWM outputs. The PCA9685 chip handles the PWM generation independently once configured.
- Software Library: It is highly recommended to use a dedicated software library for the PCA9685 chip, such as the one provided by Adafruit for Arduino or Python. These libraries simplify the I2C communication and PWM calculations.
- Initialization: In your microcontroller code, initialize the I2C communication and the PCA9685 driver. This typically involves setting the I2C address (matching your hardware configuration) and the desired PWM frequency.
- Setting PWM Output: To control a servo or LED, use the library functions to set the PWM pulse width for a specific channel (0-15). The 12-bit resolution means you can set values from 0 to 4095.
- For servos, the pulse width corresponds to the servo's angle. Typical values range from approximately 150 (0 degrees) to 600 (180 degrees) at a 50Hz PWM frequency, but these may vary by servo.
- For LEDs, the pulse width controls brightness. A value of 0 is off, and 4095 is full brightness.
- Chaining Boards: If you are using multiple boards, ensure each has a unique I2C address set via the solder jumpers. Your software library should allow you to address each board individually.
Refer to Adafruit's sample code and tutorials for practical examples and detailed programming instructions.
6. Maintenance
The Adafruit PWM/Servo Driver is a robust electronic component designed for long-term use with proper care. Minimal maintenance is required:
- Handling: Always handle the board by its edges to avoid touching components, especially the integrated circuit (PCA9685), which can be sensitive to static electricity.
- Environment: Operate the board in a clean, dry environment. Avoid exposure to moisture, extreme temperatures, and corrosive substances.
- Cleaning: If necessary, gently clean the board with a soft, dry brush or compressed air to remove dust. Do not use liquid cleaners unless specifically designed for electronics and applied with caution.
- Connections: Periodically check all soldered connections and wire connections for looseness or corrosion, especially in projects subject to vibration or movement.
7. Troubleshooting
If you encounter issues with your PWM/Servo Driver, consider the following troubleshooting steps:
- No Power/Functionality:
- Verify that the external power supply is connected correctly to the V+ and GND terminals and is providing the correct voltage.
- Check all I2C connections (SCL, SDA, VCC, GND) between the driver and your microcontroller.
- Ensure your microcontroller's I2C bus is properly initialized and the driver's I2C address in your code matches the hardware configuration (solder jumpers).
- Servo Jitter/Unstable Movement:
- This is often caused by power fluctuations. Consider adding a large electrolytic capacitor (e.g., 470uF or larger, rated for your supply voltage) across the V+ and GND pins of the terminal block on the driver board. This helps stabilize the power supply for the servos.
- Ensure your external power supply can provide sufficient current for all connected servos, especially under load.
- I2C Communication Lock-up at Startup:
- Some microcontrollers (e.g., Arduino, ESP8266) may experience a brief I2C lock-up during startup. This is often temporary and resolves itself. Ensure your code includes proper I2C initialization and error handling.
- Verify that the I2C pull-up resistors are correctly configured on your microcontroller or I2C bus.
- Incorrect PWM Output/LED Brightness:
- Double-check the PWM frequency setting in your code. Servos typically require 50Hz.
- Ensure the pulse width values (0-4095) are correctly mapped to your desired servo angles or LED brightness levels.
- Verify that the output lines are connected to the correct signal pins on your servos/LEDs.
For further assistance, consult the Adafruit learning system or community forums.
8. Specifications
| Feature | Detail |
|---|---|
| Model Number | 815-fba-FBACA |
| Brand | Adafruit |
| PWM Channels | 16 |
| PWM Resolution | 12-bit (4096 steps) |
| Control Interface | I2C |
| I2C Address Range | Configurable via 6 solder jumpers (A0-A5) |
| Operating Voltage (Logic) | 3.3V to 5V (VCC pin) |
| External Power Input (V+) | Up to 6V (for servos/LEDs) |
| Dimensions (LxWxH) | 2.76 x 4.72 x 0.39 inches (70.1 x 119.9 x 9.9 mm) |
| Item Weight | 0.317 ounces (9 grams) |
9. Warranty and Support
This product is manufactured by Adafruit. For warranty information, technical support, and additional resources, please visit the official Adafruit website. Their extensive learning system provides tutorials, datasheets, and community forums that can assist with setup, programming, and advanced applications of this PWM/Servo Driver.
Official Website: www.adafruit.com





