Πίνακας περιεχομένων:

TCA9548A I2C Multiplexer Module - Με Arduino και NodeMCU: 11 βήματα
TCA9548A I2C Multiplexer Module - Με Arduino και NodeMCU: 11 βήματα

Βίντεο: TCA9548A I2C Multiplexer Module - Με Arduino και NodeMCU: 11 βήματα

Βίντεο: TCA9548A I2C Multiplexer Module - Με Arduino και NodeMCU: 11 βήματα
Βίντεο: Output DC or AC Voltage using MCP4725 DAC with LCD and PWM to Voltage Converter with Arduino 2024, Ιούνιος
Anonim
Image
Image

Έχετε έρθει ποτέ σε μια κατάσταση όπου έπρεπε να συνδέσετε δύο, τρεις ή περισσότερους αισθητήρες I2C στο Arduino σας για να συνειδητοποιήσετε ότι οι αισθητήρες έχουν σταθερή ή ίδια διεύθυνση I2C. Επιπλέον, δεν μπορείτε να έχετε δύο συσκευές με την ίδια διεύθυνση στις ίδιες καρφίτσες SDA/SCL!

Λοιπόν, ποιες είναι οι επιλογές σας; Βάλτε τα όλα στον πολυπλέκτη TCA9548A 1-to-8 I2C για να τα κάνετε όλα να μιλούν μεταξύ τους στο ίδιο λεωφορείο! Το TCA9548A Breakout επιτρέπει την επικοινωνία με πολλές συσκευές I2C που έχουν την ίδια διεύθυνση καθιστώντας απλή τη διασύνδεσή τους.

Βήμα 1: Απαιτήσεις υλικού

Θέματα που καλύπτονται
Θέματα που καλύπτονται

Για αυτό το σεμινάριο χρειαζόμαστε:

- Breadboard

Πολυπλέκτης TCA9548A I2C

- Arduino Uno/Nano οτιδήποτε είναι βολικό

- NodeMCU

- Λίγες οθόνες OLED 0,91 & 0,96 I2C

- Καλώδια βραχυκυκλωτήρων και

- Καλώδιο USB για να ανεβάσετε τον κωδικό

Βήμα 2: Θέματα που καλύπτονται

Θα ξεκινήσουμε τη συζήτησή μας κατανοώντας τα βασικά της τεχνολογίας I2C

Στη συνέχεια θα μάθουμε για το TCA9548A Multiplexer και πώς ο κύριος και ο υποτελής στέλνει και λαμβάνει δεδομένα χρησιμοποιώντας την τεχνολογία I2C Στη συνέχεια θα ελέγξουμε πώς μπορούμε να προγραμματίσουμε και να χρησιμοποιήσουμε τον πολυπλέκτη στο έργο μας χρησιμοποιώντας Arduino και NodeMCU Στη συνέχεια, θα σας δείξω ένα γρήγορο επίδειξη που χρησιμοποιεί 8 οθόνες OLED I2C και τέλος θα ολοκληρώσουμε το σεμινάριο συζητώντας τα πλεονεκτήματα και τα μειονεκτήματα του TCA9548A Multiplexer

Βήμα 3: Βασικά στοιχεία του διαύλου I2C

Βασικά στοιχεία του λεωφορείου I2C
Βασικά στοιχεία του λεωφορείου I2C
Βασικά στοιχεία του λεωφορείου I2C
Βασικά στοιχεία του λεωφορείου I2C
Βασικά στοιχεία του λεωφορείου I2C
Βασικά στοιχεία του λεωφορείου I2C

Το ενσωματωμένο κύκλωμα προφέρεται I-squared-C (I²C) ή I2C είναι μια τεχνολογία διαύλου δύο συρμάτων (στην πραγματικότητα 4 καλώδια επειδή χρειάζεστε επίσης το VCC και το Ground) που χρησιμοποιείται για επικοινωνία μεταξύ πολλαπλών επεξεργαστών και αισθητήρων.

Τα δύο καλώδια είναι:

* SDA - Σειριακά δεδομένα (γραμμή δεδομένων) και

* SCL - Σειριακό ρολόι (γραμμή ρολογιού)

Θυμηθείτε, και οι δύο αυτές γραμμές είναι «σύγχρονες» «αμφίδρομες» «ανοιχτές παροχετεύσεις» και «ανασύρονται με αντιστάσεις».

Η τεχνολογία λεωφορείων I2C σχεδιάστηκε αρχικά από τη Philips Semiconductors στις αρχές της δεκαετίας του '80 για να επιτρέψει την εύκολη επικοινωνία μεταξύ των εξαρτημάτων που βρίσκονται στην ίδια πλακέτα κυκλώματος.

Με το I2C, μπορείτε να συνδέσετε πολλούς υποτελείς σε έναν κύριο κύκλο (όπως το SPI) ή μπορείτε να έχετε πολλούς κύριους ελέγχους μεμονωμένων ή πολλών σκλάβων. Τόσο οι κύριοι όσο και οι σκλάβοι μπορούν να μεταδώσουν και να λάβουν δεδομένα. Έτσι, μια συσκευή στο δίαυλο I2C μπορεί να βρίσκεται σε μία από αυτές τις τέσσερις καταστάσεις:

* Κύρια μετάδοση - ο κύριος κόμβος στέλνει δεδομένα σε έναν σκλάβο* Κύρια λήψη - ο κύριος κόμβος λαμβάνει δεδομένα από έναν σκλάβο

* Μετάδοση σκλάβων - ο κόμβος σκλάβης στέλνει δεδομένα στον κύριο

* Υποδοχή λήψης - ο κόμβος σκλάβων λαμβάνει δεδομένα από τον κύριο

Το I2C είναι ένα "πρωτόκολλο σειριακής επικοινωνίας" μικρής απόστασης, οπότε τα δεδομένα μεταφέρονται "bit-by-bit" κατά μήκος του ενιαίου καλωδίου ή της γραμμής SDA. Η έξοδος των δυαδικών ψηφίων συγχρονίζεται με τη δειγματοληψία των δυαδικών ψηφίων με ένα σήμα ρολογιού «κοινόχρηστο» μεταξύ του κύριου και του υποτελούς. Το σήμα του ρολογιού ελέγχεται πάντα από τον κύριο. Ο Κύριος δημιουργεί το ρολόι και ξεκινά την επικοινωνία με τους σκλάβους.

Οπότε, για να το συνοψίσω>

Αριθμός καλωδίων που χρησιμοποιήθηκαν: 2

Σύγχρονη ή ασύγχρονη: Σύγχρονη

Σειριακό ή Παράλληλο: Σειριακό

Σήμα ρολογιού που ελέγχεται από: Master Node

Τάσεις που χρησιμοποιούνται: +5 V ή +3,3 V

Μέγιστος αριθμός Masters: Απεριόριστος

Μέγιστος αριθμός σκλάβων: 1008

Μέγιστη ταχύτητα: Τυπική λειτουργία = 100kbps

Γρήγορη λειτουργία = 400kbps

Λειτουργία υψηλής ταχύτητας = 3,4 Mbps

Ultra Fast Mode = 5 Mbps

Βήμα 4: Μονάδα πολυπλέκτη TCA9548A I2C

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 οκτώ καναλιών (αμφίδρομος) που επιτρέπει τον έλεγχο οκτώ ξεχωριστών συσκευών I2C από έναν δίαυλο I2C κεντρικού υπολογιστή. Απλά πρέπει να συνδέσετε τους αισθητήρες I2C στα πολυπλεξία διαύλου SCn / SDn. Για παράδειγμα, εάν χρειάζονται οκτώ πανομοιότυπες οθόνες OLED σε μια εφαρμογή, μία από κάθε οθόνη μπορεί να συνδεθεί σε καθένα από αυτά τα κανάλια: 0-7.

