PCF8574: O I2C I / O razširjevalniku za Arduino

PCF8574 TI ČIP

Zagotovo ste že slišali za IC PCF8574, čip, ki ga lahko kupite ločeno ali ga že namestite na modul, kot mnogi drugi Elektronske komponente za lažjo integracijo z vašo ploščo Arduino. V tem primeru gre za razširitev vhodov in izhodov za vodilo I2C.

Morda mislite, da Arduino že ima svojega integrirano vodilo I2Cin res je. Toda PCF8574 lahko pomaga razširiti to vodilo preko meja vaše razvojne plošče, kar je lahko v veliko pomoč nekaterim proizvajalcem, ki potrebujejo več kot le tisto, kar ponuja Arduino.

Kaj je vodilo I2C?

Arduino UNO milis funkcije

Ime I2C prihaja iz Vgrajeno vezje ali medintegrirana vezja. Njeno različico 1.0 je leta 1992 ustvaril Philips. Potem bi leta 2.1 prišel drugi 2000, danes pa je postal standard (s hitrostjo 100 kbit / s, čeprav omogoča največ 3.4 Mbit / s), ko je patent potekel leta 2006 in ga je mogoče prosto uporabljati.

Trenutno se pogosto uporablja v industriji za komunikacijo, izdelovalci pa jih tudi zelo cenijo za njihove projekte komuniciranja različnih mikrokrmilnikov in zunanjih naprav, integriranih v eno IC.

El I2C je avtobus dobro znano iz serijske komunikacije. Uporablja sinhroni komunikacijski protokol s samo dvema kanaloma (obstaja še tretji, vendar je povezan z referenco ali GND), pravzaprav je znan tudi kot TWI (dvožični vmesnik):

  • Ena za uro (SCL).
  • Drugo za podatke (SDA).
Oba sta odprta odtočna CMOS povezava in zahtevata vlečne upore. Če ena naprava oddaja 0, druga pa 1, lahko pride do težav, zato je linija vedno nastavljena na 1 (visoka raven), naprave pa vedno oddajajo 0 (nizka raven).

To pomeni, da gospodar in suženj podatke pošiljajo po istem kablu ali tiru, ki ga nadzira prvi, ki generira signal ure. Vsaka periferna naprava, priključena na vodilo I2C, bo imela dodeljen edinstven naslov za usmerjanje prenosov. Ni pa nujno, da je mojster vedno isti (multi-master), vedno je on tisti, ki sproži prenos.

Kot sem že razložil v članku o Arduino I2C Prej sem omenil, vsaka plošča ima te povezave I2C na različnih mestih. Nekaj ​​morate imeti v mislih, da ga lahko pravilno uporabljate v vsaki različici plošče:

  • Arduino UNO: SDA je v A4 in SCK v A5
  • Arduino Nano: enako kot prejšnji.
  • Arduino Mini Pro: enako.
  • Arduino Mega: SDA je na pin 20 in SCK na 21.
  • Več informacij o ploščah.

Že veste, da lahko I2C enostavno uporabljate za svoje skice, saj Knjižnica Wire.h z različnimi funkcijami za to serijsko komunikacijo:

  • začeti (): zaženite knjižnico Wire in določite, ali je glavna ali pomožna
  • requestFrom (): uporablja poveljnik za zahtevanje podatkov od podrejenega.
  • beginTransmission (): zagon prenosa s pomožnim.
  • endTransmission (): končni prenos.
  • piši ()- Zapišite podatke iz podrejenega kot odgovor na zahtevo glavne enote ali pa pošljete glavno vrsto v čakalno vrsto.
  • na voljo (): vrne število bajtov za branje.
  • preberi (): prebere bajt, ki se prenese iz pomožnega v glavni ali obratno.
  • onReceive (): Pokliče funkcijo, ko podrejeni prejme prenos od glavne enote.
  • na zahtevo (): Pokliče funkcijo, ko podrejeni zahteva podatke od glavne enote.

za más información o programiranju in funkcijah Arduino lahko prenesete naše Vadnica za PDF.

Kaj je PCF8574?

Modul PCF8574

PCF8574 je Razširjevalnik digitalnih vhodov in izhodov vodila I2C (I / O). Izdelujejo ga lahko različni proizvajalci, poleg tega pa je na voljo v IC in modulih. V vsakem primeru je zelo praktično, da ga povežete s svojo ploščo Arduino in imate zmožnost nadzora več naprav, kot to omogoča matična plošča.

El PCF8574 pinout je preprost, saj vključuje samo 8 borovci kvazi smer (P0-P7, kjer so povezani čipi za komunikacijo), na drugi strani pa imate SDA in SCL, ki ju morate priključiti na ploščo Arduino, pa tudi VCC in GND za napajanje modula. In ne pozabite na tri naslovni zatiči A0, A1, A2, da izberete, v katero od naprav bo komunikacija usmerjena ...

PCF8574 pinout

Lastniki druge lastnosti da bi morali vedeti:

  • Njegove povezave so lahko odprt odtok uporablja kot vhode in izhode.
  • La maksimalni tok znaša 25 mA, ko deluje kot izhod (ponor, ko tok teče proti PCF8574), in 300 µA (vir, tok teče iz PCF8574).
  • La napetost napajanje je 2.5 in 6v. Poraba v stanju pripravljenosti je zelo nizka, le 10 µA.
  • Vsi izhodi imajo zapahe, za ohranitev stanja brez zunanjih ukrepov. Ukrepati morate le, če želite spremeniti stanje.
  • Lahko dobite 8 možna navodila, to je do 8 naprav za komunikacijo z 8 moduli ali razširitev do 64 naprav. Naslovi (nožice A0, A1, A2) bodo:
    • 000: naslov 0x20
    • 001: naslov 0x21
    • 010: naslov 0x22
    • 011: naslov 0x23
    • 100: naslov 0x24
    • 101: naslov 0x25
    • 110: naslov 0x26
    • 111: naslov 0x27
  • Priznava prekinitev (INT) s posebno vrstico za zaznavanje podatkov brez nenehnega spremljanja.

Integracija z Arduinom

Posnetek zaslona Arduino IDE

Povezava z Arduinom je zelo preprosta, le Vcc morate povezati s 5v zatičem plošče Arduino, GND pa z GND Arduina. Po drugi strani pa so lahko zatiči modula PCF8574 SDA in SCL povežite z zatiči 14 (A5 SCL) in 15 (A4 SDA). Šele s tem bi začelo delovati, očitno lahko s Px povežete naprave, s katerimi želite komunicirati ...

Potem bi le manjkal začnite s primerno skico v Arduino IDE. To lahko storite brez uporabe dodatne knjižnice, kot je ...

#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);
   }
}

Kot vhod:

#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);
}

Ali tudi uporabljati knjižnice, kot je PCF8574, ki ga lahko prenesite tukaj in uporabite kodo, podobno tej iz primera samega, ki je priložen tej knjižnici:

#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() 
{
}


Vsebina članka je v skladu z našimi načeli uredniška etika. Če želite prijaviti napako, kliknite tukaj.

Bodite prvi komentar

Pustite svoj komentar

Vaš e-naslov ne bo objavljen. Obvezna polja so označena z *

*

*

  1. Za podatke odgovoren: Miguel Ángel Gatón
  2. Namen podatkov: Nadzor neželene pošte, upravljanje komentarjev.
  3. Legitimacija: Vaše soglasje
  4. Sporočanje podatkov: Podatki se ne bodo posredovali tretjim osebam, razen po zakonski obveznosti.
  5. Shranjevanje podatkov: Zbirka podatkov, ki jo gosti Occentus Networks (EU)
  6. Pravice: Kadar koli lahko omejite, obnovite in izbrišete svoje podatke.