Capacitance of I2C - Advise needed

Hi Everyone,

On another post, I mentioned that my I2C network would have a total of 16 x 2M cable, arranged in a Star topology.

Someone pointed out that this could create problem, as the capacitance might be too high.

Currently, I'm using telephone patch cord (RJ11 to RJ11)

Would it be better, if change my design to use CAT5 patch cord ?

Any advise is welcome !

Max cable length depends on the I2C devices, pull-up resistance (or pull-up current) and cable capacitance.

With standard I2C devices and standard pull-up resistors and standard speed, max bus capacitance is 400pf.
Cable could be ~40-60pf/m. 32m of cable wold be too much.
Clock and data have to be on different pairs, or separated with a ground in between (flat cable).

Fast Mode Plus (FM+) devices can be used on higher capacitance busses.
If you use an Arduino to only SEND I2C to other devices, you could lower the pull-up resistor value to as low as 220ohm, to counteract cable capacitance. Try 470ohm first.
Standard mode devices might not be able to answer back.
You could also use standard pull-up resistors (>1k5?), normal wiring, and a lower bus speed.
Leo..

I don't care lowering the speed, if it allows for for distance: I don't have much traffic

how do you force a lower speed with the wire library ?

do you think CAT5 cable could improve anything ?

I have just read some of your previous posts regarding this problem.

Before we go any further.
What are the values of your pull-up resistors.
And are the clock and data lines running next to each other or not.
Leo..

Wawa: 4.7K for the pull up (1 on SDA and 1 on SCL)

As of now, there are no issues (but not all the cables are in place) but from a previous post, some people scared the s*** out of me, so I'm getting ready..

Signal distance: I have a main Pcb from which all cables are originating from. Traces (SCL & SDA) on the PCB are 2-3 mm apart for about 15 cm. On that PCB, there are 16 RJ11 jack, each leading to a slave devices. The cables are telephone patch cord so they are fairly close. It's a flat cable, and I have them in the following order: +5V, SCL, Gnd, SDA.

Right now, only 9 out of the final 16 cables are connected (waiting for parts)

Hope I answered your questions.....

If this 9-slave setup still works with 4k7 pullups, I wouldn't worry.
But you most likely have to lower that resistance when you add more modules.

If you use 2k2 pullups, you are still within the specs of standard I2C.
2k2, because the Arduino might also have internal pullups enabled in the I2C library.
Some Arduinos, e.g. the Mega, have 10k pullup resistors soldered on the board.
AFAIK, the minimum total resistance for standard I2C is ~1K7 (3mA).

Good to see that clock and data are separated by a ground wire.
Leo..