Ο πολυπλέκτης συνδέεται με γραμμές VIN, GND, SDA και SCL του μικροελεγκτή. Ο πίνακας breakout δέχεται VIN από 1.65v έως 5.5v. Και οι δύο γραμμές εισόδου SDA και SCL συνδέονται με το VCC μέσω αντίστασης έλξης 10K (Το μέγεθος της αντίστασης έλξης καθορίζεται από την ποσότητα χωρητικότητας στις γραμμές I2C). Ο πολυπλέκτης υποστηρίζει τόσο κανονικά (100 kHz) όσο και γρήγορα (400 kHz) πρωτόκολλα I2C. Όλοι οι ακροδέκτες εισόδου/εξόδου του TCA9548A είναι ανεκτικοί στα 5 volt και μπορούν επίσης να χρησιμοποιηθούν για τη μετάφραση από υψηλή σε χαμηλή ή χαμηλή σε υψηλή τάση.

Είναι καλή ιδέα να τοποθετήσετε αντιστάσεις έλξης σε όλα τα κανάλια του TCA9548A, ακόμη και αν οι τάσεις είναι ίδιες. Ο λόγος για αυτό είναι ο εσωτερικός διακόπτης NMOS. Δεν μεταδίδει πολύ καλά υψηλή τάση, από την άλλη μεταδίδει πολύ καλά χαμηλές τάσεις. Το TCA9548A μπορεί επίσης να χρησιμοποιηθεί για Μετάφραση Τάσης, επιτρέποντας τη χρήση διαφορετικών τάσεων διαύλου σε κάθε ζεύγος SCn/SDn έτσι ώστε τα μέρη 1,8-V, 2,5-V ή 3,3-V να μπορούν να επικοινωνούν με μέρη 5-V. Αυτό επιτυγχάνεται με τη χρήση εξωτερικών αντιστάσεων έλξης για να τραβήξει το δίαυλο στην επιθυμητή τάση για το κύριο και κάθε δευτερεύον κανάλι.

Εάν ο μικροελεγκτής ανιχνεύσει διένεξη διαύλου ή άλλη ακατάλληλη λειτουργία, το TCA9548A μπορεί να επαναφερθεί μέσω επιβεβαίωσης χαμηλής τιμής στον ακροδέκτη RESET.

Βήμα 5:

Εικόνα
Εικόνα
Εικόνα
Εικόνα
Εικόνα
Εικόνα

Το TCA9548 επιτρέπει σε έναν μόνο μικροελεγκτή να επικοινωνεί με έως και '64 αισθητήρες ', όλοι με την ίδια ή διαφορετική διεύθυνση I2C, εκχωρώντας ένα μοναδικό κανάλι σε κάθε δευτερεύοντα δίαυλο βοηθού αισθητήρα.

Όταν μιλάμε για αποστολή δεδομένων μέσω 2 καλωδίων σε πολλές συσκευές, τότε χρειαζόμαστε έναν τρόπο αντιμετώπισής τους. Είναι το ίδιο με τον ταχυδρόμο να έρχεται σε έναν μόνο δρόμο και να ρίχνει τα πακέτα αλληλογραφίας σε διαφορετικά σπίτια επειδή έχουν διαφορετικές διευθύνσεις γραμμένες πάνω τους.

Θα μπορούσατε να έχετε το πολύ 8 από αυτούς τους πολυπλέκτες συνδεδεμένους μεταξύ τους σε διευθύνσεις 0x70-0x77, προκειμένου να ελέγχετε 64 από τα ίδια τμήματα με διεύθυνση I2C. Συνδέοντας τα τρία bits διευθύνσεων A0, A1 και A2 στο VIN μπορείτε να πάρετε διαφορετικό συνδυασμό των διευθύνσεων. Έτσι μοιάζει ένα byte διεύθυνσης του TCA9548A. Τα πρώτα 7-bit συνδυάζονται για να σχηματίσουν τη διεύθυνση slave. Το τελευταίο bit της διεύθυνσης slave καθορίζει τη λειτουργία (ανάγνωση ή εγγραφή) που πρέπει να εκτελεστεί. Όταν είναι υψηλή (1), επιλέγεται ανάγνωση, ενώ χαμηλή (0) επιλέγει λειτουργία εγγραφής.

Βήμα 6: Πώς αποστέλλει και λαμβάνει δεδομένα το Master

Πώς στέλνει και λαμβάνει δεδομένα ο κύριος
Πώς στέλνει και λαμβάνει δεδομένα ο κύριος
Πώς στέλνει και λαμβάνει δεδομένα ο κύριος
Πώς στέλνει και λαμβάνει δεδομένα ο κύριος

Ακολουθεί η γενική διαδικασία πρόσβασης ενός master σε μια υποτελή συσκευή:

1. Εάν ένας κύριος θέλει να στείλει δεδομένα σε έναν σκλάβο (ΓΡΑΦΕΙ):

-Ο κύριος πομπός στέλνει μια κατάσταση START ακολουθούμενη από τις διευθύνσεις του δευτερεύοντος δέκτη και το R/W ρυθμίζεται στο 0

-Ο κύριος πομπός στέλνει δεδομένα στους «καταχωρητές ελέγχου 8-bit» στον δέκτη-υποτελή όταν ο σκλάβος αναγνωρίσει ότι είναι έτοιμος

-Ο κύριος πομπός τερματίζει τη μεταφορά με συνθήκη STOP

2. Εάν ένας κύριος θέλει να λάβει ή να διαβάσει δεδομένα από έναν σκλάβο (READS):

-Ο κύριος δέκτης στέλνει μια κατάσταση ΕΝΑΡΞΗΣ ακολουθούμενη από τις διευθύνσεις του δευτερεύοντος δέκτη και R/W σε 1

-Ο κύριος δέκτης αποστέλλει το μητρώο που ζητήθηκε για ανάγνωση σε υποτελή-πομπό

-Ο κύριος δέκτης λαμβάνει δεδομένα από τον εκάστοτε πομπό

- Μόλις ληφθούν όλα τα byte, ο Master στέλνει σήμα NACK στον υπάλληλο να διακόψει τις επικοινωνίες και να αφήσει το δίαυλο

- Ο κύριος δέκτης τερματίζει τη μεταφορά με συνθήκη STOP

Ένας δίαυλος θεωρείται αδρανής εάν και οι δύο γραμμές SDA και SCL είναι υψηλές μετά από μια κατάσταση STOP.

Βήμα 7: Κωδικός

Κώδικας
Κώδικας

Τώρα, Int ο κώδικας επιτρέπει να ξεκινήσετε συμπεριλαμβάνοντας τη βιβλιοθήκη "Wire" και καθορίζοντας τη διεύθυνση των πολυπλεκτών.

#include "Wire.h"

#include "U8glib.h"

#define MUX_Address 0x70 // TCA9548A Διεύθυνση κωδικοποιητών

Στη συνέχεια, πρέπει να επιλέξουμε τη θύρα στην οποία θέλουμε να επικοινωνήσουμε και να στείλουμε τα δεδομένα σε αυτήν χρησιμοποιώντας αυτήν τη λειτουργία:

void selectI2CChannels (uint8_t i) {

εάν (i> 7) επιστροφή?

Wire.beginTransmission (MUX_Address);

Wire.write (1 << i);

Wire.endTransmission ();

}

Στη συνέχεια, θα αρχικοποιήσουμε την οθόνη στην ενότητα εγκατάστασης καλώντας "u8g.begin ();" για κάθε οθόνη προσαρτημένη στο MUX "tcaselect (i);"

Μόλις αρχικοποιηθεί, μπορούμε στη συνέχεια να κάνουμε ό, τι θέλουμε απλά καλώντας τη συνάρτηση "tcaselect (i);" όπου "i" είναι η τιμή του πολυπλεγμένου διαύλου και, στη συνέχεια, η αποστολή των δεδομένων και του ρολογιού ανάλογα.

