Sadržaj:

TCA9548A I2C Multipleksni modul - sa Arduinom i NodeMCU: 11 koraka
TCA9548A I2C Multipleksni modul - sa Arduinom i NodeMCU: 11 koraka

Video: TCA9548A I2C Multipleksni modul - sa Arduinom i NodeMCU: 11 koraka

Video: TCA9548A I2C Multipleksni modul - sa Arduinom i NodeMCU: 11 koraka
Video: Output DC or AC Voltage using MCP4725 DAC with LCD and PWM to Voltage Converter with Arduino 2024, Novembar
Anonim
Image
Image

Jeste li ikada došli u situaciju da ste morali povezati dva, tri ili više I2C senzora na svoj Arduino samo da biste shvatili da senzori imaju fiksnu ili istu I2C adresu. Štaviše, ne možete imati dva uređaja sa istom adresom na istim SDA/SCL pinovima!

Dakle, koje su vaše mogućnosti? Stavite ih sve na TCA9548A 1-do-8 I2C multiplekser kako biste ih natjerali da međusobno razgovaraju na istoj sabirnici! TCA9548A Breakout omogućava komunikaciju s više I2C uređaja koji imaju istu adresu, što olakšava povezivanje s njima.

Korak 1: Hardverski zahtjevi

Obuhvaćene teme
Obuhvaćene teme

Za ovaj vodič potrebni su nam:

- Oglasna ploča

Registarski broj - TCA9548A I2C multiplekser

- Arduino Uno/Nano sve što vam je pri ruci

- NodeMCU

- Nekoliko I91C OLED ekrana od 0,91 i 0,96

- Kablovi za spajanje, i

- USB kabel za učitavanje koda

Korak 2: Obrađene teme

Raspravu ćemo započeti razumijevanjem osnova I2C tehnologije

Zatim ćemo naučiti o multiplekseru TCA9548A i o tome kako master i slave šalju i primaju podatke pomoću I2C tehnologije. Zatim ćemo provjeriti kako možemo programirati i koristiti multiplekser u našem projektu koristeći Arduino i NodeMCU Zatim ću vam pokazati brzo demo pomoću 8 I2C OLED ekrana i na kraju ćemo završiti vodič raspravljajući o prednostima i nedostacima TCA9548A multipleksera

Korak 3: Osnove I2C sabirnice

Osnove I2C sabirnice
Osnove I2C sabirnice
Osnove I2C sabirnice
Osnove I2C sabirnice
Osnove I2C sabirnice
Osnove I2C sabirnice

Međuintegrirano kolo izraženo I-kvadrat-C (I²C) ili I2C je tehnologija dvožilne sabirnice (zapravo 4 žice jer su vam potrebni i VCC i uzemljenje) koja se koristi za komunikaciju između više procesora i senzora.

Dvije žice su:

* SDA - Serijski podaci (linija podataka) i

* SCL - Serijski sat (linija sata)

Upamtite, obje ove linije su "sinkrone" "dvosmjerne" "otvorene odvodnje" i "povučene prema otpornicima".

Tehnologiju sabirnice I2C originalno je dizajnirao Philips Semiconductors početkom 80 -ih kako bi se omogućila laka komunikacija između komponenti koje se nalaze na istoj ploči.

S I2C, možete spojiti više slave -a na jedan master (poput SPI -a) ili možete imati više master -a koji kontroliraju jedno ili više slave -ova. I gospodari i robovi mogu prenositi i primati podatke. Dakle, uređaj na I2C sabirnici može biti u jednom od ova četiri stanja:

* Glavni prijenos - glavni čvor šalje podatke podređenom uređaju* Glavni prijem - glavni čvor prima podatke od podređenog uređaja

* Slave prijenos - slave čvor šalje podatke na master

* Slave Receive - slave čvor prima podatke od master -a

I2C je "protokol serijske komunikacije" na kratkim udaljenostima, pa se podaci prenose "bit-by-bit" duž jedne žice ili SDA linije. Izlaz bitova sinhroniziran je s uzorkovanjem bitova pomoću takta koji se 'dijeli' između master -a i slave -a. Signalom sata uvijek upravlja master. Master generira sat i započinje komunikaciju sa slave uređajima.

Dakle, da rezimiramo>

Broj upotrijebljenih žica: 2

Sinhrono ili asinhrono: Sinhrono

Serijski ili paralelni: serijski

Signal sata kontrolira: Glavni čvor

Upotrijebljeni naponi: +5 V ili +3.3 V

Maksimalan broj majstora: Neograničeno

Maksimalan broj podređenih: 1008

Maksimalna brzina: Standardni način = 100kbps

Brzi način = 400kbps

Način velike brzine = 3,4 Mbps

Ultra brzi način rada = 5 Mbps

Korak 4: TCA9548A I2C Multiplekser modul

TCA9548A I2C Multipleksni modul
TCA9548A I2C Multipleksni modul
TCA9548A I2C Multipleksni modul
TCA9548A I2C Multipleksni modul
TCA9548A I2C Multipleksni modul
TCA9548A I2C Multipleksni modul

TCA9548A je osmokanalni (dvosmjerni) I2C multiplekser koji omogućuje upravljanje osam zasebnih I2C uređaja pomoću jedne host I2C sabirnice. Potrebno je samo spojiti I2C senzore na SCn / SDn multipleksne sabirnice. Na primjer, ako je u aplikaciji potrebno osam identičnih OLED ekrana, po jedan od svakog ekrana može se povezati na svaki od ovih kanala: 0-7.

Multiplekser se povezuje na VIN, GND, SDA i SCL linije mikrokontrolera. Odbojna ploča prihvaća VIN od 1.65v do 5.5v. I ulazne SDA i SCL linije spojene su na VCC preko 10K pull-up otpornika (Veličina pull-up otpornika je određena količinom kapacitivnosti na I2C vodovima). Multiplekser podržava i normalne (100 kHz) i brze (400 kHz) I2C protokole. Svi I/O pinovi TCA9548A tolerantni su na 5 volti i mogu se koristiti i za prevođenje s visokog na niski ili niskog na visoki napon.

Bilo bi dobro postaviti pull-up otpornike na sve kanale TCA9548A, čak i ako su naponi isti. Razlog tome je interni NMOS prekidač. Ne prenosi dobro visoki napon, s druge strane vrlo dobro prenosi niske napone. TCA9548A se također može koristiti za prevođenje napona, dopuštajući upotrebu različitih napona sabirnice na svakom paru SCn/SDn tako da dijelovi 1,8-V, 2,5-V ili 3,3-V mogu komunicirati s 5-V dijelovima. To se postiže korištenjem vanjskih pull-up otpornika za podizanje sabirnice do željenog napona za master i svaki slave kanal.

Ako mikrokontroler otkrije sukob sabirnice ili drugi nepravilan rad, TCA9548A se može resetirati potvrđivanjem niskog nivoa na pin RESET.

Korak 5:

Image
Image
Image
Image
Image
Image

TCA9548 omogućava jednom mikrokontroleru da komunicira sa do '64 senzora 'sa istom ili različitom I2C adresom dodjeljujući jedinstveni kanal svakoj pod-sabirnici senzora.

Kada govorimo o slanju podataka putem 2 žice na više uređaja, tada nam je potreban način da ih adresiramo. To je isto kao i poštar koji dolazi jednim putem i baca pakete pošte u različite kuće jer na njima ima ispisanih različitih adresa.

Mogli ste imati maksimalno 8 ovih multipleksera spojenih zajedno na 0x70-0x77 adresama kako biste kontrolirali 64 istih I2C adresaranih dijelova. Spajanjem tri bita adrese A0, A1 i A2 na VIN možete dobiti različite kombinacije adresa. Ovako izgleda bajt adrese TCA9548A. Prvih 7 bitova se zajedno formiraju slave adresa. Posljednji bit adrese slave definira operaciju (čitanje ili pisanje) koju treba izvesti. Kad je visoko (1), odabire se čitanje, a nisko (0) odabire operaciju pisanja.

Korak 6: Kako master šalje i prima podatke

Kako master šalje i prima podatke
Kako master šalje i prima podatke
Kako master šalje i prima podatke
Kako master šalje i prima podatke

Slijedi opća procedura za master pristup slave uređaju:

1. Ako master želi poslati podatke podređenom uređaju (NAPIŠE):

-Master-odašiljač šalje START uvjet nakon čega slijede adrese slave-prijemnika i R/W postavljeno na 0

-Master-odašiljač šalje podatke u '8-bitnim upravljačkim registrima' slave-prijemniku kada slave potvrdi da je spreman

-Glavni odašiljač prekida prijenos sa STOP uvjetom

2. Ako master želi primiti ili pročitati podatke od podređenog (READS):

-Master-prijemnik šalje START uvjet nakon čega slijede adrese slave-prijemnika i R/W postavljeno na 1

-Master-prijemnik šalje traženi registar za očitavanje slave-odašiljaču

-Master-prijemnik prima podatke od slave-odašiljača

- Nakon što su primljeni svi bajtovi, Master šalje NACK signalizaciju slave -u da prekine komunikaciju i otpusti sabirnicu

- Glavni prijemnik prekida prijenos sa STOP uvjetom

Sabirnica se smatra neaktivnom ako su i SDA i SCL linije visoke nakon stanja STOP.

Korak 7: Kodirajte

Kod
Kod

Sada, Int kod omogućava početak uključivanjem "Wire" biblioteke i definiranjem adrese multipleksera.

#include "Wire.h"

#include "U8glib.h"

#define MUX_Address 0x70 // TCA9548A Adresa kodera

Zatim moramo odabrati port na koji želimo komunicirati i poslati podatke na njemu pomoću ove funkcije:

void selectI2CChannels (uint8_t i) {

if (i> 7) return;

Wire.beginTransmission (MUX_Address);

Wire.write (1 << i);

Wire.endTransmission ();

}

Zatim ćemo pokrenuti prikaz u odjeljku za postavljanje pozivom "u8g.begin ();" za svaki ekran priključen na MUX "tcaselect (i);"

Nakon inicijalizacije, tada možemo učiniti sve što želimo samo pozivanjem funkcije "tcaselect (i);" gdje je "i" vrijednost multipleksirane sabirnice, a zatim se prema tome šalju podaci i sat.

Korak 8: I2C skener

I2C skener
I2C skener

Za svaki slučaj, ako niste sigurni u vezi s adresom uređaja vašeg I2C štita, pokrenite priloženu šifru 'I2C skenera' kako biste pronašli heksadecimalnu adresu svog uređaja. Kada se učita na Arduino, skica će skenirati I2C mrežu, pokazujući adrese koje odgovaraju.

Korak 9: Ožičenje i demo

Ožičenje i demo
Ožičenje i demo
Ožičenje i demo
Ožičenje i demo

Ožičenje:

Počnimo povezivanjem multipleksera na NodeMCU ploču. Povežite se:

VIN do 5V (ili 3.3V)

GND na masu

SDA na D2 i

Pinovi SCL na D1

Za Arduino ploču povežite:

VIN do 5V (ili 3.3V)

GND na masu

SDA do A4 i

Igle SCL na A5

Nakon što je MUX spojen na mikrokontroler, trebate samo spojiti senzore na SCn / SDn parove.

Pogledajmo sada ovaj brzi demo u kojem sam spojio 8 OLED ekrana na TCA9548A multiplekser. Kako ovi ekrani koriste I2C komunikaciju, komuniciraju s Arduinom koristeći samo 2 pina.

Korak 10: Prednosti i nedostaci

Prednosti i nedostaci
Prednosti i nedostaci

PREDNOSTI

* Za komunikaciju su potrebne samo dvije sabirničke linije (žice)

* Jednostavan odnos master/slave postoji između svih komponenti

* Nema strogih zahtjeva za brzinom prijenosa, na primjer na RS232, master generira sabirnički sat

* Hardver je manje komplikovan od UART -a

* Podržava više master -a i više slave -a

* ACK/NACK bit daje potvrdu da je svaki kadar uspješno prenesen

* I2C je 'prava multi-master magistrala' koja pruža arbitražu i detekciju sudara

* Svaki uređaj spojen na sabirnicu softverski se može adresirati jedinstvenom adresom

* Većina I2C uređaja može komunicirati na 100kHz ili 400kHz

* I²C je prikladan za periferne uređaje gdje su jednostavnost i niski troškovi proizvodnje važniji od brzine

* Dobro poznat i široko korišten protokol

NEDOSTACI

* Sporija brzina prijenosa podataka od SPI

* Veličina okvira podataka ograničena je na 8 bita

* Za implementaciju je potreban složeniji hardver od SPI tehnologije

Preporučuje se: