Mündəricat:

TCA9548A I2C Multiplexer Modulu - Arduino və NodeMCU ilə: 11 addım
TCA9548A I2C Multiplexer Modulu - Arduino və NodeMCU ilə: 11 addım

Video: TCA9548A I2C Multiplexer Modulu - Arduino və NodeMCU ilə: 11 addım

Video: TCA9548A I2C Multiplexer Modulu - Arduino və NodeMCU ilə: 11 addım
Video: Output DC or AC Voltage using MCP4725 DAC with LCD and PWM to Voltage Converter with Arduino 2024, Noyabr
Anonim
Image
Image

Sensorların sabit və ya eyni I2C ünvanına sahib olduğunu anlamaq üçün Arduino -ya iki, üç və ya daha çox I2C Sensoru bağlamaq məcburiyyətində qaldığınız bir vəziyyətə düşdünüzmü? Üstəlik, eyni SDA/SCL pinlərində eyni ünvana malik iki cihaz ola bilməz!

Yaxşı, seçimləriniz nələrdir? Hamısını eyni avtobusda bir-biri ilə danışdırmaq üçün hamısını TCA9548A 1-dən 8-ə qədər I2C multipleksoruna qoyun! TCA9548A Breakout, eyni ünvana malik çoxlu I2C cihazları ilə ünsiyyət qurmağı asanlaşdırır.

Addım 1: Avadanlıq Tələbi

Əhatə olunan mövzular
Əhatə olunan mövzular

Bu dərs üçün bizə lazımdır:

- Çörək lövhəsi

- TCA9548A I2C Multiplexer

- Arduino Uno/Nano nə lazımdırsa

- NodeMCU

- Bir neçə 0.91 və 0.96 I2C OLED displey

- Jumper Kabelləri və

- Kodu yükləmək üçün USB Kabel

Addım 2: əhatə olunan mövzular

Müzakirəmizə I2C texnologiyasının əsaslarını anlamaqla başlayacağıq

Sonra TCA9548A Multiplexer və usta və qulun I2C texnologiyasından istifadə edərək məlumatları necə göndərdiyini və qəbul etdiyini öyrənəcəyik Arduino və NodeMCU istifadə edərək layihəmizdə multipleksorun necə proqramlaşdırılması və istifadə edə biləcəyimizi yoxlayacağıq. 8 I2C OLED displeydən istifadə edərək demo və nəhayət TCA9548A Multiplexer -in üstünlüklərini və dezavantajlarını müzakirə edərək təlimi bitirəcəyik.

Addım 3: I2C Avtobusunun Əsasları

I2C Avtobusunun əsasları
I2C Avtobusunun əsasları
I2C Avtobusunun əsasları
I2C Avtobusunun əsasları
I2C Avtobusunun əsasları
I2C Avtobusunun əsasları

I-squared-C (I²C) və ya I2C tələffüz edilən İnteqrasiya edilmiş Dövrə, birdən çox prosessor və sensorlar arasında ünsiyyət üçün istifadə olunan iki telli bir avtobus texnologiyasıdır (əslində 4 telli də VCC və Ground lazımdır).

İki tel aşağıdakılardır:

* SDA - Serial Məlumatlar (məlumat xətti) və

* SCL - Serial Saat (saat xətti)

Unutmayın ki, bu xətlərin hər ikisi 'sinxron' 'iki istiqamətli' 'açıq drenaj' 'dir və' rezistorlar ilə çəkilir '.

I2C avtobus texnologiyası, əslində 80 -ci illərin əvvəllərində Philips Semiconductors tərəfindən eyni elektron lövhədə yerləşən komponentlər arasında asan ünsiyyət qurmaq üçün hazırlanmışdır.

