PCF8574: obțineți mai mulți pini de conectare pentru Arduino

pcf8574

Este posibil să vă fi găsit într-o situație în care ați dori să extindeți numărul de intrări și ieșiri disponibile pentru dvs placa arduino, deoarece realizați un proiect care are nevoie de mai multe dispozitive decât se aștepta. În aceste cazuri ai putea face un singur lucru, și anume să te gândești să cumperi o placă de un model mai înalt cu mai multe dintre aceste conexiuni. Dar acum cu PCF8574 poate extinde I/O-ul Arduino într-un mod ușor și ieftin.

Aici vă vom arăta ce este PCF8574 în cazul în care nu îl știați, pe lângă faptul că vă vom arăta cum poate fi conectat la placa dvs. Arduino explicat pas cu pas și cum funcționează...

Ce este PCF8574?

pcf8574

El PCF8574 este un expandor de intrare și ieșire digitală (I/O) pentru magistrala I2C1. Acest dispozitiv, fabricat de Philips, vă permite să conectați un procesor precum Arduino pentru a controla mai multe dispozitive folosind mai puțini pini2. PCF8574 încorporează 8 pini cvasidirecționali bazați pe ieșiri CMOS în configurație de scurgere deschisă.

În plus, PCF8574 este un dispozitiv de putere redusă care acceptă operațiuni VCC de la 2.5 V la 6 V. Dispune de un port I/O cvasi-bidirecțional de 8 biți, ieșiri blocate, ieșire de întrerupere a scurgerii deschise și capacitate de acționare cu curent ridicat pentru LED-uri. Pe de altă parte, consumul său în stand-by este foarte scăzut, mai mic de 10 µA.

Este foarte util pentru Extindeți capacitățile plăcii dvs. Arduino dincolo de limitele sale, care poate fi de mare ajutor pentru creatorii care au nevoie de ceva mai mult decât ceea ce oferă Arduino. Curentul maxim pe care îl poate furniza fiecare pin va depinde de configurație:

  • Când acționează ca o ieșire, este de 25 mA când acționează ca o chiuvetă, adică atunci când curentul electric curge către PCF8574. Aceasta este configurația implicită.
  • Când acționează ca sursă, este de 300µA, adică atunci când curentul curge din PCF8574. De asemenea, trebuie să știți că toate ieșirile au Latch-uri, adică mențin starea de la sine într-un registru. Trebuie să acționăm doar atunci când dorim să modificăm starea uneia dintre ieșiri.

Comunicarea se face prin magistrala I2C, astfel încât este ușor să obțineți date de la dispozitivele conectate la acesta. De asemenea, trebuie remarcat faptul că are 3 pini de adresă, ceea ce oferă 8 posibile conexiuni la aceeași magistrală I2C. Aceasta înseamnă că este posibil să controlați 64 de dispozitive folosind doar 2 pini.

Setări de adresă

Unele modele ale acestui modul PCF8574 includ de obicei pini de configurare și jumperi precum cele pe care le vedeți în imaginea de mai sus. Pe de altă parte, alte modele includ un comutator care ușurează lucrurile cu cele trei microîntrerupătoare... Fie că sunt obișnuiți să configurați adrese de pini I/O:

A0 A1 A2 Adresă
0 0 0 0x20
0 0 1 0x21
0 1 0 0x22
0 1 1 0x23
1 0 0 0x24
1 0 1 0x25
1 1 0 0x26
1 1 1 0x27

Preț și trebuie să cumpărați

Se gaseste la doar cativa euro. Este un dispozitiv destul de ieftin pentru cât de practic poate fi pentru unele modele Arduino care au un număr mai mic de I/O-uri. Așa că dacă ești în căutarea unui PCF8574, îl poți găsi în magazine specializate sau și pe mari platforme online precum Amazon, Aliexpress sau eBay. De exemplu, aici vă recomandăm unul:

Conectarea PCF8574 la Arduinno

