596

Connecting two or more I2C devices sometimes requires level adaptation since on device might be using 3V3 and another 5V. Providing adequate isolation would also be very handy. I needed such a setup for interfacing Arduino's with Raspberry Pi's. The circuit:

Connecting two or more I2C devices sometimes requires level adaptation since on device might be using 3V3 and another 5V. Providing adequate isolation would also be very handy. I needed such a setup for interfacing Arduino's with Raspberry Pi's.

 

The circuit:

Initially I looked at Opto-isolators but the signals must be bi-directional and this would require Opto-Isolators for both directions on all the lines. Some people on the net reported issues and glitches using optos on the bus due to variances in response times etc. This would be difficult to trace.

Eventually decided on using the ADuM 1250 for protection, offering not only bi-directional protection (2.5kV rms according to the datasheets) The isolator can be driven with any voltage between 3.0V and 5.5V on either side.

I designed the circuit so that the local micro controller voltage can be selected. On one of the isolators in the bus, one can apply the preferred bus voltage, from a separate supply (3V3 to 5V).

 

Additional connectors allows for an upstream or downstream I2C device to be connected.

The PCB is about 2 x 4 cm

Version 1.0 - Initial design - tracks were a bit too close to each other.

Version 2.0 - Increased space between Bus and local to improve isolation, removed some jumpers to simplify.

 

Prototype working well.