I2C ilə birdən çox qulu tək bir mastera (SPI kimi) bağlaya bilərsiniz və ya tək və ya birdən çox qulu idarə edən birdən çox ustaya sahib ola bilərsiniz. Həm ağalar, həm də qullar məlumat ötürə və ala bilərlər. Beləliklə, I2C avtobusundakı bir cihaz bu dörd vəziyyətdən birində ola bilər:

* Master ötürmə - master node bir qula məlumat göndərir* Master qəbul edir - master node bir quldan məlumat alır

* Slave ötürülməsi - kölə qovşaq məlumatları ustaya göndərir

* Qul qəbulu - kölə qovşağı ustadan məlumat alır

I2C, 'qısa məsafə' 'serial ünsiyyət protokoludur', buna görə məlumatlar tək tel və ya SDA xətti boyunca 'bit-by-bit' ötürülür. Bitlərin çıxışı, master ilə qul arasında 'paylaşılan' bir saat siqnalı ilə bitlərin seçilməsi ilə sinxronlaşdırılır. Saat siqnalı həmişə usta tərəfindən idarə olunur. Usta saatı yaradır və qullarla ünsiyyətə başlayır.

Beləliklə, yekunlaşdırmaq üçün>

İstifadə olunan tellərin sayı: 2

Sinxron və ya Asenkron: Sinxron

Serial və ya Paralel: Serial

Saat Siqnalı tərəfindən idarə olunur: Master Node

İstifadə olunan gərginliklər: +5 V və ya +3.3 V

Maksimum Magistr sayı: Limitsiz

Maksimum Qul sayı: 1008

Maksimum Sürət: Standart Mod = 100kbps

Sürətli rejim = 400kbps

Yüksək Sürət rejimi = 3.4 Mbps

Ultra sürətli rejim = 5 Mbit / s

Addım 4: TCA9548A I2C Multiplexer Modulu

TCA9548A I2C Multiplexer Modulu
TCA9548A I2C Multiplexer Modulu
TCA9548A I2C Multiplexer Modulu
TCA9548A I2C Multiplexer Modulu
TCA9548A I2C Multiplexer Modulu
TCA9548A I2C Multiplexer Modulu

TCA9548A, səkkiz ayrı I2C cihazının bir ana I2C avtobusu ilə idarə olunmasına imkan verən səkkiz kanallı (iki istiqamətli) I2C multiplekseridir. I2C sensorlarını SCn / SDn multipleksli avtobuslara bağlamaq kifayətdir. Məsələn, bir tətbiqdə səkkiz eyni OLED displeyə ehtiyac olarsa, hər ekrandan biri bu kanalların hər birinə qoşula bilər: 0-7.

Multiplexer mikro nəzarətçinin VIN, GND, SDA və SCL xətlərinə qoşulur. Çıxış lövhəsi 1.65v -dən 5.5v -ə qədər VIN qəbul edir. Həm giriş SDA, həm də SCL xətləri VCC-yə 10K çəkmə müqaviməti vasitəsi ilə bağlanır (çəkmə müqavimətinin ölçüsü I2C xətlərindəki tutum miqdarı ilə müəyyən edilir). Multiplexer həm normal (100 kHz), həm də sürətli (400 kHz) I2C protokollarını dəstəkləyir. TCA9548A-nın bütün I/O pinləri 5 volt tolerantdır və yüksəkdən aşağıya və ya aşağıdan yüksək gərginliyə tərcümə etmək üçün də istifadə edilə bilər.

Gərginlik eyni olsa belə, TCA9548A-nın bütün kanallarına çəkmə rezistorları qoymaq yaxşı bir fikirdir. Bunun səbəbi daxili NMOS açarıdır. Yüksək gərginliyi çox yaxşı ötürmür, digər tərəfdən də aşağı gərginliyi çox yaxşı ötürür. TCA9548A, 1.8-V, 2.5-V və ya 3.3-V hissələrinin 5-V hissələri ilə əlaqə qura biləcəyi hər SCn/SDn cütlüyündə fərqli avtobus gərginliklərinin istifadəsinə imkan verən Gərginlik Tərcüməsi üçün də istifadə edilə bilər. Bu, avtobusu usta və hər bir qul kanalı üçün istənilən gərginliyə qaldırmaq üçün xarici çəkmə rezistorlarından istifadə etməklə əldə edilir.

