PCF8574: Σχετικά με το I2C I / O Expander για το Arduino

Τσιπ PCF8574 TI

Έχετε σίγουρα ακούσει για το IC PCF8574, ένα τσιπ που μπορεί να αγοραστεί χωριστά ή ήδη τοποθετημένο σε μια ενότητα όπως πολλά άλλα ΗΛΕΚΤΡΟΝΙΚΑ ΕΞΑΡΤΗΜΑΤΑ για να διευκολύνετε την ενσωμάτωσή σας με τον πίνακα Arduino. Σε αυτήν την περίπτωση, αποτελεί επέκταση των εισόδων και εξόδων για το λεωφορείο I2C.

Μπορεί να πιστεύετε ότι το Arduino έχει ήδη το δικό του ενσωματωμένο λεωφορείο I2C, Και αυτό είναι αλήθεια. Αλλά το PCF8574 μπορεί να σας βοηθήσει να επεκτείνετε αυτό το λεωφορείο πέρα ​​από τα όρια της πλακέτας ανάπτυξης, το οποίο μπορεί να βοηθήσει πολύ σε ορισμένους κατασκευαστές που χρειάζονται περισσότερα από αυτά που παρέχει το Arduino.

Τι είναι το λεωφορείο I2C;

Arduino UNO λειτουργίες millis

Το όνομα I2C προέρχεται Ενσωματωμένο κύκλωμα ή ενσωματωμένα κυκλώματα. Η έκδοση 1.0 δημιουργήθηκε το 1992 από τη Philips. Στη συνέχεια, ένα δεύτερο 2.1 θα έρθει το 2000 και σήμερα έχει γίνει ένα πρότυπο (στα 100 kbit / s, αν και επιτρέπει έως και 3.4 Mbit / s το μέγιστο) όταν το δίπλωμα ευρεσιτεχνίας έληξε το 2006 και μπορεί να χρησιμοποιηθεί ελεύθερα.

Προς το παρόν χρησιμοποιείται ευρέως στη βιομηχανία για επικοινωνία, και επίσης εκτιμάται πολύ από τους κατασκευαστές για τα έργα τους για την επικοινωνία διαφορετικών μικροελεγκτών και περιφερειακών ενσωματωμένων σε ένα IC.

El Το I2C είναι λεωφορείο γνωστό από τη σειριακή επικοινωνία. Χρησιμοποιεί ένα σύγχρονο πρωτόκολλο επικοινωνίας με μόνο 2 κανάλια (υπάρχει ένα τρίτο, αλλά συνδέεται με αναφορά ή GND), στην πραγματικότητα είναι επίσης γνωστό ως TWI (Two Wire Interface):

  • Ένα για το ρολόι (SCL).
  • Άλλο για δεδομένα (SDA).
Και οι δύο είναι ανοιχτές συνδέσεις CMOS και απαιτούν αντιστάσεις έλξης. Επίσης, εάν μία συσκευή μεταδίδει 0 και άλλη 1, μπορεί να υπάρχουν προβλήματα, γι 'αυτό η γραμμή είναι πάντα ρυθμισμένη στο 1 (υψηλό επίπεδο) και οι συσκευές μεταδίδουν πάντα 0 (χαμηλό επίπεδο)

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

Όπως ήδη εξήγησα στο άρθρο Arduino I2C Αναφέρθηκα νωρίτερα, κάθε πίνακας έχει αυτές τις συνδέσεις I2C σε διαφορετικά μέρη. Είναι κάτι που πρέπει να θυμάστε για να μπορείτε να το χρησιμοποιείτε σωστά σε κάθε έκδοση της πινακίδας:

  • Arduino UNO: Το SDA είναι στο A4 και το SCK στο A5
  • Arduino Nano: το ίδιο με το προηγούμενο.
  • Arduino Mini Pro: το ίδιο.
  • Arduino Mega: Το SDA βρίσκεται στον ακροδέκτη 20 και το SCK στο 21.
  • Περισσότερες πληροφορίες για πιάτα.

