Comment connecter un multiplexeur I2C TCA9548A à Arduino

  • Le TCA9548A permet de connecter jusqu'à 8 appareils I2C à un seul bus.
  • Il peut être facilement contrôlé via le bus d'entrée I2C et sélectionner un canal.
  • Il prend en charge différents niveaux de tension, ce qui le rend polyvalent pour de nombreux projets.
  • Il est idéal pour gérer des appareils avec des adresses I2C fixes ou répétitives.

Communication I2C avec Arduino

De nos jours, la communication I2C est devenue l'une des méthodes les plus utilisées pour connecter plusieurs appareils à un microcontrôleur comme Arduino. Il TCA9548A est un prolongateur de bus I2C à 8 canaux qui résout l'un des problèmes les plus courants dans ce type de connexions : le conflit d'adresse I2C. Cet article vous aidera à comprendre comment fonctionne cette extension et comment vous pouvez l'intégrer dans vos projets Arduino.

Si vous avez déjà rencontré des appareils partageant la même adresse sur le bus I2C, vous savez à quel point il peut être frustrant d'essayer de communiquer avec eux sans provoquer de conflits. Avec l'utilisation de TCA9548A, nous pouvons éviter ces problèmes et augmenter le nombre d’appareils connectés à un seul bus I2C. Explorons en détail les capacités offertes par ce multiplexeur.

Qu'est-ce qu'un TCA9548A ?

El TCA9548A est un prolongateur de bus I2C à 8 canaux développé spécialement pour les appareils tels que Arduino. Sa fonction principale est de permettre la connexion de plusieurs bus à un seul bus I2C, ce qui en fait un élément fondamental pour gérer efficacement la communication avec plusieurs appareils. Il pourrait même être comparé à un multiplexeur, mais conçu spécifiquement pour la communication I2C.

Cet appareil dispose d'une entrée de bus I2C composée de deux lignes, SDA (données) et SCL (horloge), connectées à 8 sorties indépendantes, chacune avec son SDA et SCL correspondants. Cela permet le microcontrôleur communique avec jusqu'à 8 appareils, en choisissant avec lequel interagir à chaque instant.

De plus, il est courant d'utiliser le TCA9548A pour gérer des appareils partageant la même adresse I2C, ce qui est courant dans certains capteurs et écrans qui ne permettent pas de modifier leur adresse. Avec ce multiplexeur, vous pouvez activer un canal et communiquer avec un appareil sans interférer avec les autres canaux.

Avantages et points forts

Parmi les avantages les plus importants de TCA9548A Il est possible de travailler avec des bus I2C de différents niveaux de tension sans avoir besoin d'utiliser des adaptateurs logiques. Cela permet au communication avec des appareils fonctionnant à 1.8 V, 2.5 V, 3.3 V et 5 V, ce qui élargit les possibilités d'intégration dans divers projets.

Une autre caractéristique clé est que le multiplexeur peut être contrôlé directement depuis le bus d'entrée I2C, ce qui le rend très simple à utiliser depuis le microcontrôleur. Sa tension de fonctionnement varie de 1.65 V à 5.5 V et il prend en charge les bus I2C avec des fréquences allant jusqu'à 400 kHz, ce qui le rend adapté à une variété d'appareils.

Connexion et configuration

tca9548a

La connexion du TCA9548A est assez simple. Il vous suffit de connecter le bus d'entrée aux lignes SDA et SCL de l'Arduino, ainsi que les broches d'alimentation correspondantes (GND et 5V par exemple). À l'autre extrémité, vous pouvez connecter jusqu'à 8 appareils I2C, chacun sur leurs canaux respectifs avec SDA et SCL.

Une fonctionnalité intéressante est que vous pouvez modifier l'adresse I2C du TCA9548A de 0x70 à 0x77 en utilisant les broches A0, A1 et A2. Ceci est utile si vous devez utiliser plusieurs multiplexeurs dans le même projet. De plus, si pour une raison quelconque vous devez réinitialiser le multiplexeur, vous pouvez le faire en réglant la broche RST LOW, qui est définie sur pull-up par défaut.

Il est essentiel de garder à l'esprit qu'à mesure que la longueur des câbles ou la complexité des appareils connectés augmentent, il peut être nécessaire d'ajouter des résistances pull-up pour assurer la bonne transmission des données sur le bus I2C.

Exemple de code pour analyser les appareils I2C

Avant d'interagir avec les appareils connectés au TCA9548A, il faut d'abord s'assurer que le multiplexeur est correctement détecté. Pour ce faire, vous pouvez effectuer un scan du bus I2C. Ci-dessous, nous montrons un exemple de base pour détecter le multiplexeur lui-même sur le 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);
}

Le code ci-dessus analyse les adresses de bus I2C possibles, à la recherche du TCA9548A ou d'autres appareils connectés. Une fois le multiplexeur identifié, vous pouvez procéder à la sélection du canal que vous devez activer.

Sélection d'un canal du TCA9548A

Une fois le multiplexeur configuré et détecté, nous devons sélectionner le bon canal pour communiquer avec l'appareil souhaité. Cela peut être facilement fait en écrivant un octet qui active le canal spécifique. Voici un exemple de la façon de sélectionner une chaîne :

#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);
  }
}

Avec ce code, vous pouvez sélectionner et interagir avec n'importe lequel des appareils connectés au TCA9548A, un à la fois. N'oubliez pas que vous pouvez également modifier le code pour scanner les sorties de chaque canal, à la recherche de périphériques supplémentaires.

El TCA9548A est un excellent outil pour étendre les capacités du bus I2C dans vos projets Arduino, vous permettant de connecter plusieurs appareils avec la même adresse ou différents niveaux de tension de manière efficace et simple.


Soyez le premier à commenter

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont marqués avec *

*

*

  1. Responsable des données: Miguel Ángel Gatón
  2. Finalité des données: Contrôle du SPAM, gestion des commentaires.
  3. Légitimation: votre consentement
  4. Communication des données: Les données ne seront pas communiquées à des tiers sauf obligation légale.
  5. Stockage des données: base de données hébergée par Occentus Networks (EU)
  6. Droits: à tout moment, vous pouvez limiter, récupérer et supprimer vos informations.