43 votos

¿Cómo conectar varios dispositivos de interfaz i2c en un solo pin A4 (SDA) y A5 (SCL) en Arduino?

Quiero añadir un módulo de reloj en tiempo real en mi pequeño proyecto. Quiero mostrar tanto la hora como la fecha en mi módulo LCD i2c 2x16 existente.

Tanto el módulo de reloj en tiempo real con interfaz i2c como el módulo LCD 2x16 utilizan el mismo pin A4 (SDA) y A5 (SCL) en Arduino Uno. Después de horas de búsqueda en la red, el bus i2c puede realmente tomar muchos dispositivos en serie. Esto es posible porque cada dispositivo tiene su propia dirección única.

Mi pregunta es cómo cablear físicamente los dos dispositivos de interfaz i2c en un único A4 y A5. Gracias.

39voto

Todd Smith Puntos 145

A algunos les cuesta visualizar las cosas conectadas entre sí, así que aquí tienes una imagen:

(Sugerencia de servicio)

schematic

simular este circuito - Esquema creado con CircuitLab I 2 C es un bus, por lo que las señales con nombres similares se conectan entre sí. El esquema de direccionamiento permite al microcontrolador seleccionar con qué dispositivo está hablando. En el Arduino, las resistencias pull-up de 10kΩ van a V DD (Normalmente +5V o +3,3V).

12voto

RWH Puntos 21

En el caso de I2C, si todos los dispositivos esclavos tienen diferentes direcciones de dispositivo, todos los pines SDA deben estar conectados juntos, y todos los pines SCL deben estar conectados juntos. Es tan sencillo como eso.

Naturalmente, también debes incluir resistencias pull-up en ambas líneas, como se requiere para I2C. Cómo elegir los valores de las resistencias se ha discutido aquí antes de .

3voto

Mike Roll Puntos 111

Conecta dos pines A4-sda a A5-scl(en ambas placas uno-uno) y conecta la resistencia de 5v de cada línea sda-scl correspondiente.

enter image description here

1voto

user94427 Puntos 6

I2C es un protocolo de transferencia de datos desarrollado por Philips. También se conoce como interfaz de dos hilos ya que utiliza dos hilos para la comunicación. SCL-Línea de Reloj Serial. SDL-Línea de datos en serie. Así que necesitas conectar los pines correspondientes de los dispositivos i2c, ya sea una eeprom o una lcd, a los pines SCL y SDL del microcontrolador que estés utilizando con una resistencia pullup a VDD. Dado que es un protocolo de direcciones que tiene una dirección de 7 bits para cada dispositivo conectado, puedes dirigir hasta 2^7 dispositivos diferentes. Pero normalmente la dirección I2C de un dispositivo esclavo está predefinida con algunos bits que el desarrollador tiene que cablear. Esto ayuda a conectar el mismo tipo de dispositivos con diferentes direcciones en el mismo bus.

1voto

user237342 Puntos 11

También deberías comprobar las resistencias pull up. Si utilizas placas ya hechas, no sólo el chip, que las placas suelen tener resistencias pull up en la placa entre el bus y vcc. Así que cuando conectas todo en paralelo, las resistencias también están en paralelo, por lo que el valor total de la resistencia cae y tu comunicación puede fallar.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X