I2C signal and power over long range (10meter cable)

Maybe overkill if it was working before, but an option is to use an I2C to Differential converter such as PCA9615, LTC4331, etc. If making the resistors smaller don't work or you need to extend the cable, consider not using I2C directly.

Not only the range will be extended but you will also have better noise immunity.

enter image description here enter image description here


As I noted in a comment, it's hard to debug without an oscilloscope trace, but the first thing that stands out from your question is the 10 kOhm pull-up resistor. This is unusually high for I2C, although it could easily work in many cases.

I would try to lower them to 1 kOhm first, to see if it will affect anything. If it helps, you can gradually make them higher, although doing so will impact your rise-time.


You absolutely need to drop your pullup resistors at long distances, and 10m is a long way and 10k Ohm is very high.

The value of the pullup resistor is related to three things:

  1. Cable capacitance
  2. Aiming voltage and Rx level sense.
  3. Speed

Try using any of the available calculators and start your reading here with the TI appnote on pullup values or here with the NXP I2C standard (7.1).

In terms of the problem you are having, it should be obvious that grounding additional pairs (12V,Gnd) in the cable will change the capacitance to the I2C signal wires.

Tags:

I2C

Power