Mikro nəzarətçi bir avtobus toqquşması və ya digər düzgün olmayan əməliyyat aşkar edərsə, RESET pininə aşağı endirərək TCA9548A sıfırlana bilər.

Addım 5:

Şəkil
Şəkil
Şəkil
Şəkil
Şəkil
Şəkil

TCA9548, tək bir mikro nəzarətçiyə, hər bir sensor qulluq alt avtobusuna bənzərsiz bir kanal təyin etməklə eyni və ya fərqli I2C ünvanı ilə '64 sensora' qədər əlaqə qurmağa imkan verir.

Birdən çox qurğuya 2 tel üzərindən məlumat göndərmək haqqında danışarkən, onları həll etmək üçün bir yol lazımdır. Poçt işçisinin tək bir yolda gəlməsi və üzərində fərqli ünvanlar yazıldığı üçün poçt paketlərini fərqli evlərə atması ilə eynidir.

Eyni I2C ünvanlı hissələrin 64-nü idarə etmək üçün 0x70-0x77 ünvanlarında bir-birinə bağlı olan maksimum 8-dən çox ola bilər. Üç ünvan bitini A0, A1 və A2 -ni VIN -ə bağlayaraq fərqli ünvan birləşmələrini əldə edə bilərsiniz. TCA9548A -nın ünvan baytı belə görünür. İlk 7 bit birləşərək kölə ünvanı meydana gətirir. Kölə ünvanın son biti, yerinə yetiriləcək əməliyyatı (oxumaq və ya yazmaq) təyin edir. Yüksək (1) olduqda oxu seçilir, aşağı (0) isə yazma əməliyyatını seçir.

Addım 6: Usta Məlumatları Necə Göndərir və Alır

Usta Məlumatları Necə Göndərir və Alır
Usta Məlumatları Necə Göndərir və Alır
Usta Məlumatları Necə Göndərir və Alır
Usta Məlumatları Necə Göndərir və Alır

Bir usta üçün bir qul cihazına daxil olmaq üçün ümumi prosedur budur:

1. Usta bir qula məlumat göndərmək istəyirsə (YAZIR):

-Master-ötürücü, START şərtini göndərir, sonra qul qəbuledicinin ünvanlarını və R/W-ni 0-a təyin edir.

-Master-ötürücü, qulun hazır olduğunu qəbul etdikdə '8 bit nəzarət qeydlərində' məlumatları kölə alıcıya göndərir.

-Master-ötürücü STOP şərti ilə köçürməni dayandırır

2. Usta bir quldan məlumat almaq və ya oxumaq istəyirsə (READS):

-Master-alıcı, START şərtini göndərir, sonra qul qəbuledicisinin ünvanlarını və R/W-ni 1-ə təyin edir.

-Master-alıcı, tələb olunan reyestri kölə ötürücüyə oxumaq üçün göndərir

-Master qəbuledici məlumatı kölə ötürücüdən alır

- Bütün baytlar alındıqdan sonra Usta rabitəni dayandırmaq və avtobusu buraxmaq üçün qula NACK siqnalı göndərir

- Master-alıcı STOP şərti ilə köçürməni dayandırır

Bir STOP vəziyyətindən sonra həm SDA, həm də SCL xətləri yüksək olarsa bir avtobus boş sayılır.

Addım 7: Kod

Kod
Kod

İndi Int kodu, "Tel" kitabxanasını daxil etməklə və multipleksorların ünvanını təyin etməklə başlamağa imkan verir.

#"Wire.h" daxil edin

#"U8glib.h" daxil edin

