Com connectar un multiplexor I2C TCA9548A a Arduino

  • El TCA9548A permet connectar fins a 8 dispositius I2C a un únic bus.
  • Es pot controlar fàcilment mitjançant el bus dentrada I2C i seleccionar un canal.
  • Admet diferents nivells de voltatge, cosa que ho fa versàtil per a molts projectes.
  • És ideal per gestionar dispositius amb adreces I2C fixes o repetides.

Comunicació I2C amb Arduino

Actualment, la comunicació I2C s'ha convertit en un dels mètodes més utilitzats per connectar múltiples dispositius a un microcontrolador com Arduino. TCA9548A és un extensor de bus I2C de 8 canals que soluciona un dels problemes més comuns en aquest tipus de connexions: el conflicte d'adreces I2C. Aquest article t'ajudarà a comprendre com funciona aquest extensor i com el pots integrar en els teus projectes amb Arduino.

Si alguna vegada t'has trobat amb dispositius que comparteixen la mateixa adreça al bus I2C, sabràs com pot ser de frustrant intentar comunicar-s'hi sense generar conflictes. Amb l'ús del TCA9548A, podem evitar aquests problemes i expandir el nombre de dispositius connectats a un únic bus I2C.

Què és un TCA9548A?

El TCA9548A és un extensor de bus I2C de 8 canals desenvolupat especialment per a dispositius com Arduino. La seva principal funció és permetre la connexió de diversos busos a un únic bus I2C, cosa que el converteix en un element fonamental per gestionar la comunicació amb diversos dispositius de manera eficient. Fins i tot es podria comparar amb un multiplexor, però dissenyat específicament per a la comunicació I2C.

Aquest dispositiu té una entrada de bus I2C que consta de dues línies, SDA (dades) i SCL (rellotge), connectades a 8 sortides independents, cadascuna amb les corresponents SDA i SCL. Això permet que el microcontrolador es comuniqui amb fins a 8 dispositius, triant amb quina interactuar a cada moment.

A més, és comú utilitzar el TCA9548A per gestionar dispositius que comparteixen la mateixa adreça I2C, cosa habitual en certs sensors i displays que no permeten canviar la seva adreça. Amb aquest multiplexor, podeu activar un canal i comunicar-vos amb un dispositiu sense interferir en altres canals.

Beneficis i característiques més destacades

Entre els beneficis més rellevants del TCA9548A es troba la capacitat de treballar amb busos I2C de diferents nivells de voltatge sense necessitat dutilitzar adaptadors lògics. Això permet la comunicació amb dispositius que funcionen a 1.8V, 2.5V, 3.3V i 5V, cosa que amplia les possibilitats d'integració en diversos projectes.

Una altra de les seves característiques clau és que el multiplexor es pot controlar directament des del bus dentrada I2C, el que ho fa molt simple de manejar des del microcontrolador. El seu voltatge de funcionament va des de 1.65V fins a 5.5V, i admet busos I2C amb freqüències de fins a 400 kHz, cosa que el fa adequat per a una varietat de dispositius.

Connexió i configuració

tca9548a

La connexió del TCA9548A és força senzilla. Només cal connectar el bus d'entrada a les línies SDA i SCL d'Arduino, juntament amb els pins d'alimentació corresponents (GND i 5V, per exemple). A l'altre extrem, pots connectar fins a 8 dispositius I2C, cadascun als seus respectius canals amb SDA i SCL.

Una característica interessant és que podeu modificar l'adreça I2C del TCA9548A de 0x70 a 0x77 utilitzant els pins A0, A1 i A2. Això és útil si necessiteu utilitzar més d'un multiplexor en un mateix projecte. A més, si per alguna raó necessites reiniciar el multiplexor, pots fer-ho posant a LOW el pin RST, que està configurat per defecte a pull-up.

És fonamental tenir en compte que a mesura que augmenti la longitud dels cables o la complexitat dels dispositius connectats, pot ser necessari afegir resistències pull-up per assegurar la correcta transmissió de les dades al bus I2C.

Exemple de codi per escanejar dispositius I2C

Abans d'interactuar amb els dispositius connectats al TCA9548A, primer és important assegurar-se que el multiplexor sigui detectat correctament. Per fer-ho, es pot fer un escaneig del bus I2C. A continuació, mostrem un exemple bàsic per detectar el propi multiplexor al 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 codi anterior escaneja les possibles adreces del bus I2C, buscant el TCA9548A o altres dispositius connectats Un cop identificat el multiplexor, pots procedir a seleccionar el canal que necessites activar.

Seleccionant un canal del TCA9548A

Quan tenim el multiplexor configurat i detectat, necessitem seleccionar el canal correcte per comunicar-nos amb el dispositiu desitjat. Això es pot fer fàcilment escrivint un byte que activi el canal específic. A continuació, un exemple de com 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);
  }
}

Amb aquest codi, pots seleccionar i interactuar amb qualsevol dels dispositius connectats al TCA9548A, un alhora. Recordeu que també podeu modificar el codi per escanejar les sortides de cada canal, cercant dispositius addicionals.

El TCA9548A és una excel·lent eina per ampliar les capacitats del bus I2C en els teus projectes amb Arduino, permetent connectar múltiples dispositius amb la mateixa direcció o de diferents nivells de voltatge d'una manera eficient i senzilla.