Γνωρίζετε ήδη ότι μπορείτε να χρησιμοποιήσετε το I2C για τα σκίτσα σας εύκολα, αφού το Βιβλιοθήκη Wire.h με διάφορες λειτουργίες για αυτήν τη σειριακή επικοινωνία:

  • να αρχίσει(): ξεκινήστε τη βιβλιοθήκη Wire και καθορίστε αν είναι master ή slave
  • αίτημαΑπό (): χρησιμοποιήθηκε από τον πλοίαρχο για να ζητήσει δεδομένα από το slave.
  • έναρξηΜετάδοση (): ξεκινήστε τη μετάδοση με το slave.
  • endTransmission (): τελική μετάδοση.
  • γράφω()- Γράψτε δεδομένα από έναν σκλάβο ως απάντηση σε ένα αίτημα του πλοιάρχου, ή μπορείτε να ουρά τη μετάδοση ενός κύριου.
  • διαθέσιμος (): θα επιστρέψει τον αριθμό των byte για ανάγνωση.
  • ανάγνωση(): διαβάστε ένα byte που μεταδίδεται από έναν σκλάβο σε έναν κύριο ή το αντίστροφο.
  • onReceive (): Καλεί μια λειτουργία όταν ένας σκλάβος λαμβάνει μια μετάδοση από έναν κύριο.
  • κατόπιν αίτησης (): Καλεί μια συνάρτηση όταν ένας σκλάβος ζητά δεδομένα από έναν κύριο.

να περισσότερο για τον προγραμματισμό και τις λειτουργίες του Arduino μπορείτε να κατεβάσετε το δικό μας Εκμάθηση PDF.

Τι είναι το PCF8574;

Ενότητα PCF8574

Το PCF8574 είναι ένα Ψηφιακές εισόδους και έξοδοι διαύλου I2C (I / O). Μπορεί να κατασκευαστεί από διάφορους κατασκευαστές, εκτός από τη διάθεσή του σε IC και μονάδες. Σε κάθε περίπτωση, είναι πολύ πρακτικό να το συνδέσετε στην πλακέτα Arduino και να έχετε την ικανότητα να ελέγχετε περισσότερες συσκευές από ό, τι επιτρέπει η μητρική πλακέτα.

El PCF8574 pinout Είναι απλό, καθώς περιλαμβάνει μόνο 8 πεύκα οιονεί-κατεύθυνση (P0-P7 όπου συνδέονται τα chip που επικοινωνούν) και από την άλλη πλευρά έχετε το SDA και το SCL που πρέπει να συνδέσετε στην πλακέτα Arduino, καθώς και VCC και GND για να τροφοδοτήσετε επίσης τη μονάδα. Και μην ξεχνάτε τις τρεις ακίδες διεύθυνσης A0, A1, A2 για να επιλέξετε σε ποιες από τις συσκευές απευθύνεται η επικοινωνία ...

PCF8574 pinout

Διαθέτει άλλα χαρακτηριστικά που πρέπει να γνωρίζετε:

  • Οι συνδέσεις του, που είναι ανοιχτή αποστράγγιση, μπορεί να είναι χρησιμοποιείται τόσο ως είσοδοι όσο και ως έξοδοι.
  • La μέγιστο ρεύμα είναι 25mA όταν λειτουργεί ως έξοδος (νεροχύτης, όταν το ρεύμα ρέει προς PCF8574) και 300 μΑ (πηγή, ρεύμα ρέει από PCF8574).
  • La ένταση η τροφοδοσία είναι 2.5 και 6v. Η αναμονή κατανάλωσης είναι πολύ χαμηλή, μόνο 10 μΑ.
  • Όλες οι έξοδοι έχει μάνδαλα, για τη διατήρηση της κατάστασης χωρίς την ανάγκη εξωτερικών ενεργειών. Πρέπει να ενεργείτε μόνο όταν θέλετε να αλλάξετε την κατάσταση.
  • Μπορείτε να πάρετε 8 πιθανές κατευθύνσεις, Δηλαδή, έως και 8 συσκευές για επικοινωνία ή χρήση 8 μονάδων για επέκταση έως και 64 συσκευών. Οι διευθύνσεις (ακίδες A0, A1, A2) θα είναι:
    • 000: διεύθυνση 0x20
    • 001: διεύθυνση 0x21
    • 010: διεύθυνση 0x22
    • 011: διεύθυνση 0x23
    • 100: διεύθυνση 0x24
    • 101: διεύθυνση 0x25
    • 110: διεύθυνση 0x26
    • 111: διεύθυνση 0x27
  • Παραδέχεται διακοπή (INT) από μια ειδική γραμμή για τον εντοπισμό δεδομένων χωρίς συνεχή παρακολούθηση.

Ενσωμάτωση με το Arduino

Στιγμιότυπο οθόνης Arduino IDE

Η σύνδεση με το Arduino είναι πολύ απλή, απλά πρέπει να συνδέσετε το Vcc με τον πείρο 5v του πίνακα Arduino και το GND με το GND του Arduino. Από την άλλη πλευρά, οι ακίδες της μονάδας PCF8574 SDA και SCL μπορεί να είναι συνδεθείτε με καρφίτσες 14 (A5 SCL) και 15 (A4 SDA). Μόνο με αυτό θα αρχίσει να λειτουργεί, προφανώς μπορείτε να χρησιμοποιήσετε το Px για να συνδέσετε τις συσκευές που θέλετε να επικοινωνήσετε ...

Τότε θα έλειπε μόνο ξεκινήστε με ένα παράδειγμα σκίτσο στο Arduino IDE. Μπορείτε να το κάνετε χωρίς να χρησιμοποιήσετε επιπλέον βιβλιοθήκη όπως ...

#include <Wire.h>
 
const int address = 0x38;
 
void setup()
{
   Wire.begin();
   Serial.begin(9600);
}
 
void loop()
{
   for (short channel = 0; channel < 8; channel++)
   {
      // Escribir dato en cada uno de los 8 canales
      Wire.beginTransmission(address);
      Wire.write(~(1 << channel));
      Wire.endTransmission();
      
      // Lee dato del canal
      delay(500);
   }
}

Ως είσοδος:

#include <Wire.h>
 
const int address = 0x38;
 
void setup()
{
   Wire.begin();
   Serial.begin(9600);
}
 
void loop()
{
   short channel = 1;
   byte value = 0;
 
   // Leer el dato del canal
   Wire.requestFrom(pcfAddress, 1 << channel);
   if (Wire.available())
   {
      value = Wire.read();
   }
   Wire.endTransmission();
 
   // Mostrar el valor leido por el monitor serie
   Serial.println(value);
}

Ή επίσης χρησιμοποιήστε βιβλιοθήκες, όπως το PCF8574 που μπορείτε κατεβάστε εδώ και χρησιμοποιήστε κωδικό παρόμοιο με αυτό από το ίδιο το παράδειγμα που συνοδεύει αυτήν τη βιβλιοθήκη:

#include <Wire.h>
#include "PCF8574.h"
 
PCF8574 expander;
 
void setup() 
{
  Serial.begin(9600);
  
  expander.begin(0x20);
  
  /* Setup some PCF8574 pins for demo */
  expander.pinMode(0, OUTPUT);
  expander.pinMode(1, OUTPUT);
  expander.pinMode(2, OUTPUT);
  expander.pinMode(3, INPUT_PULLUP);
 
  /* Blink hardware LED for debug */
  digitalWrite(13, HIGH);  
  
  /* Toggle PCF8574 output 0 for demo */
  expander.toggle();
  
  /* Blink hardware LED for debug */
  digitalWrite(13, LOW);
}
 
 
 
void loop() 
{
}


Το περιεχόμενο του άρθρου συμμορφώνεται με τις αρχές μας συντακτική ηθική. Για να αναφέρετε ένα σφάλμα κάντε κλικ Aquí.

Γίνε ο πρώτος που θα σχολιάσει

Αφήστε το σχόλιό σας

Η διεύθυνση email σας δεν θα δημοσιευθεί. Τα υποχρεωτικά πεδία σημειώνονται με *

*

*

  1. Υπεύθυνος για τα δεδομένα: Miguel Ángel Gatón
  2. Σκοπός των δεδομένων: Έλεγχος SPAM, διαχείριση σχολίων.
  3. Νομιμοποίηση: Η συγκατάθεσή σας
  4. Κοινοποίηση των δεδομένων: Τα δεδομένα δεν θα κοινοποιούνται σε τρίτους, εκτός από νομική υποχρέωση.
  5. Αποθήκευση δεδομένων: Βάση δεδομένων που φιλοξενείται από τα δίκτυα Occentus (ΕΕ)
  6. Δικαιώματα: Ανά πάσα στιγμή μπορείτε να περιορίσετε, να ανακτήσετε και να διαγράψετε τις πληροφορίες σας.