Do I need I2C pullup resistors on MCP9808 temp sensor from adafruit

I have been using three MCP98098 Temp sensors (Adafruit breakout board ) with my Particle Electron - using D0/D1.

Everything seems to work fine on the bench - even without 4.7K pullups.

The adafruit breakout has 10K resistors in series with the SDA and SCL lines

I don’t understand why the pullups are not needed (are the internal pullups being set used in the library ?) .

The reason I ask is that I’m going to add some long lead lines to these sensors (e.g., 50 ft) , and I want to understand any issues that could pose a problem - pullups or no pullups - would like a better understanding?


You do not need pull-ups with the Adafruit board, as it has them.

I2C is an open-collector bus. Each device only has the ability to pull the bus low. If they don’t do anything, they’re essentially disconnected. This is how the master (the Photon) and one or more devices (such as the MCP98098) can all share the same SDA line for both reading and writing.

The side effect of this is that something needs to pull the bus high, otherwise it will float to random values. That’s what the pull-up resistors do. You need 4.7K to 10K pull-ups on both the SDA and SCL lines. Most breakout boards from Adafruit and SparkFun have pull-ups on the board for convenience, but most bare chips require that you add them.

These schematics are somewhat missleading. The two 10k resistors are connected to Vdd and not in series between theMCP9808.
They are missing the open end of the SDA/SCL lines that would connect to JP2, so they look as if they were series resistors.

More like this (similarly for A0, A1, A2)

Thanks everyone, that clears it up. The new schematic from ScruffR was very helpful - makes sense now - much appreciated.

1 Like

not sure you will get anywhere near 50ft with i2c though, even at 1m you will probably start to struggle.

for those sort of distances you may need to got to RS485.

1 Like

Good Point.

However, I’ve run a lot of I2C devices at 3 to 4 meters without problems - granted, these are very low throughput applications.

I just tried four the MCP9808 at the end of a 50 ft cable - and everything seems to work fine. Again, just sampling soil temperature every 10 seconds - not an alarm or control based application.

I’m using sold copper 24 AWG multiconductor cable from belden. I’ve heard people go over 30 m with some CAT5e.

The details on this are outside of my area of expertise - perhaps others could comment.


Found this on I2C max cable length