Në ditët e sotme, komunikimi I2C është bërë një nga metodat më të përdorura për të lidhur pajisje të shumta me një mikrokontrollues si Arduino. Ai TCA9548A është një zgjatues i autobusit I2C me 8 kanale që zgjidh një nga problemet më të zakonshme në këtë lloj lidhjesh: konfliktin e adresës I2C. Ky artikull do t'ju ndihmojë të kuptoni se si funksionon ky zgjerues dhe si mund ta integroni atë në projektet tuaja Arduino.
Nëse keni hasur ndonjëherë pajisje që ndajnë të njëjtën adresë në autobusin I2C, e dini se sa zhgënjyese mund të jetë përpjekja për të komunikuar me to pa shkaktuar konflikte. Me përdorimin e TCA9548A, ne mund t'i shmangim ato probleme dhe të zgjerojmë numrin e pajisjeve të lidhura me një autobus të vetëm I2C. Le të shqyrtojmë në detaje aftësitë e ofruara nga ky multiplekser.
Çfarë është një TCA9548A?
El TCA9548A është një zgjatues i autobusit I2C me 8 kanale i zhvilluar posaçërisht për pajisje të tilla si Arduino. Funksioni i tij kryesor është të lejojë lidhjen e disa autobusëve me një autobus të vetëm I2C, gjë që e bën atë një element themelor për të menaxhuar komunikimin me disa pajisje në mënyrë efikase. Madje mund të krahasohet me një multiplekser, por i projektuar posaçërisht për komunikimin I2C.
Kjo pajisje ka një hyrje autobusi I2C të përbërë nga dy linja, SDA (të dhëna) dhe SCL (orë), të lidhura me 8 dalje të pavarura, secila me SDA dhe SCL përkatëse. Kjo lejon mikrokontrolluesi komunikon me deri në 8 pajisje, duke zgjedhur me cilin të ndërveproni në çdo moment.
Përveç kësaj, është e zakonshme të përdoret TCA9548A për të menaxhuar pajisjet që ndajnë të njëjtën adresë I2C, diçka e zakonshme në disa sensorë dhe ekrane që nuk lejojnë ndryshimin e adresës së tyre. Me këtë multiplekser, mund të aktivizoni një kanal dhe të komunikoni me një pajisje pa ndërhyrë me kanale të tjera.
Përfitimet dhe pikat kryesore
Ndër përfitimet më të rëndësishme të TCA9548A Ekziston aftësia për të punuar me autobusë I2C të niveleve të ndryshme të tensionit pa nevojën e përdorimit të përshtatësve logjikë. Kjo lejon që komunikimi me pajisjet që funksionojnë në 1.8V, 2.5V, 3.3V dhe 5V, i cili zgjeron mundësitë e integrimit në projekte të ndryshme.
Një veçori tjetër kryesore është se multiplekseri mund të kontrollohet drejtpërdrejt nga autobusi i hyrjes I2C, duke e bërë shumë të thjeshtë funksionimin nga mikrokontrolluesi. Tensioni i tij i funksionimit varion nga 1.65 V në 5.5 V dhe mbështet autobusët I2C me frekuenca deri në 400 kHz, duke e bërë atë të përshtatshëm për një sërë pajisjesh.
Lidhja dhe konfigurimi
Lidhja e TCA9548A është mjaft e thjeshtë. Ju duhet vetëm të lidhni autobusin e hyrjes me linjat SDA dhe SCL të Arduino, së bashku me kunjat përkatëse të energjisë (për shembull, GND dhe 5V). Në anën tjetër, mund të lidhni deri në 8 pajisje I2C, secila në kanalet e tyre përkatëse me SDA dhe SCL.
Një veçori interesante është se mund të modifikoni adresën I2C të TCA9548A nga 0x70 në 0x77 duke përdorur kunjat A0, A1 dhe A2. Kjo është e dobishme nëse duhet të përdorni më shumë se një multiplekser në të njëjtin projekt. Gjithashtu, nëse për ndonjë arsye ju duhet të rivendosni multiplekserin, mund ta bëni këtë duke vendosur pinin RST LOW, i cili është vendosur si pull-up si parazgjedhje.
Është thelbësore të kihet parasysh se me rritjen e gjatësisë së kabllove ose kompleksitetit të pajisjeve të lidhura, mund të jetë e nevojshme të shtohen rezistorë tërheqës për të siguruar transmetimin e saktë të të dhënave në autobusin I2C.
Shembull kodi për skanimin e pajisjeve I2C
Përpara se të ndërveproni me pajisjet e lidhura me TCA9548A, së pari është e rëndësishme të siguroheni që multiplekseri të zbulohet saktë. Për ta bërë këtë, mund të kryeni një skanim të autobusit I2C. Më poshtë tregojmë një shembull bazë për të zbuluar vetë multiplekserin në autobus.
#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);
}
Kodi i mësipërm skanon adresat e mundshme të autobusit I2C, duke kërkuar për TCA9548A ose pajisje të tjera të lidhura. Pasi të jetë identifikuar multiplekseri, mund të vazhdoni të zgjidhni kanalin që duhet të aktivizoni.
Zgjedhja e një kanali të TCA9548A
Pasi të kemi konfiguruar dhe zbuluar multiplekserin, duhet të zgjedhim kanalin e duhur për të komunikuar me pajisjen e dëshiruar. Kjo mund të bëhet lehtësisht duke shkruar një bajt që aktivizon kanalin specifik. Këtu është një shembull se si të zgjidhni një kanal:
#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);
}
}
Me këtë kod, ju mund të zgjidhni dhe të ndërveproni me ndonjë nga pajisjet e lidhura me TCA9548A, një nga një. Mos harroni se mund të modifikoni gjithashtu kodin për të skanuar daljet e secilit kanal, duke kërkuar pajisje shtesë.
El TCA9548A është një mjet i shkëlqyer për të zgjeruar aftësitë e autobusit I2C në projektet tuaja Arduino, duke ju lejuar të lidhni pajisje të shumta me të njëjtën adresë ose nivele të ndryshme tensioni në një mënyrë efikase dhe të thjeshtë.