Talaan ng mga Nilalaman:

TCA9548A I2C Multiplexer Module - Sa Arduino at NodeMCU: 11 Mga Hakbang
TCA9548A I2C Multiplexer Module - Sa Arduino at NodeMCU: 11 Mga Hakbang

Video: TCA9548A I2C Multiplexer Module - Sa Arduino at NodeMCU: 11 Mga Hakbang

Video: TCA9548A I2C Multiplexer Module - Sa Arduino at NodeMCU: 11 Mga Hakbang
Video: Output DC or AC Voltage using MCP4725 DAC with LCD and PWM to Voltage Converter with Arduino 2024, Nobyembre
Anonim
Image
Image

Naranasan mo ba ang isang sitwasyon kung saan kailangan mong i-wire ang dalawa, tatlo o higit pang I2C Sensors sa iyong Arduino upang mapagtanto na ang mga sensor ay mayroong isang nakapirming o parehong I2C address. Bukod dito, hindi ka maaaring magkaroon ng dalawang mga aparato na may parehong address sa parehong mga SDA / SCL na pin!

Kaya, ano ang iyong mga pagpipilian? Ilagay ang lahat sa TCA9548A 1-to-8 I2C multiplexer upang maiusap silang lahat sa iisang bus! Ang TCA9548A Breakout ay nagbibigay-daan sa komunikasyon sa maraming mga aparato ng I2C na may parehong address na ginagawang simple upang mag-interface sa kanila.

Hakbang 1: Kinakailangan sa Hardware

Saklaw na Mga Paksa
Saklaw na Mga Paksa

Para sa tutorial na ito kailangan namin:

- Breadboard

- TCA9548A I2C Multiplexer

- Arduino Uno / Nano anuman ang madaling gamitin

- NodeMCU

- Ilang 0.91 at 0.96 I2C OLED ay nagpapakita

- Mga Jumper Cables, at

- USB Cable upang mai-upload ang code

Hakbang 2: Saklaw na Mga Paksa

Sisimulan namin ang aming talakayan sa pamamagitan ng pag-unawa sa mga pangunahing kaalaman ng teknolohiya ng I2C

Pagkatapos ay malalaman natin ang tungkol sa TCA9548A Multiplexer at kung paano ang master at alipin ay nagpapadala at tumatanggap ng data gamit ang I2C na teknolohiya Pagkatapos ay susuriin namin kung paano namin mai-program at magagamit ang multiplexer sa aming proyekto gamit ang Arduino at NodeMCU Susunod, ipapakita ko sa iyo ang isang mabilis demo gamit ang 8 I2C OLED display at sa wakas tatapusin namin ang tutorial sa pamamagitan ng pagtalakay sa mga pakinabang at kawalan ng TCA9548A Multiplexer

Hakbang 3: Mga Pangunahing Kaalaman ng I2C Bus

Mga pangunahing kaalaman sa I2C Bus
Mga pangunahing kaalaman sa I2C Bus
Mga pangunahing kaalaman sa I2C Bus
Mga pangunahing kaalaman sa I2C Bus
Mga pangunahing kaalaman sa I2C Bus
Mga pangunahing kaalaman sa I2C Bus

Binibigkas ng Inter-integrated Circuit na I-squared-C (I CC) o I2C ay isang dalawang teknolohiya ng wire bus (na talagang 4 na wires sapagkat kailangan mo rin ang VCC at Ground) na ginagamit para sa komunikasyon sa pagitan ng maraming mga processor at sensor.

Ang dalawang wires ay:

* SDA - Serial Data (linya ng data) at

* SCL - Serial Clock (linya ng orasan)

Tandaan, ang parehong mga linyang ito ay 'magkasabay' 'bidirectional' 'open-drain' at 'hinugot sa mga resistor'.

Ang teknolohiya ng I2C bus ay orihinal na idinisenyo ng Philips Semiconductors noong unang bahagi ng 80s upang payagan ang madaling komunikasyon sa pagitan ng mga sangkap na naninirahan sa parehong circuit board.

Sa I2C, maaari mong ikonekta ang maraming mga alipin sa isang solong master (tulad ng SPI) o maaari kang magkaroon ng maraming mga masters na kumokontrol sa solong, o maraming mga alipin. Ang parehong mga masters at alipin ay maaaring magpadala at makatanggap ng data. Kaya, ang isang aparato sa I2C bus ay maaaring nasa isa sa apat na estado na ito:

* Maghahatid ng master - ang master node ay nagpapadala ng data sa isang alipin * Natanggap ng Master - ang master node ay tumatanggap ng data mula sa isang alipin

* Paghahatid ng alipin - ang node ng alipin ay nagpapadala ng data sa master

* Tumanggap ng alipin - ang node ng alipin ay tumatanggap ng data mula sa master

Ang I2C ay isang 'maikling distansya' 'serial protocol ng komunikasyon', kaya ang data ay inililipat ng 'bit-by-bit' kasama ang solong kawad o linya ng SDA. Ang output ng mga bits ay na-synchronize sa sampling ng mga piraso ng isang signal ng orasan na 'ibinahagi' sa pagitan ng master at ng alipin. Ang signal ng orasan ay laging kinokontrol ng master. Ang Master ay bumubuo ng orasan at nagpapasimula ng komunikasyon sa mga alipin.

Kaya, upang buuin ito>

Bilang ng mga Wires na ginamit: 2

Kasabay o Asynchronous: Kasabay

Serial o Parallel: Serial

Ang Clock Signal ay kinokontrol ng: Master Node

Mga ginamit na boltahe: +5 V o +3.3 V

Maximum na bilang ng mga Masters: Walang limitasyong

Maximum na bilang ng mga Alipin: 1008

Pinakamataas na Bilis: Karaniwang Mode = 100 kbps

Mabilis na Mode = 400 kbps

High Speed Mode = 3.4 Mbps

Ultra Fast Mode = 5 Mbps

Hakbang 4: TCA9548A I2C Multiplexer Module

TCA9548A I2C Multiplexer Module
TCA9548A I2C Multiplexer Module
TCA9548A I2C Multiplexer Module
TCA9548A I2C Multiplexer Module
TCA9548A I2C Multiplexer Module
TCA9548A I2C Multiplexer Module

Ang TCA9548A ay isang eight-channel (bidirectional) I2C multiplexer na nagbibigay-daan sa walong magkakahiwalay na I2C na aparato upang makontrol ng isang solong host na I2C bus. Kailangan mo lang i-wire ang mga sensor ng I2C sa mga SCn / SDn na multiplexed na bus. Halimbawa, kung kinakailangan ang walong magkaparehong pagpapakita ng OLED sa isang application, ang isa sa bawat display ay maaaring konektado sa bawat isa sa mga channel na ito: 0-7.

Ang Multiplexer ay kumokonekta sa mga linya ng VIN, GND, SDA at SCL ng micro-controller. Tumatanggap ang breakout board ng VIN mula 1.65v hanggang 5.5v. Ang parehong mga linya ng input ng SDA at SCL ay konektado sa VCC sa pamamagitan ng isang resistor na 10K na pull-up (Ang laki ng resistor na pull-up ay natutukoy ng dami ng capacitance sa mga linya ng I2C). Sinusuportahan ng multiplexer ang parehong normal (100 kHz) at mabilis (400 kHz) na mga I2C na protokol. Ang lahat ng mga I / O na pin ng TCA9548A ay 5-volt tolerant at maaari ding magamit upang isalin mula sa mataas hanggang sa mababa o mababa hanggang sa mataas na voltages.

Magandang ideya na maglagay ng mga pull-up resistor sa lahat ng mga channel ng TCA9548A, kahit na pareho ang mga voltages. Ang dahilan para dito ay dahil sa panloob na switch ng NMOS. Hindi ito mahusay na nagpapadala ng mataas na boltahe, sa kabilang banda ay mahusay na nagpapadala ng mababang boltahe. Ang TCA9548A ay maaari ding gamitin para sa Pagsasalin ng Boltahe, na pinapayagan ang paggamit ng iba't ibang mga boltahe ng bus sa bawat pares ng SCn / SDn na tulad ng 1.8-V, 2.5-V, o mga bahagi ng 3.3-V ay maaaring makipag-usap sa mga 5-V na bahagi. Nakamit ito sa pamamagitan ng paggamit ng panlabas na pull-up resistors upang hilahin ang bus hanggang sa nais na boltahe para sa master at bawat alipin na channel.

Kung ang micro-controller ay nakakita ng isang salungatan sa bus o iba pang hindi wastong operasyon ang TCA9548A ay maaaring i-reset sa pamamagitan ng paggiit ng isang mababa sa RESET pin.

Hakbang 5:

Larawan
Larawan
Larawan
Larawan
Larawan
Larawan

Pinapayagan ng TCA9548 ang isang solong micro-controller na makipag-usap nang hanggang sa '64 sensor 'lahat na may pareho o magkakaibang I2C address sa pamamagitan ng pagtatalaga ng isang natatanging channel sa bawat sensor na sub-bus ng alipin.

Kapag pinag-uusapan natin ang tungkol sa pagpapadala ng data sa higit sa 2 mga wire sa maraming mga aparato kailangan namin ng isang paraan upang matugunan ang mga ito. Ito ay kapareho ng kartero na dumarating sa iisang kalsada at ihuhulog ang mga mail packet sa iba't ibang mga bahay dahil mayroon silang iba't ibang mga address na nakasulat sa kanila.

Maaari kang magkaroon ng max 8 ng mga multiplexer na ito na nakakonekta sa 0x70-0x77 na mga address upang makontrol ang 64 ng parehong mga bahagi ng I2C na hinarap. Sa pamamagitan ng pagkonekta sa tatlong mga address bit A0, A1 at A2 sa VIN maaari kang makakuha ng iba't ibang kumbinasyon ng mga address. Ganito ang hitsura ng isang address byte ng TCA9548A. Pinagsama ang mga unang 7-bit upang mabuo ang address ng alipin. Ang huling piraso ng address ng alipin ay tumutukoy sa operasyon (basahin o isulat) na isasagawa. Kapag ito ay mataas (1), ang isang nabasa ay napili, habang ang isang mababa (0) ay pipili ng isang operasyon ng pagsusulat.

Hakbang 6: Paano Nagpadala at Nakakatanggap ng Data ang Master

Paano Ipinapadala at Natatanggap ng Master ang Data
Paano Ipinapadala at Natatanggap ng Master ang Data
Paano Ipinapadala at Natatanggap ng Master ang Data
Paano Ipinapadala at Natatanggap ng Master ang Data

Ang sumusunod ay ang pangkalahatang pamamaraan para sa isang master na ma-access ang isang aparato ng alipin:

1. Kung nais ng isang master na magpadala ng data sa isang alipin (WRITES):

- Nagpapadala ang Master-transmitter ng kundisyon ng SIMULA na sinusundan ng mga address ng aliping-tatanggap at R / W na nakatakda sa 0

- Nagpapadala ang Master-transmitter ng data sa '8-bit control register' sa slave-receiver kapag kinilala ng alipin na handa na ito

- Tinatapos ng Master-transmitter ang paglipat na may kundisyon ng STOP

2. Kung ang isang master ay nais na makatanggap o magbasa ng data mula sa isang alipin (BASAHIN):

- Ang Master-receiver ay nagpapadala ng kundisyon ng SIMULA na sinusundan ng mga address ng aliping-tatanggap at R / W na nakatakda sa 1

- Ipinadala ng Master-receiver ang hiniling na rehistro upang mabasa sa transmiter ng alipin

- Ang Master-receiver ay tumatanggap ng data mula sa slave-transmitter

- Kapag natanggap ang lahat ng mga byte ay nagpapadala ang NACK ng pagbibigay ng senyas sa alipin upang ihinto ang mga komunikasyon at palabasin ang bus

- Tinatapos ng Master-receiver ang paglipat na may kundisyon ng STOP

Ang isang bus ay itinuturing na walang ginagawa kung ang parehong mga linya ng SDA at SCL ay mataas pagkatapos ng kundisyon ng STOP.

Hakbang 7: Code

Code
Code

Ngayon, Int magsisimula ang code sa pamamagitan ng pagsasama ng "Wire" library at sa pamamagitan ng pagtukoy sa multiplexers address.

# isama ang "Wire.h"

# isama ang "U8glib.h"

#define MUX_Address 0x70 // TCA9548A Encoders address

Pagkatapos ay kailangan naming piliin ang port na nais naming makipag-usap at ipadala ang data dito gamit ang pagpapaandar na ito:

walang bisa selectI2CChannels (uint8_t i) {

kung (i> 7) bumalik;

Wire.beginTransmission (MUX_Address);

Wire.write (1 << i);

Wire.endTransmission ();

}

Susunod ay isisimulan namin ang pagpapakita sa seksyon ng pag-setup sa pamamagitan ng pagtawag sa "u8g.begin ();" para sa bawat display na nakakabit sa MUX "tcaselect (i);"

Kapag napasimulan, maaari na nating gawin ang nais natin sa pamamagitan lamang ng pagtawag sa pagpapaandar na "tcaselect (i);" kung saan ang "i" ay ang halaga ng multiplexed bus at pagkatapos ay pagpapadala ng data at orasan nang naaayon.

Hakbang 8: I2C Scanner

I2C Scanner
I2C Scanner

Kung sakali kung hindi ka sigurado tungkol sa address ng aparato ng iyong kalasag I2C, pagkatapos ay patakbuhin ang nakalakip na 'I2C Scanner' code upang hanapin ang hex address ng iyong aparato. Kapag na-load sa isang Arduino, i-scan ng sketch ang I2C network, ipinapakita ang mga address na tumutugon.

Hakbang 9: Mga Kable at Demo

Mga Kable at Demo
Mga Kable at Demo
Mga Kable at Demo
Mga Kable at Demo

Mga kable:

Hinahayaan nating magsimula sa pamamagitan ng pagkonekta ng multiplexer sa isang board ng NodeMCU. Kumonekta:

VIN hanggang 5V (o 3.3V)

GND sa lupa

SDA hanggang D2 at

SCL sa D1 na pin ayon sa pagkakabanggit

Para sa isang Arduino board na kumonekta:

VIN hanggang 5V (o 3.3V)

GND sa lupa

SDA hanggang A4 at

SCL hanggang A5 na mga pin ayon sa pagkakabanggit

Kapag ang MUX ay nai-hook up sa micro-controller, kailangan mo lamang ikonekta ang mga sensor sa mga pares na SCn / SDn.

Ngayon, hayaan mong suriin ang mabilis na demo na ito kung saan nakakonekta ko ang 8 OLED display sa TCA9548A Multiplexer. Tulad ng mga ipinapakitang ito ay gumagamit ng komunikasyon ng I2C, nakikipag-usap sila sa Arduino gamit lamang ang 2 mga pin.

Hakbang 10: Mga Kalamangan at Kalamangan

Mga Kalamangan at Kalamangan
Mga Kalamangan at Kalamangan

MGA KAGAMITAN

* Ang komunikasyon ay nangangailangan lamang ng dalawang linya ng bus (mga wire)

* Ang isang simpleng relasyon sa master / alipin ay umiiral sa pagitan ng lahat ng mga bahagi

* Walang mahigpit na mga kinakailangan sa rate ng baud tulad ng halimbawa sa RS232, bumubuo ang master ng isang orasan ng bus

* Ang hardware ay hindi gaanong kumplikado kaysa sa mga UART

* Sinusuportahan ang maraming mga masters at maraming mga alipin

* Ang ACK / NACK bit ay nagbibigay ng kumpirmasyon na ang bawat frame ay matagumpay na nailipat

* Ang I2C ay isang 'totoong multi-master bus' na nagbibigay ng arbitrasyon at pagtuklas ng banggaan

* Ang bawat aparato na nakakonekta sa bus ay addressable ng software ng isang natatanging address

* Karamihan sa mga aparato ng I2C ay maaaring makipag-usap sa 100kHz o 400kHz

* Ang I²C ay angkop para sa mga peripheral kung saan ang pagiging simple at mababang gastos sa pagmamanupaktura ay mas mahalaga kaysa sa bilis

* Kilalang at malawak na ginamit na protokol

KAPANGYARIHAN

* Mas mabagal na rate ng paglipat ng data kaysa sa SPI

* Ang laki ng frame ng data ay limitado sa 8 piraso

* Mas kumplikadong hardware na kinakailangan upang ipatupad kaysa sa teknolohiya ng SPI

Inirerekumendang: