PCF8574: merrni më shumë kunja lidhjesh për Arduino

pcf8574

Ju mund ta keni gjetur veten në një situatë ku dëshironi të zgjeroni numrin e hyrjeve dhe daljeve të disponueshme për ju bordi arduino, pasi po kryeni një projekt që ka nevojë për më shumë pajisje sesa pritej. Në këto raste ju mund të bëni vetëm një gjë, dhe kjo është të mendoni për të blerë një tabelë të një modeli më të lartë me më shumë nga këto lidhje. Por tani me PCF8574 mund të zgjerojë hyrjen/daljen e Arduino në një mënyrë të lehtë dhe të lirë.

Këtu do t'ju tregojmë se çfarë është PCF8574 në rast se nuk e dinit, përveçse do t'ju tregojmë se si mund të lidhet me bordin tuaj Arduino shpjegohet hap pas hapi dhe si funksionon...

Çfarë është PCF8574?

pcf8574

El PCF8574 është një zgjerues dixhital i hyrjes dhe daljes (I/O) për autobusin I2C1. Kjo pajisje, e prodhuar nga Philips, ju lejon të lidhni një procesor si Arduino për të kontrolluar më shumë pajisje duke përdorur më pak kunja2. PCF8574 përfshin 8 kunja pothuajse të drejtuara bazuar në daljet CMOS në konfigurimin e kullimit të hapur.

Për më tepër, PCF8574 është një pajisje me fuqi të ulët që mbështet operacionet e KQV-së nga 2.5V në 6V. Ai përmban një portë I/O pothuajse dydrejtimëshe 8-bitësh, dalje të mbyllura, dalje të ndërprerjes së kullimit të hapur dhe aftësi lëvizëse me rrymë të lartë për LED. Nga ana tjetër, konsumi i tij në gatishmëri është shumë i ulët, më pak se 10 µA.

Veryshtë shumë e dobishme për Zgjeroni aftësitë e bordit tuaj Arduino përtej kufijve të tij, e cila mund të jetë një ndihmë e madhe për krijuesit që kanë nevojë për diçka më shumë se ajo që ofron Arduino. Rryma maksimale që çdo kunj mund të furnizojë do të varet nga konfigurimi:

  • Kur vepron si një dalje, është 25 mA kur vepron si lavaman, domethënë kur rryma elektrike rrjedh në PCF8574. Ky është konfigurimi i paracaktuar.
  • Kur vepron si burim është 300µA, domethënë kur rryma rrjedh nga PCF8574. Po kështu, duhet të dini se të gjitha daljet kanë Latches, domethënë e mbajnë vetë gjendjen në një regjistër. Ne duhet të veprojmë vetëm kur duam të modifikojmë gjendjen e njërit prej rezultateve.

Komunikimi është bërë me autobus I2C, kështu që është e lehtë të merren të dhëna nga pajisjet e lidhura me të. Po kështu, duhet theksuar se ka 3 kunja adresash, të cilat japin 8 lidhje të mundshme me të njëjtin autobus I2C. Kjo do të thotë se është e mundur të kontrolloni 64 pajisje duke përdorur vetëm 2 kunja.

Cilësimet e adresës

Disa modele të këtij moduli PCF8574 zakonisht përfshijnë kunjat e konfigurimit dhe kërcyesit si ato që shihni në imazhin e mësipërm. Nga ana tjetër, modelet e tjera përfshijnë një çelës që i bën gjërat më të lehta me tre mikroçelsat... Sido që të jetë, ata janë mësuar të konfiguroni adresat e kunjave 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

Cmimi dhe ku mund te blihet

E gjeni vetem per disa euro. Është një pajisje shume e lire se sa praktike mund të jetë për disa modele Arduino që kanë një numër më të vogël hyrjesh/hyrjesh. Pra, nëse jeni duke kërkuar për një PCF8574, mund ta gjeni në dyqane të specializuara ose gjithashtu në platforma të mëdha online si Amazon, Aliexpress ose eBay. Për shembull, këtu ne rekomandojmë një:

Lidhja e PCF8574 me Arduinno