la conectați expanderul PCF8574 la placa dvs. Arduino, Schema de conectare este destul de simplă. Va trebui doar să vă conectați:

  • Pinul SCL marcat pe placa PCF8574 la pinul SCL al Arduino. Acest pin se poate schimba în funcție de model, dar este de obicei pe A5 pe modelele mai populare precum UNO.
  • Pinul SDA al expanderului trebuie să se conecteze cu pinul SDA al Arduino. Același lucru pe care l-am menționat mai sus, se poate schimba în funcție de model, dar în general este A4. Dacă aveți îndoieli, verificați pinout-ul modelului dvs.
  • Pinul GND al PCF8574 va fi desigur conectat la cel marcat GND pe Arduino, adică este conexiunea la masă.
  • Pinul Vcc al expanderului este conectat la 5V al Arduino, în acest fel, cu GND și Vcc am alimentat deja placa expander pentru a putea începe să funcționeze.

operație

Odată ce PCF8574 este conectat la placa Arduino, acum este timpul să știți cum functioneazã. Pentru a face acest lucru, trebuie să aveți în vedere că veți putea avea 8 pini în plus, în schimbul că ați folosit doi pini Arduino, pe lângă cei de putere. Pe de altă parte, trebuie să țineți cont de ceva, și anume că pe fiecare dintre acești 8 pini ai PCF8574 aveți un tranzistor MOSFET împreună cu un rezistor pull-up cu rezistență foarte scăzută. Aceasta presupune o intensitate de curent de 100 microA atunci când tranzistorul este activ.

Și asta ne lasă cu următoarea panoramă:

  • Configurare ca ieșire- Când pinul este folosit ca ieșire, acesta acționează ca un absorbant de curent, așa cum am discutat mai sus, adică curentul intră.
    • LOW: Când este la tensiune joasă, nu conduce curent, sarcină = Vdd.
    • HIGH: când la tensiune înaltă, poate trece un curent de până la 25mA, sarcina va fi conectată la GND.
  • Configurare ca intrare: trebuie întotdeauna setat la HIGH, iar în acest caz va acționa ca o sursă, adică curentul curge afară.
    • Închis: Când sarcina externă nu este dată, tensiunea de pe pin merge la GND.
    • Abierta: Când apare o sarcină externă, tensiunea pinului devine Vdd.

Codul IDE Arduino

Arduino IDE, tipuri de date, programare

Dacă ceea ce doriți sunt câteva exemple despre cum să creați cod pentru a utiliza acest PCF8574 pe Arduino, este la fel de simplu ca utilizarea acestor exemple de cod pe care le puteți modifica în funcție de nevoile dvs.:

  • Configurație ca ieșire:
#include <Wire.h>

const int pcfAddress = 0x38;

void setup()
{
  Wire.begin();
  Serial.begin(9600);
}

void loop()
{
  for (short channel = 0; channel < 8; channel++)
  {
    // Escribir dato en canal 'channel'
    Wire.beginTransmission(pcfAddress);
    Wire.write(~(1 << channel));
    Wire.endTransmission();
    
    // Leer dato de canal
    delay(500);
  }
}
  • Configurare ca intrare:
#include <Wire.h>

const int pcfAddress = 0x38;

void setup()
{
  Wire.begin();
  Serial.begin(9600);
}

void loop()
{
  short channel = 1;
  byte value = 0;

  // Leer dato de canal 'channel'
  Wire.requestFrom(pcfAddress, 1 << channel);
  if (Wire.available())
  {
    value = Wire.read();
  }
  Wire.endTransmission();

  // Mostrar el valor por puerto serie
  Serial.println(value);
}

Amintiți-vă că puteți utiliza și bibliotecă creată special pentru PCF8574 care include și exemple practice...


Fii primul care comenteaza

Lasă comentariul tău

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

*

*

  1. Responsabil pentru date: Miguel Ángel Gatón
  2. Scopul datelor: Control SPAM, gestionarea comentariilor.
  3. Legitimare: consimțământul dvs.
  4. Comunicarea datelor: datele nu vor fi comunicate terților decât prin obligație legală.
  5. Stocarea datelor: bază de date găzduită de Occentus Networks (UE)
  6. Drepturi: în orice moment vă puteți limita, recupera și șterge informațiile.