Επέκταση εισόδων arduino. Πώς να αυξήσετε τον αριθμό των ψηφιακών καρφιτσών Arduino χρησιμοποιώντας ένα Port Expander

10.09.2021

Περιγραφή του Expander Shield

Το Expander Shield είναι μια πρωτότυπη πρόσθετη μονάδα που έχει σχεδιαστεί για να αυξάνει τον αριθμό των θυρών εισόδου/εξόδου των μικροελεγκτών με βάση Πλατφόρμες Arduino, καθώς και άλλους μικροελεγκτές, που χρησιμοποιούν επεκτάσεις θυρών με διασύνδεση SPI ή I2C.


Τα κύρια στοιχεία της πρόσθετης μονάδας Expander Shield είναι δύο μικροκυκλώματα MCP23S17 ή MCP23017 (δύο επεκτάσεις θυρών I/O 16 bit με διασύνδεση SPI ή I2C, αντίστοιχα), που σας επιτρέπουν να προσθέσετε τέσσερις θύρες I/O 8 bit, δηλαδή , 32 επιπλέον «πόδια».

Εξοπλισμός

Η μονάδα Expander Shield παρέχεται είτε ως συναρμολογημένη έκδοση SPI ή I2C (με συσχετισμένα τσιπ), είτε ως κιτ χωρίς τσιπ, τα οποία μπορούν να αγοραστούν ξεχωριστά.

Οι ακροδέκτες της μονάδας μπορεί να είναι εξοπλισμένοι με κλειδαριές μεταφοράς, οι οποίες πρέπει να αφαιρεθούν πριν ξεκινήσετε την εργασία.

Expander Shield SPI 1100 rub.

850 τρίψτε.

Προσθήκη στο καλάθι

φόρμα παραγγελίας.

ExpanderShield προς δίαυλο SPI (με τσιπ MCP23S17). Expander Shield I2C 1100 τρίψτε. 850 τρίψτε.

Προσθήκη στο καλάθι

Προσοχή! Έχετε απενεργοποιήσει τη JavaScript.

Κανονική λειτουργία τα συστήματα παραγγελιών και καλαθιών αγορών δεν είναι δυνατά. Εάν για κάποιο λόγο δεν μπορείτε να ενεργοποιήσετε τη JavaScript, απλώς αναφέρετε τα είδη που παραγγέλνετε στη φόρμα παραγγελίας. ExpanderShield σε δίαυλο I2C (με τσιπ MCP23017).

  • Προδιαγραφές Εδώ είναι τα πιο σημαντικάλειτουργικά χαρακτηριστικά
  • Μονάδα Expander Shield.
  • βολικός διακόπτης λειτουργίας μονάδας ανάλογα με τον τύπο που είναι εγκατεστημένος
  • αυτή τη στιγμή
  • τσιπ επέκτασης θυρών?
  • τη δυνατότητα επιλογής ξεχωριστής ή κοινής επαναφοράς υλικού (κουμπί RESET) των τσιπ επέκτασης θύρας I/O 16-bit και του μικροελεγκτή Freeduino/Arduino με χρήση jumpers.
  • πρόσθετη υποδοχή JPIC με ακροδέκτες διακοπής (INTA, INTB), επαναφορά υλικού (RST) και επιλογή chip (CS).

Άλλα χαρακτηριστικά της μονάδας καθορίζονται κυρίως από τα χαρακτηριστικά των μικροκυκλωμάτων MCP23S17/MCP23017, η τεχνική περιγραφή των οποίων είναι διαθέσιμη στην τεκμηρίωση του κατασκευαστή.

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

Τρόποι λειτουργίας

Ο τρόπος λειτουργίας Expander Shield επιλέγεται χρησιμοποιώντας διακόπτη DIP και βραχυκυκλωτήρες.

Επιλογή διεπαφής και έλεγχος έλξης διαύλου I2C

Χρησιμοποιώντας έναν διακόπτη DIP, επιλέγετε είτε τη λειτουργία SPI (ενεργοποιώντας την ομάδα επαφών 1-4) για τα μικροκυκλώματα MCP23S17 ή τη λειτουργία I2C (ενεργοποιώντας την ομάδα επαφών 5-6) για τα μικροκυκλώματα MCP23017. Επίσης, στη λειτουργία I2C, χρησιμοποιώντας τις ακίδες 7 και 8, εάν είναι απαραίτητο, ο δίαυλος I2C έλκεται μέσω αντιστάσεων περιορισμού ρεύματος στον δίαυλο ισχύος +5V. Συνήθως, οι αντιστάσεις έλξης πρέπει να συνδέονται εάν υπάρχει μόνο μία συσκευή στο δίαυλο I2C. Εάν υπάρχουν πολλές συσκευές, τότε οι αντιστάσεις συνδέονται μόνο για μία από τις συσκευές.

Ταυτόχρονη ενεργοποίηση του διαύλου SPI και I2C, καθώς και του διαύλου SPI και της ομάδας 7, 8 ακίδων δεν επιτρέπεται.

Συνδυασμένος τρόπος λειτουργίας, όταν ένα από τα δύο τσιπ σε μια μονάδα Expander Shield λειτουργεί σύμφωνα με Διεπαφή SPI(MCP23S17), και το άλλο μέσω της διεπαφής I2C (MCP23017) δεν είναι δυνατό.

Εάν χρειάζεται να οργανώσετε την εργασία ταυτόχρονα μέσω διασυνδέσεων SPI και I2C, πρέπει να χρησιμοποιήσετε δύο (πολλές) πρόσθετες μονάδες Expander Shield με τις αντίστοιχες θέσεις διακόπτη.

Επιλέγοντας τον αριθμό pin για τον έλεγχο του σήματος CS του διαύλου SPI

