PCF8574: Tungkol sa I2C I / O Expander para sa Arduino

PCF8574 TI CHIP

Tiyak na narinig mo ang IC PCF8574, isang maliit na tilad na maaaring bilhin nang hiwalay o naka-mount na sa isang module tulad ng iba pa Mga elektronikong sangkap upang mapadali ang iyong pagsasama sa iyong Arduino board. Sa kasong ito, ito ay isang extender ng mga input at output para sa ang I2C bus.

Maaari mong isipin na ang Arduino ay mayroon nang sarili integrated I2C bus, at ito ay totoo. Ngunit makakatulong ang PCF8574 na pahabain ang bus na iyon na lampas sa mga limitasyon ng iyong development board, na maaaring maging malaking tulong sa ilang mga gumagawa na nangangailangan ng higit pa sa ibinigay ng Arduino.

Ano ang I2C bus?

Arduino UNO pagpapaandar ng millis

Galing ang pangalang I2C Inter-Integrated Circuit o mga inter-integrated circuit. Ang bersyon na ito 1.0 ay nilikha noong 1992 ng Philips. Pagkatapos ang isang segundo 2.1 ay darating noong 2000 at ngayon ito ay naging isang pamantayan (sa 100 kbit / s, bagaman pinapayagan hanggang sa 3.4 Mbit / s maximum) kapag nag-expire ang patent noong 2006 at maaaring malayang magamit.

Sa kasalukuyan malawak na ginagamit ito sa industriya para sa komunikasyon, at lubos ding pinahahalagahan ng mga gumagawa para sa kanilang mga proyekto upang makipag-usap sa iba't ibang mga microcontroller at peripheral na isinama sa isang IC.

El Ang I2C ay isang bus kilalang-kilala mula sa serial komunikasyon. Gumagamit ito ng isang kasabay na protocol ng komunikasyon na may 2 channel lamang (may pangatlo, ngunit isinama ito sa sanggunian o GND), sa katunayan kilala rin ito bilang TWI (Two Wire Interface):

  • Isa para sa orasan (SCL).
  • Iba pa para sa data (SDA).
Parehong bukas na maubos ang mga koneksyon ng CMOS at nangangailangan ng mga resistor na pull-up. Bilang karagdagan, kung ang isang aparato ay nagpapadala ng isang 0 at isa pa sa isang 1, maaaring may mga problema, iyon ang dahilan kung bakit ang linya ay laging nakatakda sa 1 (mataas na antas) at ang mga aparato ay laging nagpapadala ng 0 (mababang antas).

Ipinapahiwatig nito na ang panginoon at alipin nagpapadala sila ng data sa parehong cable o track, na kinokontrol ng una na isa na bumubuo ng signal ng orasan. Ang bawat isa sa mga aparatong paligid ay konektado sa I2C bus ay magkakaroon ng natatanging address na nakatalaga, upang maituro ang mga pagpapadala. Ngunit hindi kinakailangan na ang guro ay palaging pareho (multi-guro), palaging siya ang nagpasimula ng paglipat.

Tulad ng naipaliwanag ko na sa artikulo sa Arduino I2C Sumangguni ako nang mas maaga, ang bawat board ay may mga koneksyon na I2C sa iba't ibang mga lugar. Ito ay isang bagay na kailangan mong tandaan upang magamit ito nang maayos sa bawat bersyon ng plate:

Alam mo na na maaari mong gamitin ang I2C para sa iyong mga sketch madali, dahil ang Wire.h library na may iba't ibang mga pag-andar para sa serial na komunikasyon na ito:

  • simulan (): simulan ang Wire library at tukuyin kung ito ay master o alipin
  • requestFrom (): ginamit ng master upang humiling ng data mula sa alipin.
  • simulan ang Pagpapadala (): simulan ang paghahatid sa alipin.
  • endTransmission (): pagtatapos ng paghahatid.
  • sumulat ()- Sumulat ng data mula sa isang alipin bilang tugon sa isang kahilingan mula sa master, o maaari kang pumila sa paghahatid ng master.
  • magagamit (): ibabalik ang bilang ng mga byte upang mabasa.
  • basahin (): basahin ang isang byte na ipinadala mula sa isang alipin sa isang master o kabaliktaran.
  • onReceive (): Tumatawag ng isang pagpapaandar kapag ang isang alipin ay tumatanggap ng isang paghahatid mula sa isang master.
  • onRequest (): Tumatawag ng isang pagpapaandar kapag ang isang alipin ay humiling ng data mula sa isang master.

Sa higit pang impormasyon tungkol sa Arduino programming at pag-andar maaari mong i-download ang aming PDF tutorial.

Ano ang PCF8574?

Module ng PCF8574

Ang PCF8574 ay isang I2C bus digital input at output (I / O) expander. Maaari itong gawin ng iba't ibang mga tagagawa, bilang karagdagan sa pagkakaroon nito na magagamit sa mga IC at modyul. Sa anumang kaso, napaka praktikal na ikonekta ito sa iyong Arduino board at may kakayahang kontrolin ang mas maraming mga aparato kaysa sa pinapayagan ng motherboard.

El PCF8574 pinout Ito ay simple, dahil nagsasama lamang ito 8 pines quasidirectional (P0-P7 kung saan nakakonekta ang mga chip upang makipag-usap), at sa kabilang banda mayroon kang SDA at SCL na dapat mong kumonekta sa Arduino board, pati na rin ang VCC at GND upang mapalakas din ang module. At huwag kalimutan ang tatlong mga addressing pin na A0, A1, A2 upang pumili kung alin sa mga aparato na nakadirekta ang komunikasyon ...

PCF8574 pinout

Mga nagmamay-ari iba pang mga tampok na dapat mong malaman:

  • Ang mga koneksyon nito, pagiging isang bukas na alisan ng tubig, ay maaaring ginamit pareho bilang mga input at output.
  • La rurok na kasalukuyang ito ay 25mA kapag kumikilos ito bilang isang output (lababo, kapag ang kasalukuyang daloy patungo sa PCF8574) at 300 µA (pinagmulan, kasalukuyang daloy mula sa PCF8574).
  • La pag-igting ang supply ng kuryente ay 2.5 at 6v. Ang stand-by na pagkonsumo ay napakababa, 10 µA lamang.
  • Lahat ng output may latches, upang mapanatili ang estado nang hindi nangangailangan ng mga panlabas na aksyon. Kailangan mo lang kumilos kapag nais mong baguhin ang estado.
  • Maaari kang makakuha ng 8 mga posibleng direksyon, iyon ay, hanggang sa 8 mga aparato upang makipag-usap sa o paggamit ng 8 mga module upang mapalawak ito hanggang sa 64 mga aparato. Ang mga address (pin A0, A1, A2) ay magiging:
    • 000: address 0x20
    • 001: address 0x21
    • 010: address 0x22
    • 011: address 0x23
    • 100: address 0x24
    • 101: address 0x25
    • 110: address 0x26
    • 111: address 0x27
  • Mga pag-amin pagkagambala (INT) ng isang espesyal na linya upang makita ang data nang hindi patuloy na sinusubaybayan.

Pagsasama sa Arduino

Screenshot ng Arduino IDE

Ang koneksyon sa Arduino ay napaka-simple, kailangan mo lamang ikonekta ang Vcc sa 5v pin ng Arduino board, at GND sa GND ng Arduino. Sa kabilang banda, ang mga pin ng PCF8574 SDA at SCL module ay maaaring maging kumonekta sa mga pin 14 (A5 SCL) at 15 (A4 SDA). Sa pamamagitan lamang nito magsisimulang gumana, malinaw na maaari mong gamitin ang Px upang ikonekta ang mga aparato na nais mong makipag-usap ...

Kung gayon mawawala lamang ito magsimula sa isang halimbawa ng sketch sa Arduino IDE. Maaari mo itong gawin nang hindi gumagamit ng isang karagdagang silid-aklatan tulad ng halimbawa ...

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

Bilang input:

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

O kaya naman gumamit ng mga aklatan, tulad ng PCF8574 na magagawa mo i-download dito at gumamit ng code na katulad nito mula sa halimbawang mismong kasama ng library na ito:

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


Ang nilalaman ng artikulo ay sumusunod sa aming mga prinsipyo ng etika ng editoryal. Upang mag-ulat ng isang pag-click sa error dito.

Maging una sa komento

Iwanan ang iyong puna

Ang iyong email address ay hindi nai-publish. Mga kinakailangang patlang ay minarkahan ng *

*

*

  1. Responsable para sa data: Miguel Ángel Gatón
  2. Layunin ng data: Kontrolin ang SPAM, pamamahala ng komento.
  3. Legitimation: Ang iyong pahintulot
  4. Komunikasyon ng data: Ang data ay hindi maiparating sa mga third party maliban sa ligal na obligasyon.
  5. Imbakan ng data: Ang database na naka-host ng Occentus Networks (EU)
  6. Mga Karapatan: Sa anumang oras maaari mong limitahan, mabawi at tanggalin ang iyong impormasyon.