Addresses and chains · 09 of 13

Chaining boards

The socket on each board's right edge takes the next board's header, so boards chain without a wire. All six signals pass along, and that has two costs: every board adds its own pair of 10 kΩ pull-ups to SDA and SCL, and every servo's current on V+ runs through the first board's header pins.

Board to board

The male header on a board's left edge fits the female socket on the right edge of the one before it. The six pins are in the same order on both, GND, VCC, SDA, SCL, OE and V+, so plugging boards together joins all six. The microcontroller wires to the first board's header.

Each board still needs its own address. Three boards from the box, chained, are 0x40, 0x41 and 0x42 once A0 and A1 are bridged on two of them (Six pads, one address).

Pull-ups add up

Every board fits a 10 kΩ pull-up on SDA and another on SCL. Chained, they are in parallel: two boards are 5 kΩ, eight are 1.25 kΩ.

Every board brings its pull-ups
3 boards, 3.33 kΩ
Boards on the bus3
VCC
Pull-ups in parallel
3.33 kΩ
Sink current
0.99 mA
Most boards at 3.3 V
9
3 boards: 3.33 kΩ, 1.0 mA. Fine. Watch V+, though: it rides the chain header too, so every servo on every board draws through the first board's 2.54 mm pins, which are typically rated around 3 A. For more than a few small servos, give each board its own supply and leave V+ unjoined between them.

Whatever pulls a line LOW has to take all that current. At 3.3 V, eight boards make 2.6 mA and nine make almost 3 mA. At 5 V, six boards reach 3 mA. The I²C standard only requires a device in standard and fast mode to pull a line down against 3 mA, so past those counts some device on the bus may not reach a clean LOW. The PCA9685 can pull harder; a small sensor on the same bus may not.

Three boards from one box are nowhere near the limit: 3.3 kΩ, 1 mA at 3.3 V.

Past the limit: a second bus

Past about eight boards the parallel pull-ups get stiff, and the board has no jumper to disconnect them. They are also not a part to desolder: SDA's and SCL's pull-ups share one four-resistor array with the pull-downs that hold A0 and A5 at 0, so lifting it leaves the address floating.

So keep chains short. For more boards than one bus carries comfortably, and a microcontroller with a second I²C bus, put the rest on that bus, on its own pins.

V+ rides the chain too

The sixth pin is V+. Plugged together, the boards' V+ rails are one rail, fed from wherever power comes in. If one adapter powers the chain through the first board, every servo's current passes through that board's 2.54 mm header pins and back through its GND pin. Pins like these are typically rated around 3 A.

Two adapters on a plugged chain are no better: their V+ rails are joined, so the adapters are connected to each other.

For more than a few small servos:

  1. Give every board its own adapter, in its own terminal or USB-C.
  2. Join the boards with jumper wires, not edge to edge: GND, VCC, SDA and SCL, plus OE if you use it.
  3. Leave V+ unconnected between boards.

GND stays joined, because the pulses need one ground to be measured against.

When it does not work

Chained boards all stopped answering when I added one more.

Two boards at the same address fight over every reply. Check the new board's address pads against every other board's; each board in a chain needs its own pattern, and none of them 0x70, the All Call address.

The bus works with four boards and fails with ten.

Ten boards' pull-ups in parallel pull SDA and SCL up harder than the I²C standard lets a device be asked to pull down. The board has no jumper to disconnect its pull-ups, so split the chain: fewer boards on this bus, and the rest on a second I²C bus.

The first board's header gets warm.

Servo current for the whole chain is passing through its V+ and GND pins. Stop the load at once, give each board its own supply, and join the boards with jumper wires that leave V+ out.

Can I desolder the pull-ups from the extra boards?

Not safely. The SDA and SCL pull-ups share one four-resistor array, RN6, with the pull-downs that hold A0 and A5 at 0. Lift it and those two address pins float, so the board's address becomes a guess. Keep the chain short instead.

Where this goes next

The one pin that turns every output off at once, on every board in the chain.

OE stops everything →

Edit this page — content/books/pca9685/chaining-boards.mdx

Community

Questions about this product

See what other owners have asked, and read their solutions.

Ask a question ↗

PCA9685 16-Channel Servo Driver Board, USB-C Powered

Loading discussions…

Discuss this article

Ask about this page. The answer stays here, on the page it belongs to, for whoever hits the same wall next.

Browse Modules and blocks on the forum →