lidhni zgjeruesin PCF8574 me bordin tuaj Arduino, Diagrami i lidhjes është mjaft i thjeshtë. Ju do të duhet vetëm të lidheni:

  • Kunja SCL e shënuar në tabelën PCF8574 te kunja SCL e Arduino. Ky pin mund të ndryshojë në varësi të modelit, por zakonisht është në A5 në modelet më të njohura si UNO.
  • Pini SDA i zgjeruesit duhet të lidhet me pinin SDA të Arduino. Te njejten gje qe permenda me lart, mund te ndryshoje ne varesi te modelit, por ne pergjithesi eshte A4. Nëse keni dyshime, kontrolloni pinout të modelit tuaj.
  • Pini GND i PCF8574 sigurisht që do të lidhet me atë të shënuar GND në Arduino, domethënë është lidhja e tokës.
  • Pini Vcc i zgjeruesit është i lidhur me 5V të Arduino-s, në këtë mënyrë, me GND dhe Vcc tashmë e kemi fuqizuar tabelën e zgjeruesit në mënyrë që të fillojë të punojë.

operacion

Pasi PCF8574 është lidhur me bordin Arduino, tani është koha për ta ditur si punon. Për ta bërë këtë, duhet të keni parasysh se do të keni mundësi të keni 8 kunja shtesë, në këmbim të përdorimit të dy kunjave Arduino, përveç atyre të fuqisë. Nga ana tjetër, duhet të keni parasysh diçka, dhe kjo është se në secilën nga ato 8 kunjat e PCF8574 keni një transistor MOSFET së bashku me një rezistencë tërheqëse me rezistencë shumë të ulët. Kjo supozon një intensitet të rrymës prej 100 mikroA kur transistori është aktiv.

Dhe kjo na lë me panoramën e mëposhtme:

  • Konfigurimi si dalje- Kur kunja përdoret si një dalje, ajo vepron si një lavaman rrymë, siç e kam diskutuar më lart, d.m.th. rrjedh rryma.
    • I ULËT: Kur është në tension të ulët, nuk përcjell rrymë, ngarkesë = Vdd.
    • I LARTË: kur në tension të lartë, mund të kalojë deri në 25 mA rrymë, ngarkesa do të lidhet me GND.
  • Konfigurimi si hyrje: duhet të vendoset gjithmonë në LARTË, dhe në këtë rast do të veprojë si burim, domethënë, rryma rrjedh jashtë.
    • Mbyllur: Kur ngarkesa e jashtme nuk jepet, voltazhi në pin shkon në GND.
    • E hapur: Kur ndodh një ngarkesë e jashtme, voltazhi i pinit bëhet Vdd.

Kodi Arduino IDE

Arduino IDE, llojet e të dhënave, programimi

Nëse ajo që dëshironi janë disa shembuj se si të krijoni kod për të përdorur këtë PCF8574 në Arduino, është po aq e thjeshtë sa përdorimi i këtyre shembujve të kodit që mund t'i modifikoni sipas nevojave tuaja:

  • Konfigurimi si dalje:
#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);
  }
}
  • Konfigurimi si hyrje:
#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);
}

Mos harroni se ju gjithashtu mund të përdorni biblioteka e krijuar posaçërisht për PCF8574 i cili përfshin edhe shembuj praktikë…


Bëhu i pari që komenton

Lini komentin tuaj

Adresa juaj e emailit nuk do të publikohet. Fusha e kërkuar janë shënuar me *

*

*

  1. Përgjegjës për të dhënat: Miguel Ángel Gatón
  2. Qëllimi i të dhënave: Kontrolloni SPAM, menaxhimin e komenteve.
  3. Legjitimimi: Pëlqimi juaj
  4. Komunikimi i të dhënave: Të dhënat nuk do t'u komunikohen palëve të treta përveç me detyrim ligjor.
  5. Ruajtja e të dhënave: Baza e të dhënave e organizuar nga Occentus Networks (BE)
  6. Të drejtat: Në çdo kohë mund të kufizoni, rikuperoni dhe fshini informacionin tuaj.