Βήμα 8: Σαρωτής I2C

Σαρωτής I2C
Σαρωτής I2C

Σε περίπτωση που δεν είστε σίγουροι για τη διεύθυνση συσκευής της ασπίδας I2C, εκτελέστε τον συνημμένο κώδικα "I2C Scanner" για να βρείτε την εξάγωνη διεύθυνση της συσκευής σας. Όταν φορτωθεί σε ένα Arduino, το σκίτσο θα σαρώσει το δίκτυο I2C, δείχνοντας τις διευθύνσεις που ανταποκρίνονται.

Βήμα 9: Καλωδίωση και επίδειξη

Καλωδίωση και επίδειξη
Καλωδίωση και επίδειξη
Καλωδίωση και επίδειξη
Καλωδίωση και επίδειξη

Καλωδίωση:

Ας ξεκινήσουμε συνδέοντας τον πολυπλέκτη σε μια πλακέτα NodeMCU. Συνδέω-συωδεομαι:

VIN έως 5V (ή 3,3V)

GND στο έδαφος

SDA έως D2 και

Ακίδες SCL έως D1 αντίστοιχα

Για έναν πίνακα Arduino συνδέστε:

VIN έως 5V (ή 3,3V)

GND στο έδαφος

SDA έως Α4 και

SCL έως A5 ακίδες αντίστοιχα

Μόλις το MUX συνδεθεί με τον μικροελεγκτή, απλά πρέπει να συνδέσετε τους αισθητήρες στα ζεύγη SCn / SDn.

Τώρα, ας δούμε αυτό το γρήγορο demo στο οποίο έχω συνδέσει 8 οθόνες OLED στο TCA9548A Multiplexer. Καθώς αυτές οι οθόνες χρησιμοποιούν επικοινωνία I2C, επικοινωνούν με το Arduino χρησιμοποιώντας μόνο 2 ακίδες.

Βήμα 10: Πλεονεκτήματα και μειονεκτήματα

Πλεονεκτήματα και μειονεκτήματα
Πλεονεκτήματα και μειονεκτήματα

ΠΛΕΟΝΕΚΤΗΜΑΤΑ

* Η επικοινωνία απαιτεί μόνο δύο γραμμές λεωφορείων (καλώδια)

* Υπάρχει μια απλή σχέση κυρίου/σκλάβου μεταξύ όλων των συνιστωσών

* Χωρίς αυστηρές απαιτήσεις ρυθμού baud, όπως για παράδειγμα με το RS232, ο κύριος δημιουργεί ένα ρολόι διαύλου

* Το υλικό είναι λιγότερο περίπλοκο από το UART

* Υποστηρίζει πολλούς κυρίους και πολλούς σκλάβους

* Το bit ACK/NACK δίνει επιβεβαίωση ότι κάθε καρέ μεταφέρεται επιτυχώς

* Το I2C είναι ένα «πραγματικό πολυ-κύριο λεωφορείο» που παρέχει διαιτησία και ανίχνευση σύγκρουσης

* Κάθε συσκευή που είναι συνδεδεμένη στο δίαυλο είναι διευθετήσιμη μέσω λογισμικού με μια μοναδική διεύθυνση

* Οι περισσότερες συσκευές I2C μπορούν να επικοινωνούν σε 100kHz ή 400kHz

* Το I²C είναι κατάλληλο για περιφερειακά όπου η απλότητα και το χαμηλό κόστος κατασκευής είναι πιο σημαντικά από την ταχύτητα

* Γνωστό και ευρέως χρησιμοποιούμενο πρωτόκολλο

ΜΕΙΟΝΕΚΤΗΜΑΤΑ

* Πιο αργός ρυθμός μεταφοράς δεδομένων από το SPI

* Το μέγεθος του πλαισίου δεδομένων περιορίζεται σε 8 bit

* Απαιτείται πιο περίπλοκο υλικό από την τεχνολογία SPI

Συνιστάται: