der_wille_zur_macht
Team RC
There's no exact science to picking pullup resistors. The way an I2C bus works is that the pullup resistors keep the line(s) high. Devices on the bus pull the lines down. This is a digital application so the ideal waveform is perfect squares. Too high a value for the pullup and the pull will be "weak" meaning the squares' edges will be rounded off. Too much rounding and communication will fail. This is what can happen with the internal pullups on the ATMega in your Arduino.
Too strong a pullup (i.e. too low a resistance) and the devices will have to draw a lot of current to pull a line down, which can damage the devices. If you look for max currents on the various IC's I2C pins, you can get an idea of the smallest resistor you can use.
But, in the end, if you just stick to an acceptable, normal range, you'll get good performance. I've seen recommendations between 1k and 10k. Most people probably use something between 2k and 5k, so I stick with that range. On the Hydra project, I spec'd 2.7k. It's a bit towards the "strong" end of the range, which should provide for good performance if people have longer bus runs (i.e. put an I2C device on a different PCB a few feet away). But it's well within the safe limits, and the device will be running off wall power (not a battery pack) so we don't care TOO much about a few extra mA of current.
Too strong a pullup (i.e. too low a resistance) and the devices will have to draw a lot of current to pull a line down, which can damage the devices. If you look for max currents on the various IC's I2C pins, you can get an idea of the smallest resistor you can use.
But, in the end, if you just stick to an acceptable, normal range, you'll get good performance. I've seen recommendations between 1k and 10k. Most people probably use something between 2k and 5k, so I stick with that range. On the Hydra project, I spec'd 2.7k. It's a bit towards the "strong" end of the range, which should provide for good performance if people have longer bus runs (i.e. put an I2C device on a different PCB a few feet away). But it's well within the safe limits, and the device will be running off wall power (not a battery pack) so we don't care TOO much about a few extra mA of current.