Dual Servo Controller PCB Design

0:04

Work done
  • Built the dual-PCA9685 schematic with Raspberry Pi 5 I²C input, STM32/Nucleo control header, TXS0102 3.3V↔5.1V translation, 5.1V logic rail, 6.0V servo rail, 17 servo outputs, 220Ω series resistors, and OE pull-up fail-safe.
  • Configured U1 at I²C address 0x40 and U2 at 0x41, renamed the Pi-side TXS0102 rail to 3V3_PI, and added no-connect markers for intentionally unused pins.
  • Set up a 120mm × 100mm 4-layer PCB with an inner ground plane and inner power plane, placed all 52 real components, and added high-current layout metadata/rules for the 20A 6V_SERVO rail.
  • Updated Design Notes with datasheet confirmations, layout constraints, and validation status.
Success criteria review
  • ✅ Dual PCA9685 schematic, addressing, OE safety pull-up, I²C translation, common GND, power rails, and 17 protected servo PWM outputs are implemented.
  • ✅ PCB stackup and placement are configured for a 4-layer high-current board concept.
  • ✅ ERC is clean after marking intentionally unused pins.
  • ⚠️ Full DRC clearance is not complete: 84 airwires remain because physical routing/copper pours still need to be completed.
  • ⚠️ The stackup records the 2 oz copper requirement in project metadata/design notes, but the visible stackup template still shows default 0.035mm copper thickness; confirm the final fab stackup/copper weight with the board manufacturer.
Next steps
Complete PCB routing/pours for GND, 6V_SERVO, 5V1_LOGIC, I²C, OE, VSENSE, and PWM outputs, then re-run DRC until airwires are cleared before manufacturing export.
Route power first
Group DRC airwires
Set 2 oz stackup
Verify connector ratings
Prepare exports
2 days

Refine this doc
Ask about this doc
Design Notes
Requirements
  • Dual PCA9685 servo controller for Raspberry Pi 5 and STM32 Nucleo interface.
  • 4-layer PCB with 2 oz copper for 20A servo load support.
  • 5.1V logic rail and 6.0V servo rail.
  • TXS0102/TXS0102-equivalent 2-bit bidirectional I2C level shifting, LV=3.3V and HV=5.1V.
  • PCA9685 chip 1 address 0x40: A0-A5 to GND.
  • PCA9685 chip 2 address 0x41: A0 to VCC, A1-A5 to GND.
  • OE from STM32 Nucleo PC7/D9, with 10k pull-up to 5.1V for disabled-by-default servo outputs.
  • 17 servo PWM outputs total, each with 220 ohm series resistor.
Implementation decisions
  • Use PCA9685PW (NXP TSSOP-28) when available.
  • Use 4.7k pull-ups on the 5.1V I2C side only if level-shifter datasheet review confirms external pull-ups are appropriate/needed.
  • Treat 6.0V servo current as high-current distribution requiring wide copper pours/planes and connector placement near board edge.
Datasheet confirmations
  • PCA9685 OE is active low. A high level on OE disables/tri-states outputs according to MODE2 OUTNE configuration, so the 10k pull-up to 5.1V implements disabled-by-default servo outputs.
  • PCA9685 address map: base address bits are 1 A5 A4 A3 A2 A1 A0; U1 straps A0-A5 to GND for 0x40, and U2 straps A0 to VDD with A1-A5 to GND for 0x41.
  • TXS0102 A side supports 1.65V to 3.6V and B side supports 2.3V to 5.5V with VCCA <= VCCB, so 3.3V A-side and 5.1V B-side are valid.
  • TXS0102 includes internal 10k pull-ups on each A/B I/O; no external I2C pull-ups were added unless later edge-rate testing shows more pull-up strength is needed.
Layout constraints
  • Board size set to 120mm x 100mm with 2mm rounded corners.
  • Stackup set to Standard 4 Layer: Top signal, Layer 2 GND plane, Layer 3 power plane, Bottom signal.
  • 6V_SERVO rail is treated as a 20A high-current net requiring 2 oz copper and copper pours/planes rather than narrow traces.
Validation status
  • ERC warnings for intentionally unused header pins and unused U2 PCA9685 outputs were cleared with no-connect markers.
  • DRC checks pass for missing footprints, invalid layers, and overlapping copper.
  • Remaining DRC issue: 84 airwires remain because the PCB has been placed but not physically routed yet. Complete routing/pours for all nets, with priority on GND, 6V_SERVO, 5V1_LOGIC, I2C, OE, VSENSE, and PWM outputs.

    Requirements

    Implementation decisions

    Datasheet confirmations

    Layout constraints

    Validation status

Documents

    Design Notes

Assets

Assets are files uploaded to this project which can be used in various ways.

Dual PCA9685 Servo Controller thumbnail
4-layer dual PCA9685 servo controller with Raspberry Pi 5, STM32 Nucleo, TXS0102 I2C level shifting, 6.0V/20A servo rail, and 5.1V logic rail.

Properties

Pricing & Availability

Distributor

Qty 1

Arrow

$12.85–$19.50

Digi-Key

$0.96–$1.46

LCSC

$10.18

Mouser

$20.40

TME

$0.59

Verical

$14.69–$19.22

Controls