Ako pripojiƄ multiplexer TCA2A I9548C k Arduinu

  • TCA9548A umoĆŸĆˆuje pripojenie aĆŸ 8 I2C zariadenĂ­ k jednej zbernici.
  • DĂĄ sa jednoducho ovlĂĄdaĆ„ cez vstupnĂș zbernicu I2C a vybraĆ„ kanĂĄl.
  • Podporuje rĂŽzne Ășrovne napĂ€tia, vďaka čomu je univerzĂĄlny pre mnoho projektov.
  • Je ideĂĄlny pre sprĂĄvu zariadenĂ­ s pevnĂœmi alebo opakujĂșcimi sa adresami I2C.

I2C komunikĂĄcia s Arduino

V sĂșčasnosti sa I2C komunikĂĄcia stala jednou z najpouĆŸĂ­vanejĆĄĂ­ch metĂłd na pripojenie viacerĂœch zariadenĂ­ k mikrokontrolĂ©ru, akĂœm je Arduino. On TCA9548A je 2-kanĂĄlovĂœ rozĆĄirovač zbernice I8C, ktorĂœ rieĆĄi jeden z najbeĆŸnejĆĄĂ­ch problĂ©mov pri tomto type pripojenĂ­: konflikt adries I2C. Tento člĂĄnok vĂĄm pomĂŽĆŸe pochopiĆ„, ako tento extender funguje a ako ho mĂŽĆŸete integrovaĆ„ do svojich projektov Arduino.

Ak ste sa niekedy stretli so zariadeniami, ktorĂ© zdieÄŸajĂș rovnakĂș adresu na zbernici I2C, viete, akĂ© frustrujĂșce mĂŽĆŸe byĆ„ snaĆŸiĆ„ sa s nimi komunikovaĆ„ bez toho, aby doĆĄlo ku konfliktom. S pouĆŸitĂ­m TCA9548A, mĂŽĆŸeme sa tĂœmto problĂ©mom vyhnĂșĆ„ a rozĆĄĂ­riĆ„ počet zariadenĂ­ pripojenĂœch k jednej I2C zbernici. Poďme podrobne preskĂșmaĆ„ moĆŸnosti, ktorĂ© ponĂșka tento multiplexer.

Čo je TCA9548A?

El TCA9548A je 2-kanĂĄlovĂœ rozĆĄirovač zbernice I8C vyvinutĂœ ĆĄpeciĂĄlne pre zariadenia ako Arduino. Jeho hlavnou funkciou je umoĆŸniĆ„ pripojenie niekoÄŸkĂœch zbernĂ­c k jednej I2C zbernici, čo z neho robĂ­ zĂĄkladnĂœ prvok pre efektĂ­vne riadenie komunikĂĄcie s viacerĂœmi zariadeniami. Dal by sa dokonca prirovnaĆ„ k multiplexeru, no navrhnutĂœ ĆĄpeciĂĄlne pre I2C komunikĂĄciu.

Toto zariadenie mĂĄ vstup I2C zbernice pozostĂĄvajĂșci z dvoch liniek, SDA (dĂĄta) a SCL (hodiny), pripojenĂœch k 8 nezĂĄvislĂœm vĂœstupom, z ktorĂœch kaĆŸdĂœ mĂĄ svoje zodpovedajĂșce SDA a SCL. To umoĆŸĆˆuje mikrokontrolĂ©r komunikuje aĆŸ s 8 zariadeniami, pričom si vyberĂĄte, s ktorĂœm z nich budete v kaĆŸdom okamihu interagovaĆ„.

Okrem toho je beĆŸnĂ© pouĆŸĂ­vaĆ„ TCA9548A na sprĂĄvu zariadenĂ­, ktorĂ© zdieÄŸajĂș rovnakĂș I2C adresu, čo je beĆŸnĂ© v určitĂœch senzoroch a displejoch, ktorĂ© neumoĆŸĆˆujĂș zmenu ich adresy. Pomocou tohto multiplexora mĂŽĆŸete aktivovaĆ„ kanĂĄl a komunikovaĆ„ so zariadenĂ­m bez ruĆĄenia inĂœch kanĂĄlov.

VĂœhody a vĂœhody

Medzi najdĂŽleĆŸitejĆĄie vĂœhody TCA9548A Je tu moĆŸnosĆ„ pracovaĆ„ s I2C zbernicami rĂŽznych napÀƄovĂœch ĂșrovnĂ­ bez nutnosti pouĆŸitia logickĂœch adaptĂ©rov. To umoĆŸĆˆuje komunikĂĄcia so zariadeniami pracujĂșcimi pri 1.8V, 2.5V, 3.3V a 5V, ktorĂĄ rozĆĄiruje moĆŸnosti integrĂĄcie v rĂŽznych projektoch.

ĎalĆĄou kÄŸĂșčovou vlastnosĆ„ou je, ĆŸe multiplexer moĆŸno ovlĂĄdaĆ„ priamo zo vstupnej zbernice I2C, vďaka čomu je ovlĂĄdanie z mikrokontrolĂ©ra veÄŸmi jednoduchĂ©. Jeho prevĂĄdzkovĂ© napĂ€tie sa pohybuje od 1.65 V do 5.5 V a podporuje zbernice I2C s frekvenciou aĆŸ 400 kHz, vďaka čomu je vhodnĂœ pre rĂŽzne zariadenia.

Pripojenie a konfigurĂĄcia

tca9548a

Pripojenie TCA9548A je celkom jednoduchĂ©. Potrebujete iba pripojiĆ„ vstupnĂș zbernicu k linkĂĄm SDA a SCL Arduina spolu s prĂ­sluĆĄnĂœmi napĂĄjacĂ­mi kolĂ­kmi (naprĂ­klad GND a 5V). Na druhom konci mĂŽĆŸete pripojiĆ„ aĆŸ 8 I2C zariadenĂ­, kaĆŸdĂ© na svojich prĂ­sluĆĄnĂœch kanĂĄloch s SDA a SCL.

ZaujĂ­mavou funkciou je, ĆŸe mĂŽĆŸete upraviĆ„ I2C adresu TCA9548A z 0x70 na 0x77 pomocou pinov A0, A1 a A2. To je uĆŸitočnĂ©, ak potrebujete pouĆŸiĆ„ viac ako jeden multiplexor v rovnakom projekte. TieĆŸ, ak z nejakĂ©ho dĂŽvodu potrebujete resetovaĆ„ multiplexer, mĂŽĆŸete tak urobiĆ„ nastavenĂ­m RST pin LOW, ktorĂœ je ĆĄtandardne nastavenĂœ na pull-up.

Je nevyhnutnĂ© maĆ„ na pamĂ€ti, ĆŸe so zvyĆĄujĂșcou sa dÄșĆŸkou kĂĄblov alebo zloĆŸitosĆ„ou pripojenĂœch zariadenĂ­ mĂŽĆŸe byĆ„ potrebnĂ© pridaĆ„ pull-up odpory, aby sa zabezpečil sprĂĄvny prenos dĂĄt na zbernici I2C.

PrĂ­klad kĂłdu pre skenovanie I2C zariadenĂ­

Pred interakciou so zariadeniami pripojenĂœmi k TCA9548A, je najprv dĂŽleĆŸitĂ© zabezpečiĆ„ sprĂĄvnu detekciu multiplexora. Ak to chcete urobiĆ„, mĂŽĆŸete vykonaĆ„ skenovanie zbernice I2C. NiĆŸĆĄie uvĂĄdzame zĂĄkladnĂœ prĂ­klad detekcie samotnĂ©ho multiplexora na zbernici.

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

VyĆĄĆĄie uvedenĂœ kĂłd skenuje moĆŸnĂ© adresy zbernice I2C a hÄŸadĂĄ TCA9548A alebo inĂ© pripojenĂ© zariadenia. Po identifikĂĄcii multiplexora mĂŽĆŸete pokračovaĆ„ vo vĂœbere kanĂĄlu, ktorĂœ potrebujete aktivovaĆ„.

VĂœber kanĂĄlu TCA9548A

Keď mĂĄme multiplexer nakonfigurovanĂœ a detekovanĂœ, musĂ­me vybraĆ„ sprĂĄvny kanĂĄl na komunikĂĄciu s poĆŸadovanĂœm zariadenĂ­m. To sa dĂĄ ÄŸahko urobiĆ„ napĂ­sanĂ­m bajtu, ktorĂœ aktivuje konkrĂ©tny kanĂĄl. Tu je prĂ­klad, ako vybraĆ„ kanĂĄl:

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

Pomocou tohto kĂłdu si mĂŽĆŸete vybraĆ„ a komunikovaĆ„ s ktorĂœmkoÄŸvek zariadenĂ­m pripojenĂœm k TCA9548A, jeden po druhom. Nezabudnite, ĆŸe kĂłd mĂŽĆŸete upraviĆ„ aj na skenovanie vĂœstupov kaĆŸdĂ©ho kanĂĄla a hÄŸadaĆ„ ďalĆĄie zariadenia.

El TCA9548A je vynikajĂșci nĂĄstroj na rozĆĄĂ­renie moĆŸnostĂ­ zbernice I2C vo vaĆĄich projektoch Arduino, ktorĂœ vĂĄm umoĆŸnĂ­ pripojiĆ„ viacero zariadenĂ­ s rovnakou adresou alebo rĂŽznymi napÀƄovĂœmi Ășrovƈami efektĂ­vnym a jednoduchĂœm spĂŽsobom.