PCF8574: Konsènan I2C I / O ekspansyon pou Arduino

PCF8574 TI CHIP

Ou te siman tande pale de la IC PCF8574, yon chip ki ka achte separeman oswa deja monte sou yon modil tankou anpil lòt moun Konpozan elektwonik fasilite entegrasyon ou ak tablo Arduino ou. Nan ka sa a, li se yon extender nan entrain yo ak rezilta pou otobis I2C la.

Ou ka panse ke Arduino deja gen pwòp li yo entegre I2C otobis, e se vre. Men, PCF8574 la ka ede pwolonje otobis sa a ki depase limit tablo devlopman ou an, ki ka yon gwo èd pou kèk mizisyen ki bezwen plis pase jis sa Arduino bay.

Ki sa ki otobis la I2C?

Arduino UNO milis fonksyon

Non I2C a soti nan Entè-entegre Integrated Awondisman oswa sikwi entè-entegre. Vèsyon 1.0 li te kreye an 1992 pa Philips. Lè sa a, yon dezyèm 2.1 ta vini nan 2000 e jodi a li te vin yon estanda (nan 100 kbit / s, byenke li pèmèt jiska 3.4 Mbit / s maksimòm) lè patant lan ekspire nan 2006 epi yo ka itilize lib.

Koulye a, li se lajman ki itilize nan endistri an pou kominikasyon, epi tou anpil apresye pa mizisyen pou pwojè yo kominike mikrokontroleur diferan ak periferik entegre nan yon sèl IC.

El I2C se yon bis byen li te ye nan kominikasyon seri. Li itilize yon pwotokòl kominikasyon synchronous ak sèlman 2 chanèl (gen yon twazyèm, men li makonnen ak referans oswa GND), an reyalite li se ke yo rele tou TWI (De Fil Entèfas):

  • Youn pou revèy la (SCL).
  • Lòt pou done (sda).
Tou de yo louvri koneksyon drenaj CMOS epi yo mande pou rale-up rezistans. Epitou, si yon aparèy transmèt yon 0 ak yon lòt yon 1, ta ka gen pwoblèm, se konsa liy lan toujou mete nan 1 (wo nivo) ak aparèy yo toujou transmèt 0 (ba nivo).

Sa implique ke la mèt ak esklav yo voye done sou kab la menm oswa tras, ki se kontwole pa youn nan premye ki jenere siyal la revèy. Chak nan aparèy yo periferik ki konekte nan otobis la I2C ap gen yon adrès inik asiyen, yo nan lòd yo dirije transmisyon yo. Men, li pa nesesè ke pwofesè a se toujou menm bagay la tou (milti-pwofesè), li se toujou li ki inisye transfè a.

Kòm mwen deja eksplike nan atik la sou Arduino I2C Mwen referans pi bonè, chak tablo gen koneksyon sa yo I2C nan diferan kote. Li se yon bagay ke ou dwe kenbe nan tèt ou pou kapab sèvi ak li byen nan chak vèsyon plak:

  • Arduino UNO: SDA se nan A4 ak SCK nan A5
  • Arduino Nano: menm jan ak anvan an.
  • Arduino Mini Pro: menm.
  • Arduino Mega: SDA se sou PIN 20 ak SCK sou 21.
  • Plis enfòmasyon sou plak.

Ou deja konnen ke ou ka itilize I2C a pou trase ou fasilman, depi Wire.h bibliyotèk ak divès fonksyon pou kominikasyon seri sa a:

  • kòmanse (): kòmanse bibliyotèk la Fil epi presize si li se mèt oswa esklav
  • requestFrom (): itilize pa mèt la pou mande done esklav la.
  • beginTransmission (): kòmanse transmisyon ak esklav.
  • endTransmission (): transmisyon fen.
  • ekri ()- Ekri done ki sòti nan yon esklav an repons a yon demann nan men mèt la, oswa ou ka nat transmisyon yon mèt la.
  • disponib (): ap retounen kantite octets pou li.
  • li (): li yon byte transmèt soti nan yon esklav nan yon mèt oswa vis vèrsa.
  • onReceive (): Rele yon fonksyon lè yon esklav resevwa yon transmisyon nan men yon mèt.
  • onRequest (): Rele yon fonksyon lè yon esklav mande done ki sòti nan yon mèt.