#dex MUX_Address 0x70 // TCA9548A Encoders ünvanını təyin edin

Sonra bu funksiyadan istifadə edərək ünsiyyət qurmaq istədiyimiz portu seçməliyik və üzərindəki məlumatları göndərməliyik:

etibarsız selectI2CChannels (uint8_t i) {

əgər (i> 7) qayıtsa;

Wire.beginTransmission (MUX_Address);

Wire.write (1 << i);

Wire.endTransmission ();

}

Sonra, "u8g.begin ();" çağıraraq ekranı quraşdırma bölməsində işə salacağıq. MUX -ə qoşulan hər bir ekran üçün "tcaselect (i);"

Başladıqdan sonra, "tcaselect (i);" funksiyasını çağıraraq istədiyimizi edə bilərik. burada "i" multipleksli avtobusun dəyəridir və sonra məlumatları və saatı buna uyğun olaraq göndərir.

Addım 8: I2C Skaner

I2C Skaner
I2C Skaner

Yalnız I2C qalxanınızın cihaz ünvanından əmin deyilsinizsə, cihazınızın onaltılıq ünvanını tapmaq üçün əlavə edilmiş 'I2C Skaner' kodunu işlədin. Arduino -ya yükləndikdə, eskiz cavab verən ünvanları göstərən I2C şəbəkəsini tarayacaq.

Addım 9: Kablolama və Demo

Kablolama və Demo
Kablolama və Demo
Kablolama və Demo
Kablolama və Demo

Kablolama:

Multiplekseri NodeMCU lövhəsinə bağlayaraq başlayaq. Qoşulun:

VIN - 5V (və ya 3.3V)

GND yerə

SDA -dan D2 və

SCL -dən D1 sancaqlarına uyğun olaraq

Arduino lövhəsi üçün qoşulun:

VIN - 5V (və ya 3.3V)

GND yerə

SDA A4 və

SCL -dən A5 -ə qədər sancaqlar

MUX mikro nəzarətçiyə bağlandıqdan sonra sensorları SCn / SDn cütlərinə bağlamanız kifayətdir.

İndi 8 OLED displeyi TCA9548A Multiplexer -ə bağladığım bu sürətli demoya baxaq. Bu ekranlar I2C ünsiyyətindən istifadə etdikləri üçün Arduino ilə cəmi 2 sancaqdan istifadə edərək əlaqə qururlar.

Addım 10: Üstünlüklər və Dezavantajlar

Yaxşı və pis tərəfləri
Yaxşı və pis tərəfləri

AVANTAJLAR

* Rabitə yalnız iki avtobus xətti (tel) tələb edir

* Bütün komponentlər arasında sadə bir usta/qul münasibətləri mövcuddur

* RS232 ilə olduğu kimi, heç bir ciddi baud dərəcəsi tələbi yoxdur, usta bir avtobus saatı yaradır

* Avadanlıq UART -lardan daha az mürəkkəbdir

* Çoxlu ustaları və çoxlu qulları dəstəkləyir

* ACK/NACK biti hər bir çərçivənin uğurla köçürüldüyünü təsdiqləyir

* I2C, arbitraj və toqquşma aşkarlanmasını təmin edən 'əsl çox master avtobus' dur

* Avtobusa qoşulan hər bir cihaz, unikal bir ünvanla proqramlaşdırıla bilər

* I2C cihazlarının çoxu 100kHz və ya 400kHz -də əlaqə qura bilir

* I²C, sadəlik və aşağı istehsal xərcinin sürətdən daha vacib olduğu ətraf qurğular üçün uyğundur

* Tanınmış və geniş istifadə olunan protokol

Dezavantajlar

* SPI -dən daha yavaş məlumat ötürmə sürəti

* Məlumat çərçivəsinin ölçüsü 8 bit ilə məhdudlaşır

* SPI texnologiyasından daha mürəkkəb aparata ehtiyac var

Tövsiyə: