PCF8574: Kuhusu I2C I / O Expander ya Arduino

PCF8574 TI CHIP

Umesikia habari za IC PCF8574, chip ambayo inaweza kununuliwa kando au tayari imewekwa kwenye moduli kama wengine wengi Vipengele vya elektroniki kuwezesha ujumuishaji wako na bodi yako ya Arduino. Katika kesi hii, ni extender ya pembejeo na matokeo ya basi la I2C.

Unaweza kufikiria kuwa Arduino tayari ina yake mwenyewe jumuishi I2C basi, na ni kweli. Lakini PCF8574 inaweza kusaidia kupanua basi hiyo zaidi ya mipaka ya bodi yako ya maendeleo, ambayo inaweza kuwa msaada mkubwa kwa watunga wengine ambao wanahitaji zaidi ya kile Arduino inatoa.

Basi ya I2C ni nini?

Arduino UNO kazi za millis

Jina I2C linatoka Mzunguko uliojumuishwa au nyaya zilizounganishwa. Toleo lake 1.0 liliundwa mnamo 1992 na Philips. Halafu 2.1 ya pili ingekuja mnamo 2000 na leo imekuwa kiwango (kwa 100 kbit / s, ingawa inaruhusu hadi kiwango cha juu cha 3.4 Mbit / s) wakati hati miliki ilimalizika mnamo 2006 na inaweza kutumika kwa uhuru.

Kwa sasa inatumika sana katika tasnia kwa mawasiliano, na pia inathaminiwa sana na watunga miradi yao ya kuwasiliana na wadhibiti anuwai na vifaa vya pembejeo vilivyounganishwa katika IC moja.

El I2C ni basi inayojulikana kutoka kwa mawasiliano ya serial. Inatumia itifaki ya mawasiliano inayolingana na njia 2 tu (kuna ya tatu, lakini imeunganishwa na rejeleo au GND), kwa kweli inajulikana pia kama TWI (Mbili waya Interface):

  • Moja kwa saa (SCL).
  • Nyingine kwa data (SDA).
Zote mbili ni wazi kufungua uhusiano wa CMOS na zinahitaji vipinga-kuvuta. Pia, ikiwa kifaa kimoja kinapeleka 0 na kingine 1, kunaweza kuwa na shida, kwa hivyo laini hiyo imewekwa kila wakati kuwa 1 (kiwango cha juu) na vifaa kila wakati vinasambaza 0 (kiwango cha chini).

Hiyo ina maana kwamba bwana na mtumwa hutuma data juu ya kebo moja au wimbo, ambao unadhibitiwa na ile ya kwanza ambayo hutoa ishara ya saa. Kila moja ya vifaa vya pembeni vilivyounganishwa na basi ya I2C vitakuwa na anwani ya kipekee iliyopewa, ili kuelekeza usambazaji. Lakini sio lazima kwamba mwalimu ni sawa kila wakati (mwalimu anuwai), kila wakati ndiye anayeanzisha uhamishaji.

Kama nilivyoelezea tayari kwenye nakala juu ya Arduino I2C Nilitaja mapema, kila bodi ina unganisho hili la I2C katika maeneo tofauti. Ni kitu ambacho unapaswa kuzingatia ili kuweza kukitumia vizuri katika kila toleo la sahani:

  • Arduino UNO: SDA iko katika A4 na SCK katika A5
  • Arduino Nano: sawa na ya awali.
  • Arduino Mini Pro: sawa.
  • Mega Arduino: SDA iko kwenye pin 20 na SCK on 21.
  • Habari zaidi juu ya sahani.

Tayari unajua kuwa unaweza kutumia I2C kwa michoro yako kwa urahisi, kwani Maktaba ya Wire.h na kazi anuwai kwa mawasiliano haya ya serial:

  • Anza (): Anzisha maktaba ya waya na taja ikiwa ni bwana au mtumwa
  • ombiKutoka (): hutumiwa na bwana kuomba data kutoka kwa mtumwa.
  • Anza Uwasilishaji (): Anza maambukizi na mtumwa.
  • mwisho Uwasilishaji (): maambukizi ya mwisho.
  • andika()- Andika data kutoka kwa mtumwa kwa kujibu ombi kutoka kwa bwana, au unaweza kupanga foleni ya usambazaji wa bwana.
  • inapatikana (): itarudisha idadi ya ka kusoma.
  • soma (): soma byte iliyoambukizwa kutoka kwa mtumwa kwenda kwa bwana au kinyume chake.
  • Pokea ()Huitisha kazi wakati mtumwa anapokea maambukizi kutoka kwa bwana.
  • Omba ()Huta kazi wakati mtumwa anaomba data kutoka kwa bwana.

