ESPBoards Learn – Early Access!

PCA9685 16-Channel 12-bit PWM/Servo Driver

PCA9685 16-Channel 12-bit PWM/Servo Driver image

View on Amazon

Overview

The PCA9685 is a 16-channel, 12-bit PWM controller from NXP, widely used to control servos, LEDs, and other PWM devices. It communicates over I²C and works with popular microcontrollers including ESP32, Arduino, Raspberry Pi, and more. Its adjustable PWM frequency (24 Hz to 1526 Hz) and precise 12-bit resolution make it ideal for robotics, lighting, and automation projects.

About PCA9685 16-Channel 12-bit PWM/Servo Driver

The PCA9685 is a powerful 16-channel PWM driver, ideal for controlling servos, LEDs, and other PWM-based devices. It communicates via I²C, making it easy to integrate with ESP32, Arduino, and Raspberry Pi.

Key Features

  • 16 Independent PWM Channels – Control multiple servos or LEDs simultaneously.
  • High-Resolution PWM12-bit resolution (4096 steps) for precise control.
  • Adjustable PWM Frequency – Ranges from 24 Hz to 1526 Hz.
  • Wide Voltage CompatibilityLogic voltage: 2.3V – 5.5V; separate V+ pin for 5V–6V external power.
  • Expandable I²C Addressing – Connect up to 62 PCA9685 modules on the same I²C bus.

Thanks to its scalability and precision, the PCA9685 is perfect for robotics, automation, and advanced lighting systems requiring synchronized motion or lighting effects. 🚀

Where to Buy

Get Your PCA9685

PCA9685 16-Channel 12-bit PWM/Servo Driver

Starting from

$7 per unit

Amazon com
Amazon.com Ships worldwide
Amazon de
Amazon.de Ships to EU
Aliexpress
AliExpress Best value option

💡 Prices are subject to change. We earn from qualifying purchases as an Amazon Associate.

Technical Specs

PCA9685 Specifications

Complete technical specification details for PCA9685 16-Channel 12-bit PWM/Servo Driver

📊 Technical Parameters

Interface I2C
PWM Channels 16
PWM Resolution 12-bit (4096 steps)
PWM Frequency 24 Hz to 1526 Hz
Voltage (Logic Circuit) 2.3V to 5.5V
Voltage (External Power) Up to 6V (typically 5V for servos)
Output Current Sink: 25 mA, Source: 10 mA per channel
Addressable Modules Up to 62 on a single I2C bus
External Clock Supports external clock input for synchronization
Operating Temperature -40°C to 85°C
Pin Configuration

PCA9685 Pinout

The PCA9685 has multiple pins for I²C communication, external power, and 16 PWM output channels.

Visual Pinout Diagram

Pinout Diagram Primary
PCA9685 16-Channel 12-bit PWM/Servo Driver pinout
8
Total Pins

Pin Types

Power
3
Control
1

Quick Tips

I²C

address: 0x40 (default), configurable via A0-A5 solder pads,PWM resolution: 12-bit (4096 steps)

PWM

frequency: 24 Hz to 1526 Hz (adjustable),16 independent PWM channels

Up

to 62 modules can share same I²C bus,External V+ required for servos and high-current LEDs

Pin Descriptions

Pin NameTypeDescriptionNotes
1 VCC
Power

Logic power supply (2.3V-5.5V). Connect to 3.3V or 5V.

Powers the I²C logic and PWM circuitry.

2 GND
Power

Ground connection. Connect to microcontroller and power supply ground.

Common ground for all devices.

3 SDA
I2C

I²C Serial Data line. Bidirectional data communication.

Connect to ESP32 GPIO 21 (default SDA).

4 SCL
I2C

I²C Serial Clock line. Clock signal for I²C communication.

Connect to ESP32 GPIO 22 (default SCL).

5 V+
Power

External power for servos/LEDs (5V-6V). Separate from VCC logic power.

Required for high-current devices. Use regulated power supply.

