PCF8574: Ngeunaan I2C I / O Expander pikeun Arduino

PCF8574 TI CHIP

Anjeun pasti parantos nguping IC PCF8574, chip anu tiasa dipésér nyalira atanapi parantos dipasang dina modul sapertos anu sanés Komponén éléktronik pikeun mempermudah integrasi anjeun sareng dewan Arduino anjeun. Dina hal ieu, éta mangrupikeun panyambung input sareng kaluaran pikeun beus I2C.

Anjeun panginten panginten yén Arduino parantos gaduh nyalira beus I2C terpadu, sareng éta leres. Tapi PCF8574 tiasa ngabantosan beus éta saluareun watesan papan pangembangan anjeun, anu tiasa janten bantosan pisan pikeun sababaraha produsen anu peryogi langkung ti ngan ukur naon anu disayogikeun ku Arduino.

Naon beus I2C?

Arduino UNO fungsi millis

Ngaran I2C asalna tina Sirkuit Antarpadu atanapi sirkuit antar-terpadu. Versi na 1.0 didamel taun 1992 ku Philips. Maka 2.1 anu kadua bakal datang dina taun 2000 sareng ayeuna parantos janten standar (dina 100 kbit / s, sanaos ngamungkinkeun nepi ka 3.4 Mbit / s maksimal) nalika patén kadaluarsana dina 2006 sareng tiasa dianggo bébas.

Ayeuna ayeuna seueur dianggo di industri pikeun komunikasi, sareng ogé ngaapresiasi pisan ku anu ngadamel pikeun proyék-proyékna pikeun komunikasi béda mikrokontroler sareng periferal anu terintegrasi dina hiji IC.

El I2C nyaéta beus kawéntar ti komunikasi siri. Éta nganggo protokol komunikasi sinkron ngan ukur 2 kanal (aya anu katilu, tapi gandeng janten rujukan atanapi GND), nyatana ogé dikenal salaku TWI (Two Wire Interface):

  • Hiji kanggo jam (SCL).
  • Lianna pikeun data (SDA).
Duanana nyaéta sambungan CMOS solokan kabuka sareng meryogikeun résistor résistansi. Ogé, upami hiji alat ngirimkeun 0 sareng anu sanés 1, panginten tiasa aya masalah, éta sababna garisna sok disetél ka 1 (tingkat luhur) sareng alatna salawasna ngirimkeun 0 (tingkat handap).

Éta ngakibatkeun yén tuan sareng budak aranjeunna ngirimkeun data nganggo kabel atanapi jalur anu sami, anu dikawasa ku anu pangpayunna nyaéta anu ngahasilkeun sinyal jam. Masing-masing alat periferal anu nyambung kana beus I2C bakal ngagaduhan alamat anu unik, pikeun ngarahkeun transmisi. Tapi teu perlu yén master sok sami (multi-master), éta salawasna anjeunna anu ngagentos mindahkeun.

Sakumaha kuring parantos ngajelaskeun dina tulisan dina Arduino I2C Kuring ngarujuk tadi, unggal dewan ngagaduhan koneksi I2C ieu di tempat anu béda. Éta mangrupikeun hal anu anjeun kedah émut kanggo tiasa ngagunakeunana leres dina unggal versi pelat:

  • Arduino UNO: SDA aya dina A4 sareng SCK dina A5
  • Arduino Nano: sami sareng anu tadi.
  • Arduino Mini Pro: sami
  • Arduino Mega: SDA aya dina pin 20 sareng SCK dina 21.
  • Inpormasi lengkep ngeunaan pelat.

Anjeun parantos terang yén anjeun tiasa nganggo I2C pikeun skétsa anjeun kalayan gampang, ti saprak Perpustakaan Wire.h kalayan sababaraha fungsi pikeun komunikasi serial ieu:

  • mimiti (): ngamimitian perpustakaan Kawat sareng tangtukeun naha éta master atanapi budak
  • requestFrom (): dianggo ku tuan kanggo nyungkeun data ti babu.
  • startTransmission (): ngamimitian transmisi ku budak.
  • Pangiriman Pangiriman (): pangiriman tungtung.
  • nyerat ()- Tulis data ti budak salaku réspon kana pamundut ti master, atanapi anjeun tiasa ngantri pangiriman master.
  • aya (): bakal mulang jumlah bait pikeun dibaca.
  • baca (): maca bait anu dikirimkeun ti budak ka master atanapi sabalikna.
  • onReceive (): Nelepon fungsi nalika budak nampi panularan ti tuan.
  • onRequest (): Nelepon pungsi nalika hamba nyungkeun data ti master.

