İçindekiler:

TCA9548A I2C Çoklayıcı Modül - Arduino ve NodeMCU ile: 11 Adım
TCA9548A I2C Çoklayıcı Modül - Arduino ve NodeMCU ile: 11 Adım

Video: TCA9548A I2C Çoklayıcı Modül - Arduino ve NodeMCU ile: 11 Adım

Video: TCA9548A I2C Çoklayıcı Modül - Arduino ve NodeMCU ile: 11 Adım
Video: Home Automation: Control 16 channel relay with CD74HC4067 Multiplexer and Arduino with 6 wires 2024, Kasım
Anonim
Image
Image

Sensörlerin sabit veya aynı I2C adresine sahip olduğunu anlamak için Arduino'nuza iki, üç veya daha fazla I2C Sensörü bağlamanız gereken bir duruma hiç girdiniz mi? Üstelik aynı adrese sahip iki cihaz aynı SDA/SCL pinlerinde olamaz!

Öyleyse seçeneklerin neler? Hepsinin aynı veri yolu üzerinde birbirleriyle konuşmasını sağlamak için hepsini TCA9548A 1'den 8'e I2C çoklayıcıya koyun! TCA9548A Breakout, aynı adrese sahip birden fazla I2C cihazı ile iletişim kurmayı kolaylaştırarak onlarla arayüz oluşturmayı kolaylaştırır.

Adım 1: Donanım Gereksinimi

İşlenmiş konular
İşlenmiş konular

Bu eğitim için ihtiyacımız olan:

- Ekmek tahtası

- TCA9548A I2C Çoklayıcı

- Arduino Uno/Nano ne işe yararsa

- DüğümMCU

- Az sayıda 0,91 ve 0,96 I2C OLED ekran

- Atlama Kabloları ve

- Kodu yüklemek için USB Kablosu

2. Adım: İşlenen Konular

Tartışmamıza I2C teknolojisinin temellerini anlayarak başlayacağız.

Ardından TCA9548A Multiplexer ve master ile slave'in I2C teknolojisini kullanarak nasıl veri gönderip aldığını öğreneceğiz Ardından Arduino ve NodeMCU kullanarak projemizde multiplexer'ı nasıl programlayabileceğimizi ve kullanabileceğimizi göreceğiz. 8 I2C OLED ekran kullanan demo ve son olarak TCA9548A Çoklayıcının avantaj ve dezavantajlarını tartışarak öğreticiyi bitireceğiz

Adım 3: I2C Veri Yolunun Temelleri

I2C Veri Yolunun Temelleri
I2C Veri Yolunun Temelleri
I2C Veri Yolunun Temelleri
I2C Veri Yolunun Temelleri
I2C Veri Yolunun Temelleri
I2C Veri Yolunun Temelleri

Inter-Integrated Circuit olarak telaffuz edilen I-squared-C (I²C) veya I2C, birden fazla işlemci ve sensör arasında iletişim için kullanılan iki kablolu bir veri yolu teknolojisidir (aslında 4 telli çünkü VCC ve Toprağa da ihtiyacınız vardır).

İki tel şunlardır:

* SDA - Seri Veri (veri hattı) ve

* SCL - Seri Saat (saat hattı)

Unutmayın, bu hatların her ikisi de 'senkronize' 'çift yönlü' 'açık tahliye' ve 'dirençlerle yukarı çekilir'.

I2C veri yolu teknolojisi, 80'lerin başında, aynı devre kartı üzerinde bulunan bileşenler arasında kolay iletişim sağlamak için orijinal olarak Philips Semiconductors tarafından tasarlandı.

I2C ile, tek bir master'a (SPI gibi) birden fazla slave bağlayabilir veya tek veya çoklu slave'leri kontrol eden birden fazla master'a sahip olabilirsiniz. Hem master hem de slave veri iletebilir ve alabilir. Dolayısıyla, I2C veri yolundaki bir cihaz şu dört durumdan birinde olabilir:

* Ana iletim – ana düğüm bir bağımlıya veri gönderiyor* Ana alma – ana düğüm bir bağımlıdan veri alıyor

* Slave iletimi – slave düğüm, master'a veri gönderiyor

* Slave alma – slave düğüm, master'dan veri alıyor

I2C 'kısa mesafeli' bir 'seri iletişim protokolüdür', bu nedenle veriler tek kablo veya SDA hattı boyunca 'bit-bit' aktarılır. Bitlerin çıkışı, master ve slave arasında 'paylaşılan' bir saat sinyali ile bitlerin örneklenmesiyle senkronize edilir. Saat sinyali her zaman master tarafından kontrol edilir. Master, saati oluşturur ve slave'lerle iletişimi başlatır.

Yani özetlemek gerekirse>

Kullanılan Tel Sayısı: 2

Senkron veya Asenkron: Senkron

Seri veya Paralel: Seri

Tarafından kontrol edilen Saat Sinyali: Ana Düğüm

Kullanılan voltajlar: +5 V veya +3.3 V

Maksimum Master sayısı: Sınırsız

Maksimum Köle Sayısı: 1008

Maksimum Hız: Standart Mod = 100kbps

Hızlı Mod = 400kbps

Yüksek Hız Modu = 3.4 Mbps

Ultra Hızlı Mod = 5 Mbps

Adım 4: TCA9548A I2C Çoklayıcı Modülü

TCA9548A I2C Çoklayıcı Modülü
TCA9548A I2C Çoklayıcı Modülü
TCA9548A I2C Çoklayıcı Modülü
TCA9548A I2C Çoklayıcı Modülü
TCA9548A I2C Çoklayıcı Modülü
TCA9548A I2C Çoklayıcı Modülü

TCA9548A, sekiz ayrı I2C cihazının tek bir ana bilgisayar I2C veri yolu tarafından kontrol edilmesini sağlayan sekiz kanallı (çift yönlü) bir I2C çoklayıcıdır. I2C sensörlerini SCn / SDn çoğullanmış veriyollarına bağlamanız yeterlidir. Örneğin, bir uygulamada sekiz özdeş OLED ekrana ihtiyaç duyulursa, her bir ekrandan biri şu kanalların her birine bağlanabilir: 0-7.

Çoklayıcı, mikro denetleyicinin VIN, GND, SDA ve SCL hatlarına bağlanır. Breakout panosu, 1.65v'den 5.5v'ye kadar VIN'i kabul eder. Hem giriş SDA hem de SCL hatları, 10K'lık bir çekme direnci aracılığıyla VCC'ye bağlanır (Çekme direncinin boyutu, I2C hatlarındaki kapasitans miktarına göre belirlenir). Çoklayıcı hem normal (100 kHz) hem de hızlı (400 kHz) I2C protokollerini destekler. TCA9548A'nın tüm I/O pinleri 5 volt toleranslıdır ve ayrıca yüksekten düşüğe veya düşükten yüksek voltaja çevirmek için kullanılabilir.

Gerilimler aynı olsa bile TCA9548A'nın tüm kanallarına pull-up dirençleri koymak iyi bir fikirdir. Bunun nedeni dahili NMOS anahtarıdır. Yüksek voltajı çok iyi iletmez, diğer yandan düşük voltajları çok iyi iletir. TCA9548A, 1.8-V, 2.5-V veya 3.3-V parçalarının 5-V'luk parçalarla iletişim kurabilmesi için her SCn/SDn çiftinde farklı bara voltajlarının kullanılmasına izin vererek Gerilim Çevirisi için de kullanılabilir. Bu, ana ve her bağımlı kanal için veri yolunu istenen voltaja çekmek için harici çekme dirençleri kullanılarak elde edilir.

Mikro denetleyici bir veri yolu çakışması veya başka bir uygunsuz çalışma algılarsa, TCA9548A, RESET pinine düşük bir değer atanarak sıfırlanabilir.

Adım 5:

resim
resim
resim
resim
resim
resim

TCA9548, her bir sensör bağımlı alt veriyoluna benzersiz bir kanal atayarak tek bir mikro denetleyicinin tümü aynı veya farklı I2C adresine sahip '64 sensöre' kadar iletişim kurmasını sağlar.

2 kablo üzerinden birden fazla cihaza veri göndermekten bahsettiğimizde, onları ele almanın bir yoluna ihtiyacımız var. Postacının tek bir yoldan gelip, üzerlerinde farklı adresler yazılı olduğu için posta paketlerini farklı evlere bırakmasıyla aynı şey.

Aynı I2C adresli parçalardan 64'ünü kontrol etmek için bu çoklayıcılardan en fazla 8 tanesini 0x70-0x77 adreslerinde birbirine bağlayabilirsiniz. A0, A1 ve A2 adres bitlerini VIN'e bağlayarak farklı adres kombinasyonları elde edebilirsiniz. TCA9548A'nın adres baytı bu şekilde görünür. İlk 7 bit, bağımlı adresi oluşturmak için birleşir. Slave adresinin son biti, gerçekleştirilecek işlemi (okuma veya yazma) tanımlar. Yüksek (1) olduğunda, bir okuma seçilir, düşük (0) ise bir yazma işlemi seçer.

Adım 6: Master Verileri Nasıl Gönderir ve Alır?

Master Verileri Nasıl Gönderir ve Alır?
Master Verileri Nasıl Gönderir ve Alır?
Master Verileri Nasıl Gönderir ve Alır?
Master Verileri Nasıl Gönderir ve Alır?

Bir master'ın bir slave cihaza erişmesi için genel prosedür aşağıdadır:

1. Bir master, bir slave'e veri göndermek isterse (WRITES):

– Ana verici bir BAŞLAT koşulu gönderir, ardından bağımlı alıcının adresleri ve R/W 0 olarak ayarlanır

– Ana verici, köle hazır olduğunu kabul ettiğinde, '8 bitlik kontrol kayıtlarındaki' verileri bağımlı alıcıya gönderir.

– Ana verici, aktarımı bir STOP koşuluyla sonlandırır

2. Bir master, bir slave'den veri almak veya okumak isterse (READS):

– Master-alıcı bir BAŞLAT koşulu gönderir, ardından bağımlı-alıcının adresleri ve R/W 1 olarak ayarlanır

– Master-alıcı, slave-vericiye okumak için istenen kaydı gönderir

– Master-alıcı, slave-vericiden veri alır

- Tüm baytlar alındığında Master, iletişimi durdurmak ve veri yolunu serbest bırakmak için bağımlıya NACK sinyali gönderir.

- Ana alıcı, aktarımı bir STOP koşuluyla sonlandırır

Bir STOP koşulundan sonra hem SDA hem de SCL hatları yüksekse, bir veri yolu boş olarak kabul edilir.

7. Adım: Kod

kod
kod

Şimdi, Int kodu "Wire" kitaplığını ekleyerek ve çoklayıcı adresini tanımlayarak başlayalım.

#include "Wire.h"

#include "U8glib.h"

#define MUX_Address 0x70 // TCA9548A Encoder adresi

Daha sonra iletişim kurmak istediğimiz portu seçip bu fonksiyonu kullanarak datayı ona göndermemiz gerekiyor:

void selectI2CChannels(uint8_t i) {

(i > 7) dönerse;

Wire.beginTransmission(MUX_Adres);

Wire.write(1 << i);

Wire.endTransmission();

}

Daha sonra kurulum bölümündeki ekranı "u8g.begin();" çağırarak başlatacağız. MUX'a bağlı her ekran için "tcaselect(i);"

Başlatıldıktan sonra, "tcaselect(i);" işlevini çağırarak istediğimizi yapabiliriz. burada "i" çoğullanmış veri yolunun değeridir ve ardından verileri ve saati buna göre gönderir.

Adım 8: I2C Tarayıcı

I2C Tarayıcı
I2C Tarayıcı

I2C kalkanınızın cihaz adresinden emin değilseniz, cihazınızın hex adresini bulmak için ekteki 'I2C Tarayıcı' kodunu çalıştırın. Bir Arduino'ya yüklendiğinde, çizim, yanıt veren adresleri göstererek I2C ağını tarayacaktır.

Adım 9: Kablolama ve Demo

Kablolama ve Demo
Kablolama ve Demo
Kablolama ve Demo
Kablolama ve Demo

kablolama:

Çoklayıcıyı bir NodeMCU kartına bağlayarak başlayalım. Bağlamak:

VIN - 5V (veya 3.3V)

GND toprağa

SDA'dan D2'ye ve

Sırasıyla SCL'den D1'e pinler

Bir Arduino kartı bağlantısı için:

VIN - 5V (veya 3.3V)

GND toprağa

SDA'dan A4'e ve

Sırasıyla SCL'den A5'e pinler

MUX mikro denetleyiciye bağlandığında, sensörleri SCn / SDn çiftlerine bağlamanız yeterlidir.

Şimdi, 8 OLED ekranı TCA9548A Multiplexer'a bağladığım bu hızlı demoya bir göz atalım. Bu ekranlar I2C iletişimini kullandığından Arduino ile sadece 2 pin kullanarak iletişim kurarlar.

Adım 10: Avantajlar ve Dezavantajlar

Avantajlar ve dezavantajlar
Avantajlar ve dezavantajlar

AVANTAJLAR

* İletişim sadece iki bus hattı (kablo) gerektirir

* Tüm bileşenler arasında basit bir master/slave ilişkisi mevcuttur

* Örneğin RS232 ile olduğu gibi katı baud hızı gereksinimleri yoktur, master bir veri yolu saati oluşturur

* Donanım, UART'lardan daha az karmaşıktır

* Birden fazla master ve birden fazla slave'i destekler

* ACK/NACK biti, her çerçevenin başarıyla aktarıldığını onaylar

* I2C, tahkim ve çarpışma tespiti sağlayan 'gerçek bir çoklu ana veri yolu'dur

* Veri yoluna bağlı her cihaz, benzersiz bir adresle yazılımsal olarak adreslenebilir

* Çoğu I2C cihazı 100kHz veya 400kHz'de iletişim kurabilir

* I²C, basitlik ve düşük üretim maliyetinin hızdan daha önemli olduğu çevre birimleri için uygundur

* İyi bilinen ve yaygın olarak kullanılan protokol

DEZAVANTAJLARI

* SPI'den daha yavaş veri aktarım hızı

* Veri çerçevesinin boyutu 8 bit ile sınırlıdır

* Uygulamak için SPI teknolojisinden daha karmaşık donanım gerekli

Önerilen: