# Question about i2c pull ups...

Hey everyone, Im looking to add two pull up resistors to a couple i2c devices im using in my project (displaying sensor values to a screen). I understand the application of the pull up resistor, and ive found resources such as how to calculate, how/why to choose higher or lower values within the range, but im still a little lost as far as what im looking at.

The sensor Im using is 3.3v, and the screen is 5v. Everything ive found as far as calculating goes, depends entirely on power and frequency. Im not sure how to determine the frequencies of what Im using (or if i even need to). Ive found a range of suggested values from 4.7 to 10k, so im not sure if there may be more generally used values for certain things or if i could just figure out how to calculate it myself based on what Ive found. Thanks!

Quick edit: sorry, now I see how silly a question it is asking how to know the frequency, which I should have an oscilloscope for, but unfortunately dont.

Nevermind, seem to have found my answers looking elswhere. Seems the standard speed of the Arduino i2c clock is 100mhz, so I'll go with that, and I've seen people more commonly suggesting 1k8 to 2k7 (for both 5v and 3v3 devices) so I'll just work within that.

100Mhz from a 16Mhz processor?

Sorry that was a typo, meant khz. Thanks!

Which Arduino are you using? UNO has built-in 20k-50k pull-up and MEGA has 10k pull-up with I2C Bus. Suitable pull-up is required to compensate for the bus length, the associated 'distributed bus capacitance' , and of course I2C bus speed.

I'm using an uno, but from what I read in other threads, people said they found the internal pull up resistor values too high. And do you mean it also depends on overall length of the device attached to the bus/how the power is distributed across that overall?

The primary resource I've been looking at for calculating this is here:

And obviously I haven't done any math yet, but does this involve anything you mentioned? Sorry, just want to be sure I know what you mean and if this document is a step in the right direction. Thanks!

Quick edit: also this thread, with some discussion about issues with using internal pull up resistors- https://forum.arduino.cc/index.php?topic=369003.0

Edit 2: just for a good resource dump, found this very helpful as well-

https://electronics.stackexchange.com/questions/102611/what-happens-if-i-omit-the-pullup-resistors-on-i2c-lines

Usually, I begin working with no external pull-up with my UNO. For my case, 2x2.2k pull-ups just work fine.

Yeah, that seems to be why I was misled at first. When using one device at a time I hadnt used pull up resistors and didn't have any problems, because it seems by default it uses the internal pull up resistors instead, but if it's as high a value as it is it would make sense why it wouldn't work with adding another device.

But I just had to sift through some (unlabelled) resistors I bought in bulk to figure out what I have. Didn't have a 1.8k, only have a 1k, 2k, and 2.2k. Will go ahead and try a 2.2k as well, and try slightly lower if needed. Thanks!