PCF8574: Arduino- ի I2C I / O ընդլայնիչի մասին

PCF8574 TI CHIP

Դուք, անշուշտ, լսել եք դրա մասին IC PCF8574, մի չիպ, որը կարելի է ձեռք բերել առանձին կամ արդեն տեղադրվել է մոդուլի վրա, ինչպես շատ ուրիշներ Էլեկտրոնային բաղադրիչներ հեշտացնելու ձեր Arduino տախտակի հետ ձեր ինտեգրումը: Այս դեպքում դա մուտքերի և ելքերի ընդլայնիչ է I2C ավտոբուսը.

Կարող եք մտածել, որ Arduino- ն արդեն ունի իր սեփականը ինտեգրված I2C ավտոբուս, և դա ճիշտ է: Բայց PCF8574- ը կարող է օգնել տարածել այդ ավտոբուսը ձեր զարգացման տախտակի սահմաններից այն կողմ, ինչը կարող է մեծապես օգնել որոշ արտադրողների, ովքեր կարիք ունեն ավելին, քան պարզապես այն, ինչ տրամադրում է Arduino- ն:

Ի՞նչ է I2C ավտոբուսը:

Arduino UNO միլլիսի գործառույթներ

I2C անունը գալիս է Ինտեգրացված միացում կամ ինտեգրված շղթաներ: Դրա 1.0 տարբերակը ստեղծվել է 1992 թվականին ՝ Philips- ի կողմից: Այնուհետև երկրորդ 2.1-ը կգա 2000 թ., Եվ այսօր այն դարձել է ստանդարտ (100 կբիթ / վ արագությամբ, չնայած թույլ է տալիս առավելագույնը մինչև 3.4 Մբիթ / վրկ), երբ արտոնագիրը սպառվել է 2006 թ. Եվ կարող է օգտագործվել ազատ:

Ներկայումս այն լայնորեն օգտագործվում է արդյունաբերության մեջ հաղորդակցության համար, և նաև շատ գնահատված է արտադրողների կողմից մեկ IC- ում ինտեգրված տարբեր միկրոկոնտրոլերների և ծայրամասերի հաղորդակցման իրենց նախագծերի համար:

El I2C- ն ավտոբուս է լավ հայտնի սերիական հաղորդակցություն: Այն օգտագործում է համաժամանակյա հաղորդակցման արձանագրություն ՝ ընդամենը 2 ալիքով (կա երրորդը, բայց զուգորդվում է հղման կամ GND- ի հետ), իրականում այն ​​նաև հայտնի է որպես TWI (Երկու լարային միջերես)

  • Մեկը ժամացույցի համար (SCL):
  • Այլ տվյալների համար (SDA):
Երկուսն էլ բաց ջրահեռացման CMOS միացումներ են և պահանջում են քաշման դիմադրություն: Բացի այդ, եթե մի սարքը փոխանցում է 0-ը, իսկ մյուսը `1-ը, խնդիրներ կարող են լինել, այդ պատճառով գիծը միշտ դրվում է 1-ի վրա (բարձր մակարդակ), իսկ սարքերը միշտ փոխանցում են 0-ը (ցածր մակարդակ):

Դա ենթադրում է, որ տերն ու ստրուկը դրանք տվյալներ են ուղարկում նույն մալուխի կամ հետքի միջոցով, որը կառավարվում է ժամացույցի ազդանշան առաջացնող առաջինի կողմից: I2C ավտոբուսին միացված ծայրամասային սարքերից յուրաքանչյուրին հատկացված կլինի եզակի հասցե ՝ փոխանցումներն ուղղելու համար: Բայց պարտադիր չէ, որ վարպետը միշտ նույնը լինի (բազմավարդապետը), միշտ նա է նախաձեռնում փոխանցումը:

Ինչպես արդեն բացատրեցի հոդվածում Arduino I2C Ես ավելի վաղ հղում արեցի, յուրաքանչյուր տախտակ ունի այս I2C կապերը տարբեր տեղերում: Դա մի բան է, որը դուք պետք է հիշեք, որպեսզի կարողանաք այն ճիշտ օգտագործել ափսեի յուրաքանչյուր տարբերակում.

Դուք արդեն գիտեք, որ կարող եք հեշտությամբ օգտագործել I2C ձեր ուրվագծերի համար, քանի որ Wire.h գրադարան այս սերիական հաղորդակցության համար տարբեր գործառույթներով.

  • սկսել (). սկսել Wire գրադարանը և նշել, թե արդյոք այն վարպետ է կամ ստրուկ
  • requestFrom ()օգտագործվում է վարպետի կողմից ստրկից տվյալներ պահանջելու համար:
  • startTransmission ()սկսել ստրուկով փոխանցումը:
  • endTransmission (): վերջավոր փոխանցում:
  • գրել ()- Տիրոջ խնդրանքին ի պատասխան ստրուկից գրեք տվյալներ, հակառակ դեպքում կարող եք հերթ կանգնել տիրոջ փոխանցման վրա:
  • մատչելի (): կվերադարձնի կարդալու բայթերի քանակը:
  • կարդալ ()կարդալ ստրուկից տիրոջը փոխանցված բայտը կամ հակառակը:
  • onReceive (): Կանչում է գործառույթ, երբ ստրուկը տիրոջից փոխանցում է ստանում:
  • ըստ հարցման (): Կանչում է գործառույթ, երբ ստրուկը տիրոջից տվյալներ է խնդրում:

դեպի մաս información Arduino ծրագրավորման և գործառույթների մասին կարող եք ներբեռնել մեր PDF ձեռնարկ.

Ի՞նչ է PCF8574- ը:

PCF8574 մոդուլ

PCF8574- ը ա I2C ավտոբուսի թվային մուտքեր և ելքեր (I / O) ընդարձակիչ, Այն կարող է արտադրվել տարբեր արտադրողների կողմից, բացի այդ այն հասանելի է IC- ներում և մոդուլներում: Ամեն դեպքում, շատ գործնական է այն միացնել ձեր Arduino տախտակին և ունենալ ավելի շատ սարքեր կառավարելու կարողություն, քան մայրական սալիկն է թույլ տալիս:

El PCF8574 pinout Դա պարզ է, քանի որ այն միայն ներառում է 8 չաման քառակողմանի (P0-P7, որտեղ կապակցված չիպերը միացված են), իսկ մյուս կողմից ՝ դու ունես SDA և SCL, որոնք պետք է միացնես Arduino տախտակին, ինչպես նաև VCC և GND ՝ մոդուլը գործարկելու համար: Եվ մի մոռացեք A0, A1, A2 հասցեների երեք փոսերը ՝ ընտրելու համար, թե որ սարքերից է հաղորդակցությունն ուղղված ...

PCF8574 քորոց

Պատկանում է այլ հատկություններ որ դուք պետք է իմանաք.

  • Դրա միացումները, լինելով բաց արտահոսք, կարող են լինել օգտագործվում են և՛ որպես մուտքեր, և՛ որպես ելքեր.
  • La գագաթնակետային հոսանք դա 25mA է, երբ այն գործում է որպես ելք (լվացարան, երբ հոսանքը հոսում է դեպի PCF8574) և 300 μA (աղբյուր, ընթացիկ հոսքը PCF8574- ից):
  • La սթրեսը էլեկտրամատակարարումը 2.5 և 6 վ է: Սպասման ռեժիմի սպառումը շատ ցածր է ՝ ընդամենը 10 μA:
  • Բոլոր արդյունքները ունեն սողնակներպահպանել պետությունը ՝ առանց արտաքին գործողությունների անհրաժեշտության: Դուք պետք է գործեք միայն այն ժամանակ, երբ ցանկանում եք փոխել պետությունը:
  • Դուք կարող եք ստանալ 8 հնարավոր ուղղությունները, այսինքն ՝ մինչև 8 սարք հաղորդակցվելու համար կամ օգտագործելով 8 մոդուլ ՝ այն մինչև 64 սարք ընդլայնելու համար: Հասցեները (A0, A1, A2 կապում) կլինեն.
    • 000 ՝ 0x20 հասցե
    • 001 ՝ 0x21 հասցե
    • 010 ՝ 0x22 հասցե
    • 011 ՝ 0x23 հասցե
    • 100 ՝ 0x24 հասցե
    • 101 ՝ 0x25 հասցե
    • 110 ՝ 0x26 հասցե
    • 111 ՝ 0x27 հասցե
  • Ընդունում է ընդհատում (INT) հատուկ տողի միջոցով տվյալների հայտնաբերման համար ՝ առանց անընդհատ դիտարկման:

Ինտեգրում Arduino- ի հետ

Լուսանկարը Arduino IDE- ից

Arduino- ի հետ կապը շատ պարզ է, պարզապես պետք է Vcc- ն միացնել Arduino տախտակի 5v փինով, իսկ GND- ը Arduino- ի GND- ով: Մյուս կողմից, PCF8574 SDA և SCL մոդուլի քորոցները կարող են լինել կապել կապումներով 14 (A5 SCL) և 15 (A4 SDA): Միայն դրանով այն կսկսի աշխատել, ակնհայտորեն դուք կարող եք օգտագործել Px- ը `միացնելու համար այն սարքերը, որոնք ցանկանում եք հաղորդակցվել ...

Այդ դեպքում այն ​​միայն բացակայում էր սկսեք օրինակ էսքիզով Arduino IDE- ում: Դուք կարող եք դա անել առանց լրացուցիչ գրադարանի օգտագործման, ինչպես, օրինակ, ...

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

Որպես մուտքագրում.

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

Կամ նաև օգտագործել գրադարաններ, օրինակ ՝ PCF8574, որը կարող եք բեռնել այստեղ և օգտագործեք սրան նման կոդ, օրինակից, որը գալիս է այս գրադարանի հետ միասին.

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


Հոդվածի բովանդակությունը հավատարիմ է մեր սկզբունքներին խմբագրական էթիկա, Սխալի մասին հաղորդելու համար կտտացրեք այստեղ.

Եղիր առաջին մեկնաբանողը

Թողեք ձեր մեկնաբանությունը

Ձեր էլ. Փոստի հասցեն չի հրապարակվելու: Պահանջվող դաշտերը նշված են *

*

*

  1. Տվյալների համար պատասխանատու ՝ Միգել Անխել Գատոն
  2. Տվյալների նպատակը. Վերահսկել SPAM, մեկնաբանությունների կառավարում:
  3. Օրինականություն. Ձեր համաձայնությունը
  4. Տվյալների հաղորդագրություն. Տվյալները չեն փոխանցվի երրորդ անձանց, բացառությամբ իրավական պարտավորության:
  5. Տվյալների պահպանում. Տվյալների շտեմարան, որը հյուրընկալվում է Occentus Networks (EU) - ում
  6. Իրավունքներ. Timeանկացած պահի կարող եք սահմանափակել, վերականգնել և ջնջել ձեր տեղեկատվությունը: