Cómo conectar un multiplexor I2C TCA9548A a Arduino

  • El TCA9548A permite conectar hasta 8 dispositivos I2C a un único bus.
  • Se puede controlar fácilmente mediante el bus de entrada I2C y seleccionar un canal.
  • Admite diferentes niveles de voltaje, lo que lo hace versátil para muchos proyectos.
  • Es ideal para gestionar dispositivos con direcciones I2C fijas o repetidas.

Comunicación I2C con Arduino

En la actualidad, la comunicación I2C se ha convertido en uno de los métodos más utilizados para conectar múltiples dispositivos a un microcontrolador como Arduino. El TCA9548A es un extensor de bus I2C de 8 canales que soluciona uno de los problemas más comunes en este tipo de conexiones: el conflicto de direcciones I2C. Este artículo te ayudará a comprender cómo funciona este extensor y cómo puedes integrarlo en tus proyectos con Arduino.

Si alguna vez te has encontrado con dispositivos que comparten la misma dirección en el bus I2C, sabrás lo frustrante que puede ser intentar comunicarse con ellos sin generar conflictos. Con el uso del TCA9548A, podemos evitar esos problemas y expandir el número de dispositivos conectados a un único bus I2C. Vamos a explorar en detalle las capacidades que ofrece este multiplexor.

¿Qué es un TCA9548A?

El TCA9548A es un extensor de bus I2C de 8 canales desarrollado especialmente para dispositivos como Arduino. Su principal función es permitir la conexión de varios buses a un único bus I2C, lo que lo convierte en un elemento fundamental para gestionar la comunicación con varios dispositivos de manera eficiente. Incluso se podría comparar con un multiplexor, pero diseñado específicamente para la comunicación I2C.

Este dispositivo tiene una entrada de bus I2C que consta de dos líneas, SDA (datos) y SCL (reloj), conectadas a 8 salidas independientes, cada una con sus correspondientes SDA y SCL. Esto permite que el microcontrolador se comunique con hasta 8 dispositivos, eligiendo con cuál interactuar en cada momento.

Además, es común usar el TCA9548A para gestionar dispositivos que comparten la misma dirección I2C, algo habitual en ciertos sensores y displays que no permiten cambiar su dirección. Con este multiplexor, puedes activar un canal y comunicarte con un dispositivo sin interferir en otros canales.

Beneficios y características más destacadas

Entre los beneficios más relevantes del TCA9548A se encuentra la capacidad de trabajar con buses I2C de diferentes niveles de voltaje sin necesidad de usar adaptadores lógicos. Esto permite la comunicación con dispositivos que funcionan a 1.8V, 2.5V, 3.3V y 5V, lo que amplía las posibilidades de integración en diversos proyectos.

Otra de sus características clave es que el multiplexor se puede controlar directamente desde el bus de entrada I2C, lo que lo hace muy simple de manejar desde el microcontrolador. Su voltaje de funcionamiento va desde 1.65V hasta 5.5V, y admite buses I2C con frecuencias de hasta 400 kHz, lo que lo hace adecuado para una variedad de dispositivos.

Conexión y configuración

tca9548a

La conexión del TCA9548A es bastante sencilla. Solo se necesita conectar el bus de entrada a las líneas SDA y SCL de Arduino, junto con los pines de alimentación correspondientes (GND y 5V, por ejemplo). En el otro extremo, puedes conectar hasta 8 dispositivos I2C, cada uno en sus respectivos canales con SDA y SCL.

Una característica interesante es que puedes modificar la dirección I2C del TCA9548A de 0x70 a 0x77 utilizando los pines A0, A1 y A2. Esto es útil si necesitas usar más de un multiplexor en un mismo proyecto. Además, si por alguna razón necesitas reiniciar el multiplexor, puedes hacerlo poniendo a LOW el pin RST, que está configurado de forma predeterminada a pull-up.

Es fundamental tener en cuenta que a medida que aumente la longitud de los cables o la complejidad de los dispositivos conectados, puede ser necesario añadir resistencias pull-up para asegurar la correcta transmisión de los datos en el bus I2C.

Ejemplo de código para escanear dispositivos I2C

Antes de interactuar con los dispositivos conectados al TCA9548A, primero es importante asegurarse de que el multiplexor sea detectado correctamente. Para ello, se puede realizar un escaneo del bus I2C. A continuación, mostramos un ejemplo básico para detectar el propio multiplexor en el bus.

#include "Wire.h"

void setup() {
  Wire.begin();
  Serial.begin(9600);
  Serial.println("Escaneando bus I2C...");

  for (byte address = 8; address <= 119; address++) {
    Wire.beginTransmission(address);
    byte error = Wire.endTransmission();

    if (error == 0) {
      Serial.print("Encontrado dispositivo en dirección 0x");
      Serial.println(address, HEX);
    }
  }
  Serial.println("Escaneo finalizado");
}

void loop() {
  delay(1000);
}

El código anterior escanea las posibles direcciones del bus I2C, buscando el TCA9548A u otros dispositivos conectados. Una vez identificado el multiplexor, puedes proceder a seleccionar el canal que necesitas activar.

Seleccionando un canal del TCA9548A

Una vez que tenemos el multiplexor configurado y detectado, necesitamos seleccionar el canal correcto para comunicarnos con el dispositivo deseado. Esto se puede hacer fácilmente escribiendo un byte que active el canal específico. A continuación, un ejemplo de cómo seleccionar un canal:

#define TCAADDR 0x70

void tcaselect(uint8_t i) {
  if (i > 7) return;
  Wire.beginTransmission(TCAADDR);
  Wire.write(1 << i);
  Wire.endTransmission();
}

void setup() {
  Wire.begin();
  Serial.begin(115200);
  for (uint8_t t=0; t<8; t++) {
    tcaselect(t);
    Serial.print("Escaneando salida ");
    Serial.println(t);
  }
}

Con este código, puedes seleccionar e interactuar con cualquiera de los dispositivos conectados al TCA9548A, uno a la vez. Recuerda que también puedes modificar el código para escanear las salidas de cada canal, buscando dispositivos adicionales.

El TCA9548A es una excelente herramienta para ampliar las capacidades del bus I2C en tus proyectos con Arduino, permitiéndote conectar múltiples dispositivos con la misma dirección o de diferentes niveles de voltaje de una manera eficiente y sencilla.


Sé el primero en comentar

Deja tu comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.