kwa habari zaidi kuhusu programu na kazi za Arduino unaweza kupakua yetu Mafunzo ya PDF.

PCF8574 ni nini?

Moduli ya PCF8574

PCF8574 ni Pembejeo na matokeo ya dijiti ya basi ya I2C (I / O) expander. Inaweza kutengenezwa na wazalishaji anuwai, kwa kuongeza kuwa inapatikana katika IC na moduli. Kwa hali yoyote, ni muhimu sana kuiunganisha kwenye bodi yako ya Arduino na uwe na uwezo wa kudhibiti vifaa vingi kuliko vile kibodi cha mama kinaruhusu.

El Pini ya PCF8574 ni rahisi, kwani inajumuisha tu Vipande vya 8 elekezi (P0-P7 ambapo vidakuzi vya kuwasiliana vimeunganishwa), na kwa upande mwingine una SDA na SCL ambayo lazima uunganishe na bodi ya Arduino, pamoja na VCC na GND ili kuwezesha moduli. Na usisahau pini tatu za kushughulikia A0, A1, A2 kuchagua ni ipi ya vifaa mawasiliano yanaelekezwa kwa ...

Pini ya PCF8574

Mmiliki sifa zingine kwamba unapaswa kujua:

  • Uunganisho wake, kuwa unyevu wazi, inaweza kuwa kutumika kama pembejeo na matokeo.
  • La kilele cha sasa ni 25mA wakati inafanya kazi kama pato (kuzama, wakati sasa inapita kuelekea PCF8574) na 300 (A (chanzo, mtiririko wa sasa kutoka PCF8574).
  • La mvutano usambazaji wa umeme ni 2.5 na 6v. Matumizi ya kusimama ni ya chini sana, 10 onlyA tu.
  • Matokeo yote kuwa na latches, kudumisha hali bila hitaji la vitendo vya nje. Lazima utende tu wakati unataka kubadilisha hali.
  • Unaweza kupata 8 mwelekeo unaowezekana, Hiyo ni, hadi vifaa 8 vya kuwasiliana na au kutumia moduli 8 ili kuipanua hadi vifaa 64. Anwani (pini A0, A1, A2) zitakuwa:
    • 000: anwani 0x20
    • 001: anwani 0x21
    • 010: anwani 0x22
    • 011: anwani 0x23
    • 100: anwani 0x24
    • 101: anwani 0x25
    • 110: anwani 0x26
    • 111: anwani 0x27
  • Inakubali usumbufu (INT) na laini maalum ya kugundua data bila ufuatiliaji wa kila wakati.

Ushirikiano na Arduino

Picha ya skrini ya Arduino IDE

Uunganisho na Arduino ni rahisi sana, lazima tu uunganishe Vcc na pini ya 5v ya bodi ya Arduino, na GND na GND ya Arduino. Kwa upande mwingine, pini za moduli ya PCF8574 SDA na SCL zinaweza kuwa unganisha na pini 14 (A5 SCL) na 15 (A4 SDA). Ni kwa hiyo tu ingeanza kufanya kazi, ni wazi unaweza kutumia Px kuunganisha vifaa ambavyo unataka kuwasiliana ...

Basi ingekuwa inakosekana tu anza na mchoro wa mfano katika IDE ya Arduino. Unaweza kuifanya bila kutumia maktaba ya ziada kama vile ...

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

Kama pembejeo:

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

Au pia tumia maktaba, kama vile PCF8574 ambayo unaweza shusha hapa na utumie nambari inayofanana na hii kutoka kwa mfano yenyewe unaokuja na maktaba hii:

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


Yaliyomo kwenye kifungu hicho yanazingatia kanuni zetu za maadili ya uhariri. Kuripoti kosa bonyeza hapa.

Kuwa wa kwanza kutoa maoni

Acha maoni yako

Anwani yako ya barua si kuchapishwa. Mashamba required ni alama na *

*

*

  1. Kuwajibika kwa data: Miguel Ángel Gatón
  2. Kusudi la data: Kudhibiti SpAM, usimamizi wa maoni.
  3. Uhalali: Idhini yako
  4. Mawasiliano ya data: Takwimu hazitawasilishwa kwa watu wengine isipokuwa kwa wajibu wa kisheria.
  5. Uhifadhi wa data: Hifadhidata iliyohifadhiwa na Mitandao ya Occentus (EU)
  6. Haki: Wakati wowote unaweza kupunguza, kuokoa na kufuta habari yako.