Take control of up to 16 servo motors or LEDs using just two I2C pins on your microcontroller. The PCA9685 module handles all PWM signal generation internally with 12-bit precision, freeing your processor for other tasks — no constant signal updates required.
💡 Why This Module?
Stop wasting your microcontroller's limited PWM pins. This module gives you 16 high-resolution PWM channels over a simple 2-wire I2C connection — and you can chain up to 62 boards for a total of 992 outputs.
⚡ Key Features
- 16 independent PWM channels — control servos, LEDs, or other PWM devices simultaneously
- 12-bit resolution (4096 steps) — ultra-smooth servo positioning and LED dimming
- I2C interface — uses only 2 pins (SDA & SCL) on your microcontroller
- Built-in oscillator — no external clock needed; outputs run independently
- Adjustable PWM frequency — 24 Hz to 1526 Hz to suit servos, LEDs, or other loads
- Chainable design — daisy-chain up to 62 boards (992 channels) via pass-through headers
- 6 address-select jumpers — easily assign unique I2C addresses to each board
- Output Enable (OE) pin — instantly disable all outputs with a single signal
- 220Ω series resistors — built-in protection on all output channels
- 3-pin servo connectors — plug-and-play connection for standard servo motors
- Reverse polarity protection — on the V+ terminal block power input
- 5V-tolerant inputs — works with both 3.3V and 5V logic microcontrollers
📐 Specifications
| Parameter | Value |
|---|
| Controller IC | PCA9685 (NXP) |
| PWM Channels | 16 |
| PWM Resolution | 12-bit (4096 steps) |
| PWM Frequency Range | 24 Hz – 1526 Hz |
| Interface | I2C (up to 1 MHz) |
| Default I2C Address | 0x40 |
| Addressable Range | 0x40 – 0x7F (62 unique addresses) |
| Logic Voltage (VCC) | 2.3V – 5.5V |
| Servo Power (V+) | Up to 6V (separate terminal block) |
| Output Current (per channel) | 25 mA sink / 10 mA source |
| Operating Temperature | -40°C to +85°C |
| Board Dimensions | ~62 mm × 26 mm (2.4" × 1.0") |
📦 What's in the Box
- 1 × PCA9685 16-Channel 12-Bit I2C PWM Servo Motor Driver Module
- 1 × Set of pin headers (loose, will require soldering)
🛒 What You'll Need
- Arduino, ESP32, ESP8266, Raspberry Pi Pico, or compatible microcontroller
- Servo motor(s) or LEDs
- External 5–6V DC power supply (rated for your total servo current draw)
- Jumper wires (male-to-female recommended)
- USB cable for programming your microcontroller
🔌 Compatible With
- Arduino Uno, Nano, Mega, Leonardo, Due
- ESP32 & ESP8266
- Raspberry Pi Pico / Pico W
- Raspberry Pi (via I2C GPIO)
- STM32, Teensy, and other I2C-capable microcontrollers
- Standard hobby servos (SG90, MG90S, MG996R, etc.)
- LEDs and LED strips (common anode)
🎯 Typical Applications
- Robotics — Hexapod walkers, robotic arms, pan-tilt camera mounts
- Animatronics — Coordinated multi-servo character movements
- RC Vehicles — Multi-channel steering, throttle, and accessory control
- LED Lighting — Smooth 12-bit dimming for RGB LED arrays and architectural lighting
- Home Automation — Motorized blinds, vent controllers, smart locks
- IoT Projects — Cloud-controlled servo/LED systems via ESP32 or Raspberry Pi
- Education — Learning I2C communication and PWM signal generation
💡 Pro Tip: Need more than 16 channels? Simply chain multiple boards together — each with a unique I2C address — for up to 992 independently controllable PWM outputs on a single I2C bus!
⚠️ Important Notes
- VCC powers the PCA9685 chip only. You must also connect an external power supply to V+ to power your servos.
- Do not power servos from your Arduino's 5V pin — always use a separate power supply for V+.
- All ground connections (MCU, module, and external power supply) must be connected together.
- Do not exceed 6V on the V+ servo power rail.
- Pin headers may require soldering before use.
📄 Documentation & Resources