pull-up resistors for the I2C connection

When connecting multiple I2C devices/slaves to the Arduino do I need pull-up resistors at each slave or is one set of pull-up resistors enough. When I look a different examples I see both setups.

and

One single set of pull-ups are what is called for.

Lefty

1 set of resistors is probably adequate, however, the value of the Rs will be determined by how many devices are on the buss, and how long the wires are. This is because all those devices and longer wires increase the total capacitance on the buss, so the risetimes of the signals will increase [simple first-order RC charging]. If this gets too long, buss operation will become irratic.

Whereas you usually see 4.7K - 10K pullup values mentioned, 2.7K is probably a better choice for the situation mentioned above.

Thanks, most devices are not far way (max 20 cm) and some are on the same pcb.

This is a very interesting articel of the effects of these pull-up resistors on the I2C signal. http://dsscircuits.com/articles/effects-of-varying-i2c-pull-up-resistors.html

This is a very interesting articel of the effects of these pull-up resistors on the I2C signal.
http://dsscircuits.com/articles/effects-of-varying-i2c-pull-up-resistors.html

Good article. One thing to consider is that when the pullups get < 2.7K or maybe 2.2K, you’ll
be exceeding the sink current specs for I2C devices, at least for 5V systems.

Very interesting and informative.

@ oric_dan

Thanks for that bit of information. Thsi has never crossed my mind and may actually explain a problem I had in one of my projects!