Sadržaj:

TCA9548A I2C multipleksni modul - s Arduinom i NodeMCU: 11 koraka
TCA9548A I2C multipleksni modul - s Arduinom i NodeMCU: 11 koraka

Video: TCA9548A I2C multipleksni modul - s Arduinom i NodeMCU: 11 koraka

Video: TCA9548A I2C multipleksni modul - s Arduinom i NodeMCU: 11 koraka
Video: Output DC or AC Voltage using MCP4725 DAC with LCD and PWM to Voltage Converter with Arduino 2024, Studeni
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. Štoviše, ne možete imati dva uređaja s 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 bi svi međusobno razgovarali na istoj sabirnici! TCA9548A Breakout omogućuje komunikaciju s više I2C uređaja koji imaju istu adresu, što olakšava sučelje s njima.

Korak 1: Zahtjevi hardvera

Tema završena
Tema završena

Za ovaj vodič potrebni su nam:

- Oglasna ploča

- TCA9548A I2C multiplekser

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

- NodeMCU

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

- Kablovi za skakače, 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 pomoću Arduina i NodeMCU -a Zatim ću vam pokazati brzo demo pomoću 8 I2C OLED zaslona i na kraju ćemo završiti vodič raspravljajući o prednostima i nedostacima multipleksera TCA9548A

Korak 3: Osnove I2C sabirnice

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

Između integriranog kruga izražen 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 (podatkovna linija) i

* SCL - Serijski sat (linija sata)

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

Tehnologiju sabirnice I2C izvorno su osmislili 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 - podređeni čvor šalje podatke masteru

* Slave prijem - robni čvor prima podatke od nadređenog

I2C je "serijski komunikacijski protokol" na kratke udaljenosti, pa se podaci prenose "bit-by-bit" duž jedne žice ili SDA linije. Izlaz bitova sinkroniziran je s uzorkovanjem bitova pomoću takta 'podijeljenog' signala između glavnog i podređenog. Signalom sata uvijek upravlja glavni uređaj. Master generira sat i započinje komunikaciju s robovima.

Dakle, da rezimiramo>

Broj upotrijebljenih žica: 2

Sinkrono ili asinkrono: Sinkrono

Serijski ili paralelni: serijski

Signal sata kontrolira: Glavni čvor

Upotrijebljeni naponi: +5 V ili +3.3 V

Maksimalan broj majstora: Neograničeno

Maksimalan broj robova: 1008

Maksimalna brzina: standardni način rada = 100 kbps

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 s jedne host I2C sabirnice. Samo trebate spojiti I2C senzore na SCn / SDn multipleksne sabirnice. Na primjer, ako je u aplikaciji potrebno osam identičnih OLED zaslona, jedan od svakog zaslona može se povezati na svaki od ovih kanala: 0-7.

Multiplekser se spaja 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 putem 10K pull-up otpornika (Veličina pull-up otpornika određena je količinom kapacitivnosti na I2C vodovima). Multiplekser podržava i normalne (100 kHz) i brze (400 kHz) I2C protokole. Svi I/O pinovi TCA9548A toleriraju 5 volti i također se mogu koristiti za prevođenje s visokih na niske ili niske na visoke napone.

Bilo bi dobro postaviti pull-up otpornike na sve kanale TCA9548A, čak i ako su naponi isti. Razlog tome je unutarnji 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.

5. korak:

Slika
Slika
Slika
Slika
Slika
Slika

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

Kada govorimo o slanju podataka preko 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 jednom cestom 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 dijelova s I2C adresama. Spajanjem tri adresna bita A0, A1 i A2 na VIN možete dobiti različite kombinacije adresa. Ovako izgleda bajt adrese TCA9548A. Prvih 7 bitova zajedno se tvore slave adresa. Posljednji bit adrese slave definira operaciju (čitanje ili pisanje) koju treba izvesti. Kad je visoko (1), odabire se čitanje, dok 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ći postupak za master da pristupi slave uređaju:

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

-Glavni 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 uvjetom STOP

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

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

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

-Glavni prijemnik prima podatke od podređenog 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

Autobus se smatra neaktivnim ako su i SDA i SCL linije visoke nakon stanja STOP.

Korak 7: Kodirajte

Kodirati
Kodirati

Sada, Int kod omogućuje početak uključivanjem "Wire" knjižnice i definiranjem adrese multipleksera.

#include "Wire.h"

#uključuje "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 zaslon 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ženi kôd '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 spajanjem multipleksera na NodeMCU ploču. Spojiti:

VIN do 5V (ili 3.3V)

GND na uzemljenje

SDA na D2 i

Pinovi SCL na D1

Za Arduino ploču spojite:

VIN do 5V (ili 3.3V)

GND na uzemljenje

SDA na A4 i

SCL na A5 pinove

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 zaslona na TCA9548A multiplekser. Kako ovi zasloni koriste I2C komunikaciju, komuniciraju s Arduinom koristeći samo 2 pina.

Korak 10: Prednosti i nedostaci

Prednosti i nedostatci
Prednosti i nedostatci

PREDNOSTI

* Za komunikaciju su potrebne samo dvije autobusne linije (žice)

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

* Nema strogih zahtjeva brzine prijenosa, na primjer kod RS232, master generira sabirnički sat

* Hardver je manje kompliciran od UART -a

* Podržava više gospodara i više robova

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

* I2C je 'prava multi-master sabirnica' 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 poznati i široko korišteni protokol

NEDOSTACI

* Sporija brzina prijenosa podataka od SPI -a

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

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

Preporučeni: