Pull up resistor and capacitor for 9dof LSM303+L3G20 Adafruit sensor and BMI280

Hi, In my project I have an Arduino zero, this 9dof sensor and BMI280, when I look at the data sheets they recommend adding pull-up resistors and capacitors to the circuit... but then looking at the zero's data I feel like they have already included these somehow.
Can somebody help me to choose the best method here? Thanks.

Try it as is but be prepared to add a 4K7 resistor to each I2C pin.

PS
Where is the capacitor connected?

Thanks.
Under what circumstances would you add the resistors?

Somebody suggested to use a, I think, 10mf capacitor between the ground and the common ground!?

I actually had a similar question about the micro sd shield by adafruit?

Add the resistors if you get corrupted data from the sensors.

There should be only one ground circuit connecting the Arduino to the power supply and all sensors. Do you have a schematic of your intended circuit?

I can attach a schematic if needed.

I use SparkFun Analog/Digital MUX Breakout - CD74HC4067 and a few sensors.

And by the way, do i need to use pull up resistors for this multiplexer?

Reading the data I cannot say if I need pull-up resistors.

How would you distinguish between the corrupted and clear data as noise is always present? Thanks.

The MUX board is just an analogue switch. The need for a pull-up resistor depends on the devices on either side of the board. However, you can use pull-ups even though another sensor might already have them. Use a 4K7 on each line.

If there are no pull-ups at all, you would not likely get any data from the sensor. If your data, although noisy, still makes sense then additional pull-ups are not necessary.

Amir_UW:
I can attach a schematic if needed.

Needed.
Don't know what you are using that muxer for.
Surely not for the sensors mentioned in post#0.
Leo..

Thanks. If it surely not needed for those sensors, which is all i have, then I guess i got my answer.

I've seen people add actually, pull down resistors between sda and scl lines to vcc something like

Sensor (SDA)-------->MUX (C0)
|
R=2.2KOhm
|
Sensor (VCC)--------->3.3V on Arduino

and something similar for SCL line. Hope this simple diagram makes sense.

I2C is a bus.
You can connect up to 128 devices to the same two pins.
As long as they all have a different address.

Most breakout boards have 4k7 or 10k pull up resistors.
Enough for breadboarding and short-ish wires.

When connecting many boards, or using longer wires, make sure the combined resistance is >= ~1k8.
One board with 4k7 resistors and an external 2k2 resistor would be a combined value of ~1k5.
That could be a bit too low for some (standard) I2C devices.
Leo..

They have similar physical addresses and thus I'm using a mux. Obviously the other side of the Mux, the selector bits and its data line are connected to Arduino (e.g. digital pins 7,8,9,10, 13). And yes it is of course an i2c connection.
I thought the resistors are pull down resistors to prevent the line to hang around with no value, just in case. What you're saying sounds different and i'm not sure what you mean.

Amir_UW:
They have similar physical addresses and thus I’m using a mux.

So what are the three addresses.

The BME280 can be changed if there is a clash (unlikely).

From the Adafruit BME280 pages:
“By default, the i2c address is 0x77. If you add a jumper from SDO to GND, the address will change to 0x76.”
Leo…

Question is about pull-up/down resistors. Anybody has an answer?

Pull-up resistors are common while pull-down are not. A pull-up guarantees a logic 1 on the input so that devices can ground the line giving a logic 0. The I2C buss needs pull-ups so that the master and slaves can ground the line for logic 0.

I would put 10K pull-ups on the Arduino and each sensor so that none see noise on a floating input and mistake it for data. When a MUX line is active, the combined pull-up is 5K, and safe.

You may also need a MUX on only the SCK line. A sensor should ignore the SDA line when there is no clock data, i.e. high. If that’s the case then the SDA line needs only one pull-up, 4K7.

Amir_UW:
Question is about pull-up/down resistors. Anybody has an answer?

You should be asking this on the Adafruit forum.

I went through the design files of the 9-DOF L3GD20H + LSM303 and BME280.


They both show the same I2C level shifter with 10k pull up resistors on the 5volt side.

That's a combined value of 5k.

No extra pull up resistors needed if you you are just breadboarding these modules with short wires.

Do not use an I2C muxer.
I told you that you can change the address of the BME280 in the unlikefull event that there is a clash.
Leo..

Obviously nobody has an answer except try and see if it's needed or not.
And yes all adafruit boards have pull-up resistors: question is if the trial and error could be removed...

There are more than three sensors and a mux is definitely required, and you're wrong.
and...

Amir_UW:
Obviously nobody has an answer except try and see if it's needed or not.
And yes all adafruit boards have pull-up resistors: question is if the trial and error could be removed...

There are more than three sensors and a mux is definitely required, and you're wrong.
and...

and what...
You obviously don't fully understand what I2C is.

It's a BUS that can have up to 128 devices attached to it (the two wires).
The Arduino can talk to each individual device as long as they all have a different address.

The Adafruit 9dof/L3G20 has TWO devices on one board, with two different addresses.
The addresses are in the datasheets. Up to you to find them.

A muxer is only needed if you want to connect two devices with the same address (that you can't change).

Pull up resistors are there to overcome wire capacitance.
There is enough pull up resitance on each board for a few feet of wire.
So no need to add more pull up resistors if the modules are very close to the Arduino.
Leo..