Active I2C Long Cable Extender P82B715 Module

Overview

This module is designed to enable long range I2C communications which extends the cable length from several meters to about 50 meters. It is ideal for applications that need to run over long wires such as the CAT5e Ethernet cable that is commonly used to make connections between rooms. Operating with any I2C master, slave or bus buffer is the primary advantage of this module. NXP P82B715 I2C bus extender IC is used as the main component on this module. The module has four pull-up resistors on board: two on the unbuffered bus side and another two on the buffered bus side. Additionally, there are two LEDs indicates the SCL and SDA activities on the bus. Both the LEDs are driven by transistors which draw negligibly small current from the SCL and SDA lines.

Features

  • Multi-drop distribution of I2C-bus signals using low cost twisted-pair cables
  • Dual, bidirectional, unity voltage gain buffer with no external directional control required
  • Compatible with I2C-bus and its derivatives SMBus, PMBus, DDC, etc.
  • Supply voltage range 3V to 12V
  • Clock speeds to at least 100 kHz and 400 kHz when other system delays permit
  • 4-pin interlock connectors onboard
  • 4-pin interlock cables included in the package
  • Compact size

Pin Configuration

  • VCC: 3-12V power supply
  • SCL_CABLE: Buffered SCL Bus (Open drain)
  • SDA_CABLE: Buffered SDA Bus (Open drain)
  • SCL_BUS: Unbuffered SCL Bus (Open drain)
  • SDA_BUS: Unbuffered SDA Bus (Open drain)
  • GND: Common ground

Typical Application Schematics

MOD-000015.typical_app

Arduino Point Wiring Scheme

QQ截图20170722171721

Theory

The main problem with the long cable I2C communication is the rising time problem. Because the I2C standard limits the current on SCL/SDA lines to 3mA, the pull-up resistors on SCL/SDA lines have to be big enough so that VCC/Rpull-up is less than 3mA. This results in slow rising-time if the stray capacitance of the cable is sufficiently large.

In the following experiment, an I2C RTC module is connected to an Arduino Duemilanove. The Arduino Duemilanove is programmed to read the Real-Time Clock data from the RTC module via I2C bus. The waveform is captured with an oscilloscope connected to the SCL and SDA lines.

When a 30cm cable is used,
MOD-000015.30cm_withoutThough there is some distortion on rising edge, the waveform is good and the communication is fine.

When a 1-meter cable is used,
MOD-000015.1m_withoutThe distortion on the rising edge is getting worse as the cable is longer (larger cable capacitance). But as the peak voltage is still high enough to be recognized as logic HIGH by the node, the communication is still under tolerance.

As the cable gets longer, the rising time also get longer. Finally, we will reach a point that the peak voltage of the rising-edge is lower than VIH of the node. At this point, the communication starts to have problems.

When a 5-meter cable is used,
MOD-000015.5m_withoutIn this case, the communication is corrupted due to the low peak voltage.

When a 20-meter cable is used,
MOD-000015.20m_withoutAgain, the communication is corrupted due to the low peak voltage.

In the following experiments, two MOD-000015 modules are added on each side of the cable.

When a 1-meter cable is used, 235 ohms pull-up resistors on buffered bus,
MOD-000015.1m_with

When a 5-meter cable is used, 235 ohms pull-up resistors on buffered bus,
MOD-000015.5m_with

When a 20-meter cable is used, 235 ohms pull-up resistors on buffered bus,
MOD-000015.20m_with_235ohm

When a 20-meter cable is used, 157 ohms pull-up resistors on buffered bus,
MOD-000015.20m_with_157ohm

By adding two MOD-000015 modules between the two nodes, the communication is still fine even the length of the cable is extended to 20 meters. The length of the cable could still be much longer if smaller pull-up resistor is used on the buffered bus.

For details of choosing proper resistor values for buffer/unbuffered bus, please refer to the datasheet of P82B715 from NXP.

Assembly Drawing

MOD-000015.assembly_drawing

Dimensions

MOD-000015.dimensions

FacebookTwitterGoogle+Share

6 thoughts on “Active I2C Long Cable Extender P82B715 Module

  1. Hi,

    I would like to conncet up to 8 i2c slave devices to a single master, in a centeralized star configration.
    meaning i have one place where all wires from different rooms are coming to, and master is located there. is the solution above will work for me? how many of the MOD-000015 will i need?
    1 for the master, and 8 for the slaves? or do i need 8 for the master and one for each slave? (16 total?)

    Thanks,
    Alon

    1. To my understanding, you need nine pieces of the extenders. One for the master and the other nine for the nine slaves. If two or more slaves are close enough(<30cm), they may share one extender.

  2. Hi. It looks like you configuration requires the long distance wires to include both the SDA/SCL and VCC/GND. Is it not possible to just send the two SDA/SCL wires? I’m looking to extend the I2C wires over 100ft, and need separate power sources.

    1. Hi Matt.,

      The GND wire is mandatory for SDA and SCL, because both of the SDA and SCL need a reference voltage to present the logic bits. If your seperated power source shared a common GND, this may not be a big problem. You may use just two wire then, if they are totally isolated(with isolated GND), you will have problem with communication.

  3. Hi,

    I want to connect to sensors that can be turned off most of the time and I plan to only enable them when needed.
    I have read that it is needed to isolate the I2C slaves from master when doing such things.

    How your module behaves when connected to an Arduino using but being turned off for most of the time (because 5V is not enabled)?
    And other question: How much current does the module needs for itself?

    Ingo

    1. Hmm~ The module is not designed to work with SCL/SDA connected without a power supply. I am not sure what will happen. According to the datasheet of P82B715, the maximum allowed voltage on SCL/SDA is Vcc and if the Vcc is zero in your case, the chip will work in a situation unspecified.

Leave a Reply

Your email address will not be published. Required fields are marked *


5 + = eight