Pou plis enfòmasyon sou pwogram Arduino ak fonksyon ou ka telechaje nou an PDF leson patikilye.

Ki sa ki PCF8574 la?

PCF8574 modil

PCF8574 la se yon I2C otobis entrain dijital ak pwodiksyon (I / O) ekspansyon. Li ka fabrike pa divès kalite manifaktirè, nan adisyon a li disponib nan IC ak modil. Nan nenpòt ka, li trè pratik yo konekte li nan tablo Arduino ou epi yo gen kapasite nan kontwole plis aparèy pase mèr la pèmèt.

El PCF8574 pinout se senp, depi li gen ladan sèlman 8 Pines quasidirectional (P0-P7 kote chips yo kominike yo konekte), ak sou lòt men an ou gen sda a ak SCL ke ou dwe konekte nan tablo a Arduino, osi byen ke VCC ak GND tou pouvwa modil la. Epi pa bliye twa broch yo adrese A0, A1, A2 yo chwazi ki nan aparèy yo kominikasyon an dirije ...

PCF8574 pinout

Posede lòt karakteristik ke ou ta dwe konnen:

  • Koneksyon li yo, yo te yon drenaj louvri, yo ka itilize tou de kòm entrain ak rezilta.
  • La pik aktyèl li se 25mA lè li aji kòm yon pwodiksyon (koule, lè aktyèl ap koule nan direksyon pou PCF8574) ak 300 µA (sous, aktyèl ap koule soti nan PCF8574).
  • La estrès ekipman pou pouvwa se 2.5 ak 6v. Konsomasyon an kanpe-a trè ba, se sèlman 10 µA.
  • Tout rezilta gen latch, yo kenbe eta a san yo pa bezwen pou aksyon ekstèn. Ou gen sèlman aji lè ou vle chanje eta a.
  • Ou ka jwenn 8 direksyon posib, se sa ki, jiska 8 aparèy yo kominike avèk oswa lè l sèvi avèk 8 modil yo elaji li jiska 64 aparèy. Adrès yo (broch A0, A1, A2) yo pral:
    • 000: adrès 0x20
    • 001: adrès 0x21
    • 010: adrès 0x22
    • 011: adrès 0x23
    • 100: adrès 0x24
    • 101: adrès 0x25
    • 110: adrès 0x26
    • 111: adrès 0x27
  • Admèt entèripsyon (INT) pa yon liy espesyal yo detekte done san yo pa toujou ap siveye.

Entegrasyon ak Arduino

D 'Arduino IDE

Koneksyon an ak Arduino se trè senp, ou jis gen konekte Vcc ak PIN la 5v nan tablo a Arduino, ak GND ak GND nan Arduino. Nan lòt men an, broch yo nan modil la PCF8574 SDA ak SCL kapab konekte ak broch 14 (A5 SCL) ak 15 (A4 SDA). Se sèlman ak sa li ta kòmanse travay, evidamman ou ka itilize Px a konekte aparèy yo ou vle kominike ...

Lè sa a, li ta sèlman manke kòmanse avèk yon egzanp egzanp nan IDE Arduino. Ou ka fè li san ou pa itilize yon bibliyotèk adisyonèl tankou ...

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

Kòm opinyon:

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

Oswa tou sèvi ak bibliyotèk, tankou PCF8574 ke ou kapab download isit la epi sèvi ak kòd ki sanble ak sa a soti nan egzanp nan tèt li ki vini ansanm ak bibliyotèk sa a:

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


Kontni an nan atik la respekte prensip nou yo nan etik editoryal. Pou rapòte yon erè klike sou isit la.

Se pou premye a fè kòmantè

Kite kòmantè ou

Adrès imèl ou pa pral dwe pibliye. Jaden obligatwa yo make ak *

*

*

  1. Responsab pou done yo: Miguel Ángel Gatón
  2. Objektif done yo: Kontwòl SPAM, jesyon kòmantè.
  3. Lejitimasyon: konsantman ou
  4. Kominikasyon nan done yo: done yo pa pral kominike bay twazyèm pati eksepte pa obligasyon legal.
  5. Done depo: baz done anime pa rezo Occentus (Inyon Ewopeyen)
  6. Dwa: Nenpòt ki lè ou ka limite, refè ak efase enfòmasyon ou yo.