Para inpo leuwih ngeunaan pamrograman sareng fungsi Arduino anjeun tiasa ngaunduh Tutorial PDF.

Naon PCF8574?

Modul PCF8574

PCF8574 mangrupikeun I2C beus input digital sareng output (I / O) expander. Éta tiasa didamel ku sababaraha pabrik, salian ti éta aya dina IC sareng modul. Bisi wae, praktis pisan pikeun nyambungkeun kana papan Arduino anjeun sareng ngagaduhan kapasitas pikeun ngontrol langkung seueur alat tibatan motherboard anu ngamungkinkeun.

El PCF8574 pinout éta saderhana, kumargi ngan ukur kalebet pines 8 kuasi arah (P0-P7 dimana chip pikeun komunikasi dihubungkeun), sareng di sisi anu sanésna anjeun ngagaduhan SDA sareng SCL anu anjeun kedah sambungkeun kana papan Arduino, ogé VCC sareng GND pikeun ogé ngamuat modulna. Sareng tong hilap tilu pin ngarahkeunnana A0, A1, A2 pikeun milih alat mana anu komunikasi diarahkeun ka ...

PCF8574 pinout

Tilik fitur séjén anu anjeun kedah terang:

  • Sambunganana, janten pembuangan terbuka, tiasa janten dipaké duanana salaku inputs atanapi outputs.
  • La puncak ayeuna éta 25mA nalika éta bertindak salaku kaluaran (tilelep, nalika arus ngalir ka PCF8574) sareng 300 µA (sumber, arus ngalir tina PCF8574).
  • La stres catu daya nyaéta 2.5 sareng 6v. Konsumsi anu dibanderol rendah pisan, ngan ukur 10 µA.
  • Sadaya kaluaran gaduh latches, pikeun ngajaga nagara tanpa kedah tindakan luar. Anjeun ngan ukur kedah meta nalika badé ngarobih kaayaan.
  • Anjeun tiasa kéngingkeun 8 arah anu mungkin, nyaéta, dugi ka 8 alat pikeun komunikasi sareng atanapi nganggo 8 modul pikeun ngalegaan dugi ka 64 alat. Alamatna (pin A0, A1, A2) nyaéta:
    • 000: alamat 0x20
    • 001: alamat 0x21
    • 010: alamat 0x22
    • 011: alamat 0x23
    • 100: alamat 0x24
    • 101: alamat 0x25
    • 110: alamat 0x26
    • 111: alamat 0x27
  • Ngaku gangguan (INT) ku garis khusus pikeun ngadeteksi data tanpa ngawaskeun sacara tetep.

Integrasi sareng Arduino

Potret layar tina Arduino IDE

Sambungan sareng Arduino saderhana pisan, anjeun kedah nyambungkeun Vcc sareng pin 5v tina papan Arduino, sareng GND sareng GND of Arduino. Di sisi anu sanésna, pin tina modul PCF8574 SDA sareng SCL tiasa sambungkeun sareng pin 14 (A5 SCL) sareng 15 (A4 SDA). Ngan ku éta bakal mimiti jalan, écés anjeun tiasa nganggo Px pikeun nyambungkeun alat anu anjeun hoyong komunikasi ...

Maka éta bakal leungit mimitian ku conto sketsa dina Arduino IDE. Anjeun tiasa ngalakukeun éta tanpa nganggo perpustakaan tambahan sapertos ...

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

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

Atanapi ogé ngagunakeun perpustakaan, sapertos PCF8574 anu anjeun tiasa ngundeur di dieu sareng nganggo kode anu sami sareng ieu tina conto dirina sorangan anu sumping sareng perpustakaan ieu:

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


Eusi tulisan taat kana prinsip urang tina étika éditorial. Pikeun ngalaporkeun kasalahan klik di dieu.

Janten kahiji komen

Ninggalkeun koméntar anjeun

email alamat anjeun moal diterbitkeun. Widang diperlukeun téh ditandaan ku *

*

*

  1. Jawab data: Miguel Ángel Gatón
  2. Tujuan tina data: Kontrol SPAM, manajemén koméntar.
  3. Legitimasi: idin anjeun
  4. Komunikasi data: Data moal dikomunikasikan ka pihak katilu kacuali ku kawajiban hukum.
  5. Panyimpenan data: Basis data anu diayakeun ku Occentus Networks (EU)
  6. Hak: Iraha waé anjeun tiasa ngawatesan, cageur sareng mupus inpormasi anjeun.