Για το δίαυλο SPI, πρέπει να επιλέξετε τον ακροδέκτη μικροελεγκτή Freeduino/Arduino που χρησιμοποιείται ως σήμα CS. Συνήθως, χρησιμοποιείται η ακίδα 10, η οποία αντιστοιχεί στην πιο αριστερή θέση βραχυκυκλωτήρα στον σύνδεσμο SS1. Μετακινώντας το βραχυκυκλωτήρα σε μία από τις άλλες δύο θέσεις, μπορείτε να επιλέξετε τις ακίδες 9 και 8, αντίστοιχα.

Επιλογή της διεύθυνσης των μικροκυκλωμάτων στο λεωφορείο

Τα χαμηλότερα τρία bit της διεύθυνσης των μικροκυκλωμάτων MCP23S17/MCP23017 επιλέγονται χρησιμοποιώντας βραχυκυκλωτήρες στους συνδέσμους IC1_addr/IC2_addr τραβώντας τα bit 0, 1, 2 στη γείωση (Gnd) ή +5V (5V).

Η διεύθυνση κάθε τσιπ πρέπει να είναι μοναδική.

Έτσι, μπορούν να τοποθετηθούν έως και 8 μικροκυκλώματα σε ένα δίαυλο (συνδυάζοντας, για παράδειγμα, 4 Expander Shields).

Επιλογή του τρόπου λειτουργίας επαναφοράς υλικού (κουμπί RESET)

Μπορείτε να οργανώσετε έναν από τους διάφορους τρόπους λειτουργίας του κουμπιού RESET

  • Το κουμπί RESET επαναφέρει τα τσιπ Freeduino/Arduino και MCP23S17/MCP23017
  • Το κουμπί RESET επαναφέρει μόνο το Freeduino/Arduino
  • Το κουμπί RESET επαναφέρει μόνο τα τσιπ MCP23S17/MCP23017

Οι αντίστοιχες θέσεις βραχυκυκλωτήρα στον σύνδεσμο JRS (από αριστερά προς τα δεξιά) φαίνονται παρακάτω.

Βιβλιοθήκη MCP23xxx

Για να απλοποιηθεί η εργασία με αυτήν και μια σειρά από άλλες μονάδες, έχει αναπτυχθεί η βιβλιοθήκη MCP23xxx, η οποία παρέχει μια απλή διεπαφή με τη λειτουργικότητα των μικροκυκλωμάτων της σειράς MCP23xxx. Η βιβλιοθήκη είναι διαθέσιμη για δωρεάν λήψη: Η βιβλιοθήκη είναι συμβατή με την έκδοση λογισμικού Arduino 1.0.5 (αναμένεται και συμβατότητα με μεταγενέστερες εκδόσεις).

Στην πραγματικότητα, αυτό είναι ένα σύνολο δύο βιβλιοθηκών: MCP23xxx και LiquidCrystal_MCP23x17.

Η εγκατάσταση βιβλιοθηκών περιγράφεται λεπτομερέστερα στην ενότητα σύνδεσης βιβλιοθηκών. Η δομή καταλόγου του φακέλου των βιβλιοθηκών μετά την εγκατάσταση θα πρέπει να είναι η εξής:

/libraries/LiquidCrystal_MCP23x17
/libraries/MCP23xxx

Η βιβλιοθήκη MCP23xxx υλοποιεί πρότυπα κλάσεων που οργανώνουν την εργασία με τα επεκτάσεις θυρών MCP23017, MCP23S17, MCP23008 και MCP23S08. Η βιβλιοθήκη LiquidCrystal_MCP23x17 είναι τροποποιημένη τυπική βιβλιοθήκη LiquidCrystal, το οποίο υποστηρίζει τη ρωσική γλώσσα και λειτουργεί μέσω ενός port expander.

Η βιβλιοθήκη συνοδεύεται από παραδείγματα που εξηγούν πώς να εργαστείτε μαζί της. Η προηγούμενη έκδοση της βιβλιοθήκης είναι επίσης διαθέσιμη για λήψη:

Ας δούμε ένα παράδειγμα εργασίας με μια μονάδα για το δίαυλο I2C:

//Στο παράδειγμα, διαβάζεται η κατάσταση των ακίδων του 1ου τσιπ και οι ίδιες τιμές ορίζονται στο 2ο

//Για την έκδοση I2C, συνδέστε το Wire.h:
#συμπεριλαμβάνω
//Σύνδεση της βιβλιοθήκης
#συμπεριλαμβάνω

//Δημιουργήστε δύο αντικείμενα της κλάσης CMCP23017, αλλά μην τα αρχικοποιήσετε, επειδή Το λεωφορείο I2C δεν είναι έτοιμο
CMCP23017 mcp23_1;
CMCP23017 mcp23_2;

void setup()
{
//Εκκίνηση του διαύλου I2C...
Wire.begin();
//... και αντικείμενα MCP23* με διευθύνσεις 0 και 1
mcp23_1.init(0);
mcp23_2.init(1);

//Όλες οι ακίδες του 1ου τσιπ πρέπει να γίνουν είσοδοι και το 2ο - έξοδοι
//Αυτό μπορεί να γίνει σε βρόχο
για (int i= 0 ; i< 16 ; i++ ) {
mcp23_1.pinMode (i, INPUT) ;
mcp23_2.pinMode (i, OUTPUT) ;
}
//ή ταυτόχρονα, καλώντας τη μέθοδο pinMode16
//mcp23_1.pinMode16(0x0ffff);
//mcp23_2.pinMode16(0x00000);
}

void loop()
{
//Μπορείτε να διαβάσετε όλες τις εισόδους του 1ου τσιπ και να ορίσετε το ίδιο στο 2ο σε βρόχο
για (int i= 0 ; i< 16 ; i++ ) {
mcp23_2.digitalWrite (i, mcp23_1.digitalRead (i) ) ;
}
//ή κάθε φορά, χρησιμοποιώντας τις μεθόδους digitalRead16 και digitalWrite16
//mcp23_2.digitalWrite16(mcp23_1.digitalRead16());
}

Νέα άρθρα

● 5.4. Επέκταση ψηφιακής θύρας για NodeMCU ESP8266 με χρήση τσιπ MCP23017

Θα εισαγάγουμε ένδειξη LED και ηχητικό συναγερμό όταν χρησιμοποιείτε τη μονάδα Nodemcu ως έξυπνο οικιακό ελεγκτή. Ο αριθμός των ακίδων στη μονάδα Nodemcu είναι πολύ μικρότερος από ό,τι στο Arduino Mega, επομένως θα χρειαστούμε ένα τσιπ επέκτασης εισόδου MCP23017. Το τσιπ MCP23017 προσθέτει 16 θύρες, οι οποίες μπορούν να ρυθμιστούν τόσο ως είσοδος όσο και ως έξοδος (Εικ. 5.7). Το τσιπ χρησιμοποιεί το δημοφιλές δίαυλο I2C δύο καλωδίων.

Ρύζι. 5.7. Pinout του τσιπ MCP23017

Η διεύθυνση του μικροκυκλώματος MCP23017 για το πρωτόκολλο I2C μπορεί να οριστεί από έναν συνδυασμό σημάτων στις ψηφιακές εισόδους A0 - A2 (Εικ. 5.8), που σας επιτρέπει να συνδέσετε ταυτόχρονα 8 μικροκυκλώματα MCP23017 στον μικροελεγκτή, αντίστοιχα 16 * 8 = 12 επαφές.

Ρύζι. 5.8. Ρύθμιση της διεύθυνσης του τσιπ MCP23017

Το τσιπ έχει 2 τράπεζες θυρών A (GPA0-GPA7) και B (GPB0-GPAB), καθεμία από τις οποίες μπορεί να διαμορφωθεί για είσοδο ή έξοδο.
Στην λίστα 5.3. Εμφανίζεται ένα παράδειγμα ρύθμισης των τραπεζών ακίδων Α και Β.

Λίστα 5.3

// σύνδεση της βιβλιοθήκης Wire.h #συμπεριλαμβάνω byte input=0 ; void setup()( Serial.begin(9600); Wire.begin(0 ,2); // start I2C Wire.beginTransmission(0x20); // i2c - διεύθυνση (A0-0,A1-0,A2-0) Wire.write(0x00); // IODIRA register Wire.write(0x00 ); // ορίστε τη PORT A ως έξοδο Wire.endTransmission(); ) void loop(){ // ανάγνωση δεδομένων από τη ΘΥΡΑ Β Wire.beginTransmission(0x20); Wire.write(0x13); Wire.endTransmission();

Wire.requestFrom(0x20 , 1 );

input=Wire.read();

// γράψτε τα ληφθέντα δεδομένα στη ΘΥΡΑ Α Wire.beginTransmission(0x20);. (TODO: εισαγάγετε έναν σύνδεσμο προς το άρθρο σχετικά με τον ελεγκτή SD όταν είναι έτοιμο). Ως αποτέλεσμα, η συσκευή μου για τη δοκιμή βηματικών κινητήρων αποδείχθηκε αρκετά περίπλοκη - μια οθόνη δύο γραμμών 1602 με σύστημα μενού που ελέγχεται από ένα πληκτρολόγιο 4x4 πλήρους λειτουργίας, 3 ψηφιακά ψηφία για τη ρύθμιση της τιμής μικροβήματος του βηματικού κινητήρα, Βήμα και σήματα Dir για τον βηματικό κινητήρα κ.λπ. Φαίνεται ότι ήρθε η ώρα να μεταβείτε σε άλλη έκδοση του Arduino. Αλλά η φυσική μου τεμπελιά αντιτάχθηκε σε αυτή τη μετανάστευση. Και το τεμπέλικο κεφάλι άρχισε να ψάχνει για λύση.

Αποφασίστηκε να αναζητηθεί λύση με βάση αυτό που ήδη υπάρχει. Καθώς τακτοποιούσα τα κασκόλ και τα μέρη από τα κιτ, παρατήρησα ένα μαύρο «σκαθάρι» 16 ακίδων. Πρώτα σε ένα σετ και μετά σε άλλο. Αποφάσισα να ρωτήσω τι είδους μέρος ήταν αυτό και γιατί προστέθηκε στα σετ. Δεν καταλαβαίνω γιατί το έβαλαν σε κιτ, αλλά βρήκα το ίδιο το τσιπ στον ιστότοπο του NXP.

Αποδείχθηκε ότι αυτό είναι ένα αρκετά ενδιαφέρον μικροκύκλωμα - ένας καταχωρητής μετατόπισης με σειριακή είσοδο και παράλληλη έξοδο.

(από φύλλο δεδομένων)

Περιγραφή ακίδων

Επαφή Ονομα Περιγραφή και σύνδεση
10 ~ΚΥΡΙΟΣ Κύρια επαναφορά- επαναφορά, ενεργό επίπεδο χαμηλό. Ιδανικά, θα ήταν καλή ιδέα να φτιάξετε ένα κύκλωμα επαναφοράς που τροφοδοτεί πρώτα χαμηλό επίπεδοσε αυτήν την είσοδο και στη συνέχεια τη μεταφέρει στην κατάσταση μονάδας. Αλλά δεν χρειάζεται να μπλέξετε και να το συνδέσετε στα +5V. Σε αυτήν την περίπτωση, η έξοδος πριν από την πρώτη εγγραφή θα περιέχει τυχαίες τιμές
13 ~ΟΕ Ενεργοποίηση εξόδου- Ανάλυση εξόδου, ενεργό επίπεδο χαμηλό. Όταν παρέχεται το 0, τα περιεχόμενα του καταχωρητή παρέχονται στις εξόδους όταν εφαρμόζεται το 1, οι έξοδοι απενεργοποιούνται και μεταφέρονται στην κατάσταση Z, η οποία σας επιτρέπει να χρησιμοποιείτε έναν δίαυλο εναλλάξ. διαφορετικές συσκευές. Συνδέστε στη γείωση εάν δεν χρειάζεται να ελέγχετε την κατάσταση των εξόδων
14 Δ.Σ. Σειριακά δεδομένα σε- σειριακή είσοδο. Αυτή η είσοδος πρέπει να ρυθμιστεί στην τιμή του σήματος εισόδου πριν εφαρμοστεί το ρολόι μετατόπισης SHCP.
11 SHCP Shift Register Ρολόι εισόδου- είσοδος ρολογιού του καταχωρητή αλλαγής ταχυτήτων. Για να μετακινήσετε ένα bit σε έναν καταχωρητή, πρέπει να εφαρμοστεί μια μετάβαση από το 0 στο 1 Το πότε να επιστρέψετε στο 0 είναι στη διακριτική σας ευχέρεια. Μπορείτε - αμέσως, μπορείτε - λίγο πριν μετακομίσετε. Στην πρώτη περίπτωση, μπορούμε να υποθέσουμε ότι η μεταγωγή συμβαίνει κατά μήκος της άκρης του άμεσου σήματος, στη δεύτερη - κατά μήκος της πτώσης του αντίστροφου σήματος. Δείτε επίσης σημειώσεις απόδοσης παρακάτω. Επίσης, με την άφιξη αυτού του σήματος, αλλάζει η τιμή της σειριακής εξόδου Q7/S
12 STCP Είσοδος ρολογιού καταχωρητή αποθήκευσης- είσοδος ρολογιού του καταχωρητή ασφάλισης. Στην άκρη αυτού του παλμού, η τιμή μεταφέρεται από τον καταχωρητή shift στις παράλληλες εξόδους Q0-Q7
9 Q7S Έξοδος σειριακών δεδομένων- σειριακή έξοδο. Η τιμή του πιο σημαντικού bit του καταχωρητή shift εμφανίζεται σε αυτό. Αυτή η έξοδος μπορεί να χρησιμοποιηθεί για την κλίμακα του καταχωρητή shift σε 16-bit, 24-bit, κ.λπ. συστήματα
15, 1-7 Q0, Q1-7 Έξοδοι καταχωρητή μανδάλωσης. Το σήμα σε αυτούς μεταφέρεται από τον εσωτερικό καταχωρητή μετατόπισης κατά την άφιξη του σήματος STCP
8 GND Θρέψη- κοινό σύρμα
16 VCC Θρέψη - +

Θρέψη

Η έκδοση HC του μικροκυκλώματος απαιτεί τροφοδοσία από 2V έως 6V, η έκδοση HCT (συμβατή με TTL) - από 4,5V έως 5,5V. HCT - TTL - χρησιμοποιείται ακόμα; Το Arduino φαίνεται να είναι το ίδιο το CMOS, επομένως το HCT δεν χρειάζεται, αλλά εάν πρέπει να συντονίσετε τα επίπεδα με εξωτερικούς καταναλωτές TTL, τότε μπορείτε να τροφοδοτήσετε το HC από 3,3 V, τότε τα επίπεδα σήματος θα είναι συμβατά με το TTL. Γενικά, τόσο το HC όσο και το HCT θα πρέπει να λειτουργούν με ένα Arduino 5 volt. Αυτά γράφουν στο Διαδίκτυο.

Αυτό που είναι πιο σημαντικό είναι οι πυκνωτές μπλοκαρίσματος. Χωρίς αυτά, το κύκλωμα μπορεί να μην λειτουργεί όπως προβλέπεται, και επιπλέον, μπορεί να είναι απρόβλεπτο. Θεωρητικά, θα πρέπει να εγκατασταθεί ένας πυκνωτής 0,1 µF στο κύκλωμα ισχύος κάθε περίπτωσης. Υπολόγισα αυτή την τιμή χωρητικότητας ως μέσο όρο από το Διαδίκτυο. Το σχέδιό μου λειτούργησε μια χαρά χωρίς αυτόν. Για να διευκρινίσω, μπήκα στη Βίβλο του σχεδιαστή κυκλωμάτων για να διευκρινίσω - Hill and Horowitz, "The Art of Circuit Design" είναι σχεδόν σαν "The Art of Programming" του Donald Knutt, αλλά μόνο για ανθρώπους υλικού (παρεμπιπτόντως, Hill και Horowitz είναι πολύ πιο κοντά στους ανθρώπους, ο Knutt - είναι πολύ έξυπνος) - αλλά εκεί φαίνεται να αποκαλούν πυκνωτές μπλοκαρίσματος πυκνωτές αποσύνδεσης στις εισόδους. Είναι κρίμα καλό βιβλίο, αλλά είναι ήδη πολύ πίσω από την εποχή. Έχω τη δεύτερη ή τρίτη ρωσική έκδοση στα τέλη της δεκαετίας του '90 ή στις αρχές του '0, το πρωτότυπο πιθανότατα είναι ακόμα 10 χρόνια παλαιότερο. Στον τρίτο, ροζ τόμο, βρήκα ένα αυτοκόλλητο - "14 ρούβλια" - πόσο φθηνά ήταν όλα τότε, σύμφωνα με τα σύγχρονα πρότυπα. Όμως έχουν περάσει μόνο 15 χρόνια ή λίγο παραπάνω. Η νοσταλγία ήταν συντριπτική.

Εκτέλεση

Στον τίτλο του δελτίου δεδομένων 74HC595 γράφουν ότι λειτουργεί στα 100 MHz. Μια γρήγορη ματιά στα γραφήματα και τους πίνακες του φύλλου δεδομένων λέει ότι οι μεγαλύτεροι χρονισμοί στο εύρος θερμοκρασίας από -40C έως +85C με τροφοδοτικό 4,5V είναι 10-20ns (100-50MHz). Με τις συχνότητες στις οποίες λειτουργεί το Arduino, δεν χρειάζεται να γνωρίζετε τίποτα άλλο. Είναι μόνο πιθανό η τυπική βιβλιοθήκη digitalRead/digitalWrite να είναι τεράστια φρένα λόγω διάφορων ελέγχων και μπορούν (και πρέπει) να ξαναγραφτούν ως ταχύτερη έκδοση. Έχω σχέδια να εμβαθύνω σε αυτό και να γράψω με περισσότερες λεπτομέρειες, αλλά προς το παρόν δεν έχω κάποια ιδιαίτερη ανάγκη.

Απόδοση Arduino Nano και Βιβλιοθήκες ArduinoΌσον αφορά την ταχύτητα εναλλαγής εξόδων και επεξεργασίας εισόδων, σύμφωνα με τις παρατηρήσεις μου, είναι κάπου στη μέση από μερικά kilohertz σε δεκάδες kilohertz. Επομένως, κατά τη γνώμη μου, όταν γράφετε κώδικα για τον έλεγχο του καταχωρητή 74HC595, δεν χρειάζεται να ανησυχείτε για τυχόν καθυστερήσεις στη ρύθμιση των σημάτων ελέγχου.

Ένα άλλο πράγμα είναι ότι για μια σειριακή επέκταση 8-bit, θα πρέπει να διαιρέσετε τη μέγιστη συχνότητα μεταγωγής εξόδου που είναι διαθέσιμη στο Arduino - ορίστε το DS, ρυθμίστε το SHCP σε 1, επαναφέρετε το SHCP (στο 0) - 8 φορές και ρυθμίστε/επαναφέρετε το STCP. Συνολικά, με μια ματιά, 3 * 8 + 2 = 26 λειτουργίες digitalWrite. Συνολικά, αποδεικνύεται ότι είναι περίπου 25 φορές πιο αργό από ό,τι μπορεί να κάνει το ίδιο το Arduino.

Κατά την κλιμάκωση σε 16, 24 ή 32 εξόδους, η επιβράδυνση θα είναι περίπου 3*16 + 2 = 50, 3*24 + 2 = 74 και 3*32 + 2 = 98 φορές, αντίστοιχα.

Προφανώς, μια τέτοια επέκταση καταχωρητή μετατόπισης 74HC595 δεν είναι κατάλληλη για τον έλεγχο κάτι πολύ γρήγορο, αλλά σε ορισμένες εφαρμογές είναι αρκετά κατάλληλο για τη ρύθμιση στατικών σημάτων που αλλάζουν σπάνια. Έτσι, για παράδειγμα, χρησιμοποίησα έναν τέτοιο διαστολέα για να ορίσω μια λειτουργία microstep 3-bit για να ρυθμίσω τη λειτουργία microstep για το πρόγραμμα οδήγησης βηματικού κινητήρα DRV8825 σε έναν ελεγκτή για βηματικούς κινητήρες. Παρεμπιπτόντως, αυτό δεν μου ήταν ιδιαίτερα χρήσιμο ακόμα - τα stepper από εκτυπωτές dot matrix λειτουργούν τρομερά σε λειτουργία microstepping, τουλάχιστον υπό τον έλεγχο του προγράμματος οδήγησης DRV8825 - για παράδειγμα, στη λειτουργία microstepping το 1/2 του βήματος είναι κάπως νωθρό και αβέβαιο, μόνο το δεύτερο ημίχρονο είναι αισιόδοξο και δυνατό. Επομένως, όταν χρησιμοποιούσατε ένα μικροβήμα, με την παραμικρή προσπάθεια στον άξονα του βηματικού κινητήρα, άρχισε να παρακάμπτει τα πρώτα μισά βήματα. Κάπως μετά από αυτό δεν εξερεύνησα τις υπόλοιπες λειτουργίες microstepping στις υπάρχουσες SD εκτυπωτών.

Απολέπιση

Η επέκταση εξόδου Arduino που βασίζεται στο 74HC595 μπορεί πολύ απλά να μετατραπεί από την έκδοση 8-bit σε κύκλωμα οποιασδήποτε χωρητικότητας. Για να γίνει αυτό, η σειριακή έξοδος του χαμηλού καταχωρητή Q7S πρέπει να συνδεθεί στην είσοδο DS του υψηλότερου και οι γραμμές SHCP και STCP πρέπει να συνδεθούν παράλληλα. Λοιπόν, και, ανάλογα με τον υιοθετημένο σχεδιασμό κυκλώματος και λύση λογισμικού, πρέπει να επιλέξετε τον τρόπο σύνδεσης των γραμμών ~MR και ~OE.

Επέκταση εισόδου

Η επέκταση των γραμμών εισόδου για το Arduino είναι καταρχήν παρόμοια με την επέκταση της εξόδου, λαμβάνοντας υπόψη το γεγονός ότι δεν χρειάζεται να ορίσετε την τιμή DS στην έξοδο, αλλά να την διαβάσετε στην είσοδο και να χρησιμοποιήσετε ένα τσιπ τύπου 74HC597. Ωστόσο, δεν το έχω δοκιμάσει ακόμα στην πράξη.

Πολυπλεξία

Μπορείτε να αυξήσετε τον αριθμό των γραμμών εξόδου που ελέγχονται από το Arduino με δύο τρόπους: 1) να αυξήσετε τη χωρητικότητα bit μιας σειριακής εξόδου, η οποία, όταν αυξάνεται η χωρητικότητα bit κατά δύο, τρεις ή τέσσερις φορές, μειώνει αντίστοιχα την ταχύτητα του διαστολέα κατά δύο , τρεις ή τέσσερις φορές? 2) παράλληλη σύνδεση πολλών διαστολέων, ενώ χρησιμοποιείται μία επιπλέον έξοδος για κάθε επέκταση, η οποία μπορεί να διατηρήσει την απόδοση σε αποδεκτό επίπεδο, αλλά απαιτεί τη χρήση τουλάχιστον μίας εξόδου Arduino για κάθε επέκταση.

Εάν δεν ελέγχετε απευθείας τα σήματα καταχωρητή 74HC595 - ~MR, ~OE με το Arduino, τότε μόνο τρεις έξοδοι Arduino αρκούν για τον έλεγχο των σημάτων καταχωρητή μετατόπισης DS, SHCP και STCP ώστε να μετατραπούν σε 8 ή 16 ή περισσότερα σήματα εξόδου χρησιμοποιώντας το τσιπ 74HC595.

Για να πολλαπλασιάσετε πολλούς διαστολείς που βασίζονται στο 74HC595, μπορείτε να κάνετε δύο τρόπους: 1) για κάθε επέκταση σήματος, επιλέξτε ένα ξεχωριστό σήμα κλειδώματος - π.χ. όλοι οι καταχωρητές του διαύλου μετατοπίζουν τα εισερχόμενα δεδομένα παράλληλα και, κατά συνέπεια, μετατοπίζουν τις τιμές στις εξόδους του εσωτερικού καταχωρητή μετατόπισης, αλλά μόνο ένας μεταδίδει την τιμή από τον εσωτερικό καταχωρητή μετατόπισης στις εξόδους του μικροκυκλώματος. 2) τα σήματα μετατόπισης μεταδίδονται μόνο σε έναν από τους διαστολείς και η μεταφορά των τιμών του σήματος στην έξοδο πραγματοποιείται ταυτόχρονα για όλες τις μονάδες επέκτασης.

Είμαι περισσότερο διατεθειμένος να χρησιμοποιήσω την επιλογή όταν οι εσωτερικοί καταχωρητές μετατόπισης μπορούν να περιέχουν οτιδήποτε θέλετε (επιλογή 1) και ορισμένες από τις προηγούμενες τιμές είναι σταθερές στην έξοδο και να γιατί: όταν μεταφέρετε τιμές από την εσωτερική μετατόπιση καταχωρήστε στην έξοδο, μπορεί να προκύψουν μη ελεγχόμενες μεταβάσεις από το 0 στο 1 και πίσω, κάποιο είδος αναπήδησης σήματος, ακόμα κι αν η αρχική τιμή στον εσωτερικό καταχωρητή και στην έξοδο είναι η ίδια. Και, κατά τη γνώμη μου, η λειτουργία μεταφοράς της κατάστασης του εσωτερικού καταχωρητή μετατόπισης στις εξόδους του 74HC595 θα πρέπει να χρησιμοποιείται όσο το δυνατόν λιγότερο.

Υποστήριξη λογισμικού

Η υποστήριξη λογισμικού για αυτήν και παρόμοιες επεκτάσεις συνίσταται στη μη απευθείας πρόσβαση σε συσκευές μέσω συγκεκριμένων ακίδων χρησιμοποιώντας το digitalRead/digitalWrite του ελεγκτή Arduino που χρησιμοποιείται, αλλά μέσω των ακίδων μιας αφηρημένης συσκευής I/O, η οποία, με τη σειρά της, μπορεί να αρχικοποιηθεί ως συνδεδεμένη με έναν συγκεκριμένο τύπο Arduino και σε άλλη παρόμοια αφηρημένη συσκευή.

Ένα από τα βασικά πλεονεκτήματα της πλατφόρμας Arduino είναι η δημοτικότητά της. Η δημοφιλής πλατφόρμα υποστηρίζεται ενεργά από κατασκευαστές ηλεκτρονικές συσκευές, παράγοντας ειδικές εκδόσεις διαφόρων πλακών που επεκτείνουν τη βασική λειτουργικότητα του ελεγκτή. Τέτοιες πλακέτες, που λογικά ονομάζονται πίνακες επέκτασης (άλλο όνομα: arduino shield, shield), χρησιμοποιούνται για την εκτέλεση μεγάλης ποικιλίας εργασιών και μπορούν να απλοποιήσουν σημαντικά τη ζωή ενός χειριστή arduino. Σε αυτό το άρθρο, θα μάθουμε τι είναι μια πλακέτα επέκτασης Arduino και πώς μπορεί να χρησιμοποιηθεί για να εργαστεί με μια ποικιλία Συσκευές Arduino: κινητήρες (ασπίδες οδήγησης κινητήρα), οθόνες LCD (ασπίδες LCD), κάρτες SD (καταγραφέας δεδομένων), αισθητήρες (ασπίδα αισθητήρα) και πολλά άλλα.

Ας καταλάβουμε πρώτα τους όρους. Μια πλακέτα επέκτασης Arduino είναι μια πλήρης συσκευή που έχει σχεδιαστεί για να εκτελεί ορισμένες λειτουργίες και συνδέεται με τον κύριο ελεγκτή χρησιμοποιώντας τυπικές υποδοχές. Ένα άλλο δημοφιλές όνομα για τον πίνακα επέκτασης είναι στα αγγλικά Ασπίδα Arduinoή απλώς ασπίδα. Η πλακέτα επέκτασης περιέχει όλα τα απαραίτητα ηλεκτρονικά εξαρτήματα, και η αλληλεπίδραση με τον μικροελεγκτή και άλλα στοιχεία της κύριας πλακέτας πραγματοποιείται μέσω τυπικών ακίδων Arduino. Τις περισσότερες φορές, η τροφοδοσία της ασπίδας παρέχεται επίσης από την κύρια πλακέτα arduino, αν και σε πολλές περιπτώσεις είναι δυνατή η τροφοδοσία της από άλλες πηγές. Σε οποιαδήποτε ασπίδα υπάρχουν αρκετές ελεύθερες ακίδες που μπορείτε να χρησιμοποιήσετε κατά την κρίση σας συνδέοντας οποιαδήποτε άλλα εξαρτήματα σε αυτά.

Η αγγλική λέξη Shield μεταφράζεται ως ασπίδα, οθόνη, οθόνη. Στο πλαίσιο μας, θα πρέπει να γίνει κατανοητό ως κάτι που καλύπτει την πλακέτα του ελεγκτή, δημιουργώντας ένα επιπλέον στρώμα της συσκευής, μια οθόνη πίσω από την οποία κρύβονται διάφορα στοιχεία.

Γιατί χρειαζόμαστε ασπίδες arduino;

Όλα είναι πολύ απλά: 1) για να εξοικονομήσουμε χρόνο και 2) κάποιος μπορεί να κερδίσει χρήματα από αυτό. Γιατί να χάνετε χρόνο σχεδιάζοντας, τοποθετώντας, κολλώντας και διορθώνετε κάτι που μπορείτε να πάρετε ήδη συναρμολογημένο και να αρχίσετε να χρησιμοποιείτε αμέσως; Οι καλά σχεδιασμένες πλακέτες επέκτασης που συναρμολογούνται σε εξοπλισμό υψηλής ποιότητας είναι συνήθως πιο αξιόπιστες και καταλαμβάνουν λιγότερο χώρο στην τελική συσκευή. Αυτό δεν σημαίνει ότι πρέπει να εγκαταλείψετε εντελώς αυτοσυναρμολόγησηκαι δεν χρειάζεται να κατανοήσετε την αρχή λειτουργίας ορισμένων στοιχείων. Άλλωστε, ένας πραγματικός μηχανικός προσπαθεί πάντα να καταλάβει πώς λειτουργεί αυτό που χρησιμοποιεί. Θα μπορέσουμε όμως να κατασκευάσουμε πιο σύνθετες συσκευές αν δεν εφευρίσκουμε ξανά τον τροχό κάθε φορά, αλλά εστιάζουμε την προσοχή μας σε αυτά που λίγοι άνθρωποι έχουν λύσει πριν.

Φυσικά, πρέπει να πληρώσετε για ευκαιρίες. Σχεδόν πάντα, το κόστος της τελικής ασπίδας θα είναι υψηλότερο από την τιμή των μεμονωμένων εξαρτημάτων, μπορείτε πάντα να κάνετε μια παρόμοια επιλογή φθηνότερη. Αλλά εδώ εξαρτάται από εσάς να αποφασίσετε πόσο κρίσιμο είναι για εσάς ο χρόνος ή τα χρήματα που ξοδεύετε. Λαμβάνοντας υπόψη κάθε δυνατή βοήθεια από την κινεζική βιομηχανία, το κόστος των σανίδων μειώνεται συνεχώς, επομένως τις περισσότερες φορές η επιλογή γίνεται υπέρ της χρήσης έτοιμες συσκευές.

Τα πιο δημοφιλή παραδείγματα ασπίδων είναι οι πλακέτες επέκτασης για εργασία με αισθητήρες, κινητήρες, οθόνες LCD, κάρτες SD, ασπίδες δικτύου και GPS, ασπίδες με ενσωματωμένα ρελέ για σύνδεση με το φορτίο.

Σύνδεση Arduino Shields

Για να συνδέσετε την ασπίδα, απλά πρέπει να την "βάλετε" προσεκτικά στην κύρια πλακέτα. Συνήθως, οι επαφές της ασπίδας τύπου χτένας (αρσενικό) εισάγονται εύκολα στους συνδέσμους της πλακέτας Arduino. Σε ορισμένες περιπτώσεις, είναι απαραίτητο να ρυθμίσετε προσεκτικά τις ακίδες εάν η ίδια η σανίδα δεν είναι σωστά συγκολλημένη. Το κύριο πράγμα εδώ είναι να ενεργήσετε προσεκτικά και να μην χρησιμοποιήσετε υπερβολική δύναμη.

Κατά κανόνα, μια ασπίδα προορίζεται να είναι εντελώς συγκεκριμένη έκδοσηελεγκτής, αν και, για παράδειγμα, πολλές ασπίδες για το Arduino Uno λειτουργούν αρκετά καλά με τις πλακέτες Arduino Mega. Το pinout στο mega είναι φτιαγμένο με τέτοιο τρόπο ώστε οι πρώτες 14 ψηφιακές ακίδες και οι ακίδες στην αντίθετη πλευρά της πλακέτας να συμπίπτουν με το pinout στο UNO, έτσι ώστε μια ασπίδα Arduino να μπορεί εύκολα να εισαχθεί σε αυτήν.

Προγραμματισμός Arduino Shield

Ο προγραμματισμός ενός κυκλώματος με πλακέτα επέκτασης δεν διαφέρει από τον κανονικό προγραμματισμό του Arduino, γιατί από την άποψη του ελεγκτή, απλώς συνδέσαμε τις συσκευές μας στις κανονικές ακίδες του. Στο σκίτσο πρέπει να υποδείξετε εκείνες τις ακίδες που είναι συνδεδεμένες στην ασπίδα με τις αντίστοιχες επαφές στον πίνακα. Κατά κανόνα, ο κατασκευαστής υποδεικνύει την αντιστοιχία των ακίδων στην ίδια την ασπίδα ή σε ξεχωριστή οδηγία σύνδεσης. Εάν κατεβάσετε τα σκίτσα που προτείνει ο ίδιος ο κατασκευαστής της πλακέτας, τότε δεν θα χρειαστεί καν να το κάνετε αυτό.

Η ανάγνωση ή η εγγραφή σημάτων ασπίδας γίνεται επίσης με τον συνηθισμένο τρόπο: χρησιμοποιώντας τις λειτουργίες , και άλλες εντολές που είναι γνωστές σε οποιονδήποτε χρήστη του Arduino. Σε ορισμένες περιπτώσεις, είναι πιθανές συγκρούσεις όταν είστε συνηθισμένοι σε ένα συγκεκριμένο σχέδιο σύνδεσης και ο κατασκευαστής έχει επιλέξει διαφορετικό (για παράδειγμα, τραβήξατε το κουμπί στο έδαφος και την ασπίδα στο τροφοδοτικό). Εδώ απλά πρέπει να είστε προσεκτικοί.

Κατά κανόνα, αυτή η πλακέτα επέκτασης διατίθεται σε κιτ Arduino και, επομένως, οι μηχανικοί της Arduino τη συναντούν πιο συχνά μαζί της. Η ασπίδα είναι αρκετά απλή - το κύριο καθήκον της είναι να παρέχει πιο βολικές επιλογές για σύνδεση Πλακέτα Arduino. Αυτό γίνεται μέσω πρόσθετοι σύνδεσμοιισχύς και γείωση στην πλακέτα σε καθεμία από τις αναλογικές και ψηφιακές ακίδες. Επίσης στην πλακέτα μπορείτε να βρείτε συνδέσμους για σύνδεση εξωτερική πηγήτροφοδοσία (χρειάζεται να εγκαταστήσετε βραχυκυκλωτήρες για εναλλαγή), LED και κουμπί επαναφοράς. Επιλογές ασπίδας και παραδείγματα χρήσης βρίσκονται στις εικόνες.




Υπάρχουν πολλές εκδόσεις της πλακέτας επέκτασης αφής. Όλα διαφέρουν ως προς τον αριθμό και τον τύπο των συνδετήρων. Οι πιο δημοφιλείς εκδόσεις σήμερα είναι το Sensor Shield v4 και v5.

Αυτή η ασπίδα Arduino είναι πολύ σημαντική σε ρομποτικά έργα, γιατί... σας επιτρέπει να συνδέσετε κανονικούς και σερβοκινητήρες στην πλακέτα Arduino ταυτόχρονα. Το κύριο καθήκον της ασπίδας είναι να παρέχει έλεγχο συσκευών που καταναλώνουν ρεύμα που είναι αρκετά υψηλό για μια κανονική πλακέτα Arduino. Πρόσθετα χαρακτηριστικάΗ πλακέτα έχει τη λειτουργία του ελέγχου της ισχύος του κινητήρα (με χρήση PWM) και της αλλαγής της φοράς περιστροφής. Υπάρχουν πολλοί τύποι σανίδων θωράκισης κινητήρα. Αυτό που είναι κοινό σε όλους τους είναι η παρουσία στο σχήμα ισχυρό τρανζίστορ, μέσω του οποίου συνδέεται το εξωτερικό φορτίο, στοιχεία ψύκτρας (συνήθως καλοριφέρ), κυκλώματα σύνδεσης εξωτερικό τροφοδοτικό, βύσματα σύνδεσης κινητήρων και ακίδες για σύνδεση στο Arduino.



Η οργάνωση της εργασίας με το δίκτυο είναι ένα από τα πιο σημαντικά καθήκοντα σε σύγχρονα έργα. Για να συνδεθείτε με τοπικό δίκτυομέσω Ethernet υπάρχει αντίστοιχη πλακέτα επέκτασης.




Πλάκες επέκτασης για πρωτότυπα

Αυτές οι πλακέτες είναι αρκετά απλές - διαθέτουν μαξιλαράκια επαφής για στοιχεία στερέωσης, κουμπί επαναφοράς και δυνατότητα σύνδεσης εξωτερικής τροφοδοσίας. Ο σκοπός αυτών των ασπίδων είναι να αυξήσουν τη συμπαγή της συσκευής, όταν όλα τα απαραίτητα εξαρτήματα βρίσκονται ακριβώς πάνω από την κύρια πλακέτα.





Ασπίδα LCD Arduino και ασπίδα tft

Αυτός ο τύπος ασπίδας χρησιμοποιείται για εργασία με οθόνες LCD στο Arduino. Όπως γνωρίζετε, η σύνδεση ακόμη και της απλούστερης οθόνης κειμένου 2 γραμμών απέχει πολύ από το να είναι τετριμμένη: πρέπει να συνδέσετε σωστά 6 επαφές οθόνης ταυτόχρονα, χωρίς να υπολογίζεται η παροχή ρεύματος. Πολύ πιο εύκολο στην εισαγωγή έτοιμη ενότηταστον πίνακα Arduino και απλώς ανεβάστε το αντίστοιχο σκίτσο. Στο δημοφιλές LCD Keypad Shield, από 4 έως 8 κουμπιά εγκαθίστανται αμέσως στην πλακέτα, γεγονός που σας επιτρέπει να οργανώσετε αμέσως μια εξωτερική διεπαφή για τον χρήστη της συσκευής. Το TFT Shield βοηθά επίσης



Arduino Data Logger Shield

Μια άλλη εργασία που είναι αρκετά δύσκολο να εφαρμοστεί ανεξάρτητα στα προϊόντα σας είναι η αποθήκευση δεδομένων που λαμβάνονται από αισθητήρες με χρονική αναφορά. Η τελική ασπίδα σάς επιτρέπει όχι μόνο να εξοικονομείτε δεδομένα και να λαμβάνετε χρόνο από το ενσωματωμένο ρολόι, αλλά και να συνδέετε αισθητήρες σε βολική μορφή με συγκόλληση ή σε πλακέτα κυκλώματος.




Σύντομη περίληψη

Σε αυτό το άρθρο, εξετάσαμε μόνο ένα μικρό μέρος της τεράστιας σειράς διαφόρων συσκευών που επεκτείνουν τη λειτουργικότητα του Arduino. Οι κάρτες επέκτασης σάς επιτρέπουν να εστιάσετε στο πιο σημαντικό πράγμα - στη λογική του προγράμματός σας. Οι δημιουργοί των ασπίδων έχουν φροντίσει για σωστή και αξιόπιστη εγκατάσταση και την απαραίτητη παροχή ρεύματος. Το μόνο που έχετε να κάνετε είναι να βρείτε την απαιτούμενη αμοιβή, χρησιμοποιώντας την πολύτιμη αγγλική λέξη shield, συνδέστε το με το Arduino και ανεβάστε το σκίτσο. Συνήθως, οποιοσδήποτε προγραμματισμός ασπίδας αποτελείται από την εκτέλεση απλών ενεργειών για τη μετονομασία των εσωτερικών μεταβλητών ενός έτοιμου προγράμματος. Ως αποτέλεσμα, έχουμε ευκολία χρήσης και σύνδεσης, καθώς και ταχύτητα συναρμολόγησης τελικών συσκευών ή πρωτοτύπων.

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