Using thick (18AWG) wire for I2C?

I have a set of custom PCBs that drive high-power RGB LEDs in a similar fashion to the BlinkM modules, and I'm planning to use an ATX power supply to supply enough power to these suckers. I included a socket for a 4-pin Molex connector (like so: http://images.ncix.com/forumimages/DD73B0B5-1171-102A-E6D08112CB35E05D.jpg) so that the boards can suck current from the +5V and GND lines.

I don't need the other GND and +12V lines, so I was wondering - could I use them instead for I2C? Obviously I would cut the wires from the power supply, then solder my own I2C master device to them to hijack the signal lines. But I'm curious about the electrical properties of using those thick wires for such 'weak' signals.

Would I2C suffer from interference or line resistance when using thicker wires (18AWG for ATX)? As the bus grows, will I need more I2C repeaters than if I had just used small hookup wire? Any other things to consider?

But I'm curious about the electrical properties of using those thick wires for such 'weak' signals.

It will make no odds whatsoever.

The thickness is not a problem, but a bundle of wires is likely to interfere with the ‘weak’ digital signals of the I2C bus.
Were you planning to use a single ground for I2C and the leds ? That not a good ground line for the I2C bus.

My I2C master device has a 3.3V regulator and decoupling cap to smooth things out, and each of the LED modules will have decoupling caps and ULN2003s on-board. However, the I2C pullups will be going to the raw +5V line.

If your master device is 3V3 you can not pull up the I2C bus to 5V.

Any ideas then of how to interface a 3.3V master I2C with multiple 5V slaves?

zenwebb: Any ideas then of how to interface a 3.3V master I2C with multiple 5V slaves?

Sure just use a bidirectional voltage translation chip, like this:

https://www.sparkfun.com/products/8745

here is an article on how to use it with I2C:

http://electronics.trev.id.au/2011/06/19/digital-compass-using-i2c-arduino-and-sparkfun-compass-module/

Lefty

A-ha, so if I add pullups on my master device to 3.3V, then add a bi-directional level shifter between the master device and the main 5V bus, I should be OK, right?

zenwebb: A-ha, so if I add pullups on my master device to 3.3V, then add a bi-directional level shifter between the master device and the main 5V bus, I should be OK, right?

That sparkfun level shifter has built in pull-ups on both the 3.3 and 5 volt sides. Just wire it up like that article shows.

Lefty

I'd recommend good decoupling on the +5V supply at the load end to reduce transients on the +5V and GND wires - less noise to be injected onto the I2C lines. Short wiring would reduce the risk of issues.

@retrolefty: Excellent, thank you!

@MarkT - each slave device will have a 10uF capacitor on board - do you think that will suffice? Wiring will be kept as short as possible, but I will keep an eye out for any issues. Also, each molex connector's wires will be straight and loose, which I hope will help too.

Loose wires is okay. 10uF seems small to me.

Here is some information about level shifting : http://playground.arduino.cc/Main/I2CBi-directionalLevelShifter

Zenwebb In the I2C specifications it says to put the wires in grnd-sca-vcc-scl configuration. I tried it with just flat phone cord and the normal 4K7 pullups for 12 feet of wire and had no problems. Laid it over 120VAC and all kinds of 5v adapters and still read the signals for 5 attiny85 slaves on the bus. I was really suprised.