Cómo usar el multiplexor TCA9548A I2C con Arduino

How to Use the TCA9548A I2C Multiplexer with Arduino

El TCA9548A es un multiplexor I2C que le permite conectar múltiples dispositivos con la misma dirección I2C a un solo Arduino. Logra esto creando hasta ocho autobuses I2C separados, a los que se puede acceder individualmente. Este tutorial lo guiará a través de la interfaz y el uso del TCA9548A con Arduino para administrar múltiples dispositivos I2C.


Lo que necesitarás

  1. Módulo multiplexador TCA9548A I2C
  2. Arduino Board (por ejemplo, Uno, Mega, Nano)
  3. Dispositivos I2C (por ejemplo, sensores, pantallas)
  4. Cables de placa y jersey
  5. Una computadora con el Arduino IDE instalado

Paso 1: Comprender el TCA9548A

El TCA9548A puede controlar hasta 8 buses I2C independientes (canales). Cada canal se puede encender o desactivar para aislar dispositivos con la misma dirección.

Pinout

Alfiler Función
VCC Fuente de alimentación (3.3V/5V)
Gnd Suelo
SDA Línea de datos I2C
SCL Línea de reloj I2C
Sdx/scx Buses I2C individuales (0-7)
A0, a1, a2 Configuración de la dirección

Configuración de la dirección I2C

  • La dirección I2C del TCA9548A está determinada por los pines A0, A1 y A2:
    • Todos los alfileres para GND: 0x70 (dirección predeterminada)
    • Combinaciones de alta y baja lata establece direcciones de 0x70 a 0x77.

Paso 2: Cableado el TCA9548A a Arduino

Conecte el TCA9548A a Arduino

TCA9548A PIN Alfiler de arduino
VCC 5V
Gnd Gnd
SDA A4
SCL A5

Conecte los dispositivos I2C al TCA9548A

  • Conecte las líneas SDA y SCL de sus dispositivos I2C a los pines SDX y SCX correspondientes en el TCA9548A.
  • Asegúrese de que los pines VCC y GND de los dispositivos también estén conectados.

Paso 3: Instale la biblioteca requerida

Para simplificar el trabajo con el TCA9548A, instale la biblioteca "Wire" (preinstalada en el IDE Arduino).

Si prefiere una biblioteca para un manejo más fácil, puede usar el Adafruit TCA9548A biblioteca:

Pasos para instalar:

  1. Abra el IDE Arduino.
  2. Ir a Bosquejo > Incluir biblioteca > Administrar bibliotecas.
  3. Busque "AdaFruit TCA9548A" y haga clic Instalar.

Paso 4: cargar el código

El siguiente ejemplo demuestra cómo seleccionar un bus I2C específico y comunicarse con un dispositivo:

Código de ejemplo

#include <Wire.h>

#define TCA9548A_ADDR 0x70 // Default I2C address of TCA9548A

void tcaSelect(uint8_t bus) {
  if (bus > 7) return; // Ensure the bus number is valid
  Wire.beginTransmission(TCA9548A_ADDR);
  Wire.write(1 << bus); // Select the specific bus
  Wire.endTransmission();
}

void setup() {
  Serial.begin(9600);
  Wire.begin();

  Serial.println("TCA9548A Test");

  // Test selecting each channel
  for (uint8_t i = 0; i < 8; i++) {
    tcaSelect(i);
    Serial.print("Channel ");
    Serial.print(i);
    Serial.println(" selected.");
    delay(500);
  }
}

void loop() {
  // Add specific I2C communication here
}

Paso 5: Comunicarse con dispositivos en cada canal

Para comunicarse con un dispositivo en un canal específico, llame al tcaSelect(bus) función antes de iniciar la comunicación I2C. Por ejemplo:

Lectura de datos de sensores

#include <Wire.h>

#define TCA9548A_ADDR 0x70

void tcaSelect(uint8_t bus) {
  if (bus > 7) return;
  Wire.beginTransmission(TCA9548A_ADDR);
  Wire.write(1 << bus);
  Wire.endTransmission();
}

void setup() {
  Serial.begin(9600);
  Wire.begin();

  Serial.println("Reading from multiple sensors");
}

void loop() {
  for (uint8_t i = 0; i < 8; i++) {
    tcaSelect(i); // Select channel
    Serial.print("Reading from channel ");
    Serial.println(i);

    Wire.requestFrom(0x40, 1); // Replace 0x40 with the I2C address of your sensor
    if (Wire.available()) {
      int data = Wire.read();
      Serial.print("Data: ");
      Serial.println(data);
    }
    delay(500);
  }
}

Aplicaciones del TCA9548A

  1. Administrar múltiples dispositivos I2C idénticos (por ejemplo, múltiples sensores con la misma dirección).
  2. Expandir dispositivos I2C en un proyecto.
  3. Reducción de la complejidad del cableado en sistemas grandes.

Solución de problemas

  • Sin respuesta de los dispositivos: Asegúrese de seleccionar el bus I2C correcto y verifique el cableado.
  • Abordar los conflictos: Verifique las direcciones I2C de dispositivos conectados para evitar conflictos.
  • Cambio de bus incorrecto: Asegúrese de que la dirección de TCA9548A esté configurada correctamente y coincida con el código.

Conclusión

Has interactuado con éxito el multiplexor TCA9548A I2C con Arduino. Este poderoso módulo le permite conectar y controlar múltiples dispositivos I2C con la misma dirección, por lo que es una herramienta valiosa para proyectos complejos. ¡Experimente con diferentes dispositivos y configuraciones para desbloquear su máximo potencial!

Escribir un comentario

Notice an Issue? Have a Suggestion?
If you encounter a problem or have an idea for a new feature, let us know! Report a problem or request a feature here.