6 Outputs 0-15
PWM

16 independent PWM output channels. Each generates 12-bit (4096 steps) PWM signals.

Connect to servo signal wires, LED anodes, or other PWM devices.

7 OE
Control

Output Enable (active low). Pull low to disable all PWM outputs.

Optional - usually left unconnected or pulled high.

8 ADR (A0-A5)
Address

I²C address selection pins. Solder bridges to set custom address.

Default address: 0x40. Can address up to 62 modules (0x40-0x7F).

Connection Guide

Wiring PCA9685 to ESP32

To interface the PCA9685 with an ESP32, connect VCC to 3.3V or 5V, GND to ground, SDA to GPIO 21, SCL to GPIO 22, and V+ to an external 5-6V power supply for servos/LEDs.

Visual Wiring Diagram

Wiring Diagram Recommended
PCA9685 16-Channel 12-bit PWM/Servo Driver wiring with ESP32
6
Connections

Connection Status

Required
5
Optional
1

Protocol

I2C

Pin Connections

PCA9685 PinConnectionESP32 PinDescription
1 VCC Required
3.3V or 5V

Logic power supply. Use 3.3V or 5V depending on your setup.

2 GND Required
GND

Ground connection. Must be common with ESP32 and external power.

3 SDA Required
GPIO 21

I²C data line. Use pull-up resistors (4.7kΩ recommended).

4 SCL Required
GPIO 22

I²C clock line. Use pull-up resistors (4.7kΩ recommended).

5 V+ Required
External 5-6V Supply

External power for servos/LEDs. Do NOT use ESP32 5V pin for multiple devices.

6 OE Optional
Optional GPIO

Output enable control. Pull low to disable all outputs.

I²C

pull-up resistors (4.7kΩ) required on SDA and SCL lines

Default

I²C address: 0x40 (can be changed via address pins)

[object

Object]

Connect

all grounds together: ESP32, PCA9685, and external power supply

Add

470µF-1000µF capacitor across V+ and GND to stabilize power

PWM

frequency for servos: 50Hz (standard)

Maximum

current per channel: 25mA (total board: 400mA)

Chain

up to 62 PCA9685 boards on same I²C bus

FAQ

Frequently Asked Questions about PCA9685

What is the PCA9685 used for?
The PCA9685 is a 16-channel PWM driver module used to control servos, LEDs, and other PWM devices. It communicates via I²C and works with microcontrollers such as the ESP32, Arduino, and Raspberry Pi.
What voltage does the PCA9685 support?
The logic VCC pin supports 3.3V or 5V. The V+ pin, which powers connected devices, typically supports 5V–6V from an external supply.
What is the PCA9685 PWM frequency range?
The PCA9685 supports PWM frequencies from about 24 Hz up to 1526 Hz. Servos usually run at 50–60 Hz, while LEDs can be driven at higher frequencies.
How many devices can be connected to one I²C bus?
With the address selection pins (A0–A5), you can configure up to 62 PCA9685 modules on a single I²C bus, controlling up to 992 channels.
Help & Support

PCA9685 Troubleshooting

Common issues and solutions to help you get your sensor working

Common Issues

Debugging Tips

Code Examples

PCA9685 Programming Examples

Ready-to-use code examples for different platforms and frameworks

Summary

Wrapping Up PCA9685

The ESP32 PCA9685 16-Channel 12-bit PWM/Servo Driver is a powerful servo sensor that offers excellent performance and reliability. With support for multiple development platforms including Arduino, ESP-IDF, ESPHome, PlatformIO, and MicroPython, it's a versatile choice for your IoT projects.

Best Practices

For optimal performance, ensure proper wiring and follow the recommended configuration for your chosen development platform.

Safety First

Always verify power supply requirements and pin connections before powering up your project to avoid potential damage.

Ready to Start Building?

Now that you have all the information you need, it's time to integrate the PCA9685 into your ESP32 project and bring your ideas to life!