dudas con el bus I2C

Hola a todos, soy nuevo en el foro y me gustaría consultados una duda que tengo con el bus I2C.

Estoy intentando construir un estación meteorológica y tengo el sensor Bmp 180 y un RTC DS3231 ambos funcionan por comunicación I2C y a su vez tanto el reloj como el sensor barométrico tienen resistencias pull-up en el propio módulo y aquí es donde me viene la duda ¿ En este tipo de comunicación es necesario el uso de este tipo de resistencias para cada uno de los dispositivos que se conecten al bus o solamente es necesario un par para cada una de las líneas y los sensores van conectados sin más a estas?

Un saludo

Puedes conectar los dos sensores en paralelo al bus i2c, sin más.

Buena reflexión. Con una resistencia Pullup sería suficiente. Con 2 no pasa nada. Pero si sigues poniendo equipos llega un momento que aparecen problemas porque la resistencia paralelo de todas las resistencias va bajando y el bus de datos tendería a quedarse siempre en HIGH. Por ejemplo, 5 equipos con una resistencia de 5K cada uno, haría una resistencia total de 1K. Cuando el arduino pusiera ese bus a 0V, circularía una corriente por la patilla de 5mA, que es asumible. Pero otro problema son las distancias a las que están los equipos, ruidos,...

Muchas gracias por responder, me ha servido de mucha ayuda :wink:

pacojarcia:
Buena reflexión. Con una resistencia Pullup sería suficiente. Con 2 no pasa nada. Pero si sigues poniendo equipos llega un momento que aparecen problemas porque la resistencia paralelo de todas las resistencias va bajando y el bus de datos tendería a quedarse siempre en HIGH. Por ejemplo, 5 equipos con una resistencia de 5K cada uno, haría una resistencia total de 1K. Cuando el arduino pusiera ese bus a 0V, circularía una corriente por la patilla de 5mA, que es asumible. Pero otro problema son las distancias a las que están los equipos, ruidos,...

Colgándome del tema y aprovechando tu comentario:

¿Entonces por que mencionan que se pueden conectar muchos dispositivos por ese medio?

Yo pensé que las resistencias internas que ya incluye por ejemplo el Due en SDA/SCL eran suficientes para digamos conectar, unos 3 acelerómetros, un DS3231, una brújula digital y un arduino Due como esclavo.

¿Hay que conectar resistencias adicionales para cada dispositivo?

No. Muchos o casi todos los dispositivos traen las R pull up, pero se debe garantizar que los niveles TTL siguan estables.
El problema parece ser cuando hay demasiados sensores
Leí muchos comentarios al respecto y algunos dicen que se permiten hasta 10 módulos si tuvieran R de 10k cada uno. No se si todos traen resistencias Pull up de 10k
Las cuentas que hice me da que con 6 dispositivos i2C que tengan R pull up, ya estamos mas abajo de 1.5k que es el limite que asegura un Vol dentro de los límites TTL permitidos.

Pero he leido que se han conectado mas de 10 ? Entonces no se como es la cosa.

Respondiendo a TFTLCDCyg, mas que agregar sería quitar resistencias.
Con que tengamos 4k7 en ambos pines, y las demás las levantamos, entonces si podemos tener la cantidad que querramos. Pero como todas traen Resistencias, entonces empiezan a sabotear el BUS.