ExpertRobotics and Motion
16-Channel Servo Controller
Control several hobby servos from a PCA9685 PWM driver without using one MCU pin per servo.
Parts from the database
- PCA9685PW Ć 116-channel PWM controller; use on a breakout board
- Raspberry-Pi-Pico à 1I²C host
Other supplies
- PCA9685 servo-driver breakoutCommon build supply
- 2ā4 hobby servosCommon build supply
- separate regulated 5ā6 V servo supply sized for stall currentCommon build supply
- Pico boardCommon build supply
- common-ground wiringCommon build supply
- mechanical linkage or test hornCommon build supply
Amazon links may be affiliate links. As an Amazon Associate, Electronics Hobby Hub earns from qualifying purchases.
Connections
- Connect PCA9685 VCC to Pico 3V3 for logic, SDA/SCL to GP4/GP5, and logic GND to Pico GND.
- Power servo V+ from a separate 5ā6 V supply on the breakout's servo-power input; join grounds.
- Plug servos into channels with ground, power and signal aligned to the board labels. Never power multiple servos from the Pico 3V3 pin.
Build steps
- Begin with one unloaded servo and the Adafruit PWM Servo Driver example.
- Set the PWM rate to the servo manufacturer's specified control frequency (commonly about 50 Hz).
- Find safe pulse limits gradually; do not command a servo against a hard stop.
- Add servos one at a time while monitoring supply voltage and current, then build a linkage.
Software and firmware setup
Firmware is required, but a complete multi-servo sketch is not included yet. Configure the PCA9685 I2C address and PWM frequency, then calibrate the pulse range with one unloaded servo. Use an independently powered servo rail.
Test your build
Each servo should move to commanded positions without the Pico resetting or the supply dipping. Record each servo's safe pulse range separately.
Troubleshooting
- If the MCU resets, servo current is overwhelming the logic supply or grounds are poorly routed.
- If motion is jerky, check PWM rate and pulse limits, then test one servo unloaded.
- If channels respond unpredictably, inspect connector orientation and I²C address jumpers.
Safety and limitations
Servos can pinch fingers and draw large stall current. Keep the mechanism unloaded during first power-up, fuse the servo supply, and disconnect power before changing wiring.
Manufacturer and platform documentation
Community Notes for This Project
These are unverified visitor contributions, separate from the build guide and manufacturer specifications. Verify technical advice against the linked datasheets before relying on it.
Set up the comments service to load community notes.