PCF8574: آرڊينوينو لاءِ I2C I / O Expander بابت

PCF8574 ٽي آئي چپ

توهان ضرور ٻڌو هوندو جي آئي سي PCF8574هڪ چپ جيڪا الڳ الڳ خريد ڪري سگهجي ٿي يا اڳي ئي ماڊل تي ٻين وانگر ڪيترن ئي تي لڳل هوندي اليڪٽرانڪ اجزاء توهان جي Arduino بورڊ سان گڏ انضمام کي سهولت فراهم ڪرڻ. انهي حالت ۾ ، اهو داخل ڪندڙ ۽ محصولن جو هڪ وڌندڙ آهي I2C بس.

تون سوچين ٿو ته آرڊينو جو پنهنجو اڳ ۾ ئي آهي گڏيل I2C بس، ۽ اهو سچ آهي. پر پي سي ايف 8574 انهي بس کي وڌائڻ ۾ مدد ڪري سگھي ٿو توهان جي ترقياتي بورڊ جي حدن کان ٻاهر ، جيڪا ڪجهه ٺاهيندڙن لاءِ وڏي مدد ٿي سگهي ٿي جيڪي آرڊينوينو طرفان فراهم ڪيل بس کان وڌيڪ ضرورت آهي.

I2C بس ڇا آهي؟

Arduino UNO مليس افعال

نالو I2C اچي ٿو بين الاقوامي سرٽيفڪيٽ يا بين مربوط سرڪٽ. ان جو نسخو 1.0 فلپس پاران 1992 ۾ تيار ڪيو ويو آهي. پوءِ هڪ سيڪنڊ 2.1 2000 ۾ اچي ويندو ۽ ا today اهو هڪ معياري ٿي چڪو آهي (100 ڪبيٽ / سيڪس تي ، جيتوڻيڪ اهو اجازت ڏئي ٿو 3.4 Mbit / s وڌ کان وڌ) جڏهن 2006 ۾ پيٽرن ختم ٿي وئي ۽ آزاديءَ سان استعمال ٿي سگهي ٿو.

موجوده طور تي اهو صنعت ۾ وڏي پيماني تي استعمال ٿيندو آهي رابطي لاءِ، ۽ انهن جي منصوبن لاءِ ٺاهيندڙن جي طرفان تمام گهڻو ساراهيو ويو آهي جيڪي مختلف اي سي سي ۾ ضم ٿيل مائڪرو ڪنٽرولرز ۽ پرديئرز لاءِ ڳالهه ٻولهه ڪن ٿا.

El I2C هڪ بس آهي مشهور سيرالي مواصلات. اهو صرف 2 چينلز سان هم وقت سازي مواصلاتي پروٽوڪول استعمال ڪندو آهي (هتي هڪ ٽيون به آهي ، پر اهو حوالو يا جي اين ڊي سان ڳن isيل آهي) ، اصل ۾ اها ٽي وي آءِ (ٻه تار انٽرفيس) طور پڻ سڃاتي وڃي ٿي:

  • ڪلاڪ لاءِ هڪ (SCL)
  • ٻي ڊيٽا لاءِ (SDA)
ٻئي کليل خنجر CMOS ڪنيڪشن آهن ۽ پل اپ ريزرز جي ضرورت آهي. اضافي طور تي ، جيڪڏهن هڪ ڊوائيس هڪ 0 ۽ ٻي هڪ 1 منتقل ڪري ٿي ، اتي مسئلا ٿي سگهن ٿا ، اهو ئي سبب آهي ته هميشه هميشه لائن کي 1 (اعلي سطح) تي مقرر ڪيو ويندو آهي ۽ ڊوائيس هميشه 0 (گهٽ ليول) کي منتقل ڪن ٿا.

انهي جو مطلب آهي ته آقا ۽ غلام اهي ڊيٽا هڪ ئي ڪيبل يا ٽريڪ مٿان موڪليندا آهن ، جيڪو پهريون ڪنٽرول هيٺ هوندو آهي جيڪو ڪلاڪ سگنل پيدا ڪندو آهي. I2C بس سان ڳن theيل هر پرديري ڊيوائس هڪ منفرد پتو لڳايو ويندو ، انهي طريقي سان منتقل ڪرڻ جي هدايت ۾. پر اهو ضروري ناهي ته استاد هميشه ساڳيو هجي (گھڻ استاد) ، اهو هميشه هو جيڪو منتقلي جي شروعات ڪري ٿو.

جيئن مون اڳ ۾ آرٽيڪل ۾ وضاحت ڪئي آردوينو I2C مون اڳ ۾ حوالو ڏنو ، هر بورڊ وٽ اهي I2C ڪنيڪشن مختلف هنڌن تي آهن. اهو ڪجهه آهي جنهن کي توهان کي ذهن ۾ رکڻو پوندو ته ان کي پليٽ جي هر نسخي ۾ صحيح طريقي سان استعمال ڪرڻ جي قابل آهي.

  • Arduino UNO: ايس ڊي اي اي 4 ۾ آهي ۽ ايس ڪي ڪي 5 ۾ آهي
  • ارڊينو نانو: پوئين وانگر ساڳيو.
  • آردوينو ميني پرو: ساڳيو.
  • ارڊينو ميگا: ايس ڊي اي پن 20 تي آهي ۽ 21 تي ايس سي سي آهي.
  • پليٽ بابت وڌيڪ informationاڻ.

توهان پهريان ئي knowاڻو ٿا ته توهان I2C پنهنجي خاڪن لاءِ آساني سان استعمال ڪري سگهو ٿا ، جڏهن کان وائر جي لائبريري ھن سيريل گفتگو جي مختلف عملن سان:

  • شروع ڪر: وائر لائبريري شروع ڪريو ۽ وضاحت ڪريو ته اهو ماسٽر يا غلام آهي
  • درخواست کان (): ماسٽر طرفان ٻانهن مان ڊيٽا جي درخواست لاءِ استعمال ڪيو ويو.
  • شروعات ٽرانسميشن (): غلام سان ٽرانسميشن شروع ڪريو.
  • آخري ٽرانسڪشن (): آخر ٽرانسميشن.
  • لکو ()- مالڪ کان درخواست جي جواب ۾ ٻانهن کان ڊيٽا لکو ، يا توهان ماسٽر جي ٽرانسميشن کي قطار ڪري سگهو ٿا.
  • موجود آهي (): پڙهڻ لاءِ بائٽس جو تعداد موٽائيندو.
  • پڙهو (): هڪ بائيٽ مان مالڪ يا مالڪ ڏانهن منتقل ڪيل بائيٽ پڙهو.
  • آن موصول (): هڪ فنڪشن کيڏي ٿو جڏهن غلام هڪ مالڪ کان ٽرانسميشن حاصل ڪري ٿو.
  • آن ريسرچ (): هڪ فنڪشن کيڏي ٿو جڏهن غلام هڪ ماسٽر کان ڊيٽا جي درخواست ڪري ٿو.

Para وڌيڪ ڄاڻ آرڊينو پروگرامنگ بابت ۽ افعال بابت توهان اسان ڊائون لوڊ ڪري سگھو ٿا پي ڊي ايف جو سبق.

PCF8574 ڇا آهي؟

PCF8574 ماڊل

پي سي ايف 8574 هڪ آهي I2C بس ڊجيٽل ان پٽ ۽ آئوٽ (I / O) وسعت ڪندڙ. اهو مختلف ٺاهيندڙن طرفان تيار ڪري سگهجي ٿو ، ان کان علاوه آئي سيز ۽ ماڊلز ۾ پڻ موجود آهي. ڪنهن به صورت ۾ ، اهو توهان جي آرڊينو بورڊ سان ڳن toڻ تمام عملي آهي ۽ ان ۾ وڌيڪ بورڊ ڪنٽرول ڪرڻ جي گنجائش هوندي ته ماء بورڊ کان اجازت ڏين

El پي سي ايف 8574 پن پن آسان آهي ، جئين اهو صرف شامل هوندو آهي 8 پوين آفاقي (P0-P7 جتي چپس سان رابطو ڪرڻ وارا ڳن connectedيل آهن) ، ۽ ٻئي طرف توهان وٽ SDA ۽ SCL آهن ته توهان کي ارڊينوو بورڊ سان ڳن connectڻ لازمي آهي ، انهي سان گڏ وي سي سي ۽ جي اين ڊي کي پڻ ماڊل کي طاقت ڏيڻ. ۽ ٽن ايڊريسنگ پنن کي نه وساريو اي ، اي 0 ، اي 1 اهو چونڊڻ لاءِ ڪهڙي ڊوائيس کي هدايت ڪئي آهي.

پي سي ايف 8574 پن پن

مالڪ ٻيون خاصيتون توهان کي shouldاڻڻ گهرجي:

  • ان جا رابطا ، هڪ کليل خشڪ هئڻ جي ڪري ٿي سگهن ٿا ٻئي ان پٽ ۽ آئوٽ طور استعمال ڪيا ويا.
  • La چوٽي جي موجوده اهو 25 ايم اي آهي جڏهن اهو ٻا as جو ڪم ڪري ٿو (سنڪ ، جڏهن موجوده PCF8574 ڏانهن وهندو آهي) ۽ 300 µA (ماخذ ، موجوده PCF8574 کان وهندو).
  • La دٻاء بجلي جي فراهمي 2.5 ۽ 6 وي آهي. Stand-by واپرائڻ تمام گهٽ آهي ، صرف 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 سان انضمام

آردوينو IDE جو اسڪرين شاٽ

Arduino سان لاڳاپو بلڪل سادو آھي ، توھان کي صرف وي سي کي Arduino بورڊ جي 5v پن سان ڳن haveڻو آھي ، ۽ GND Arduino جي GND سان. ٻئي طرف ، PCF8574 SDA ۽ SCL ماڊل جا پن به ٿي سگهن ٿا پنن سان جوڙيو 14 (اي 5 ايس سي ايل) ۽ 15 (اي 4 ايس ڊي اي). صرف انهي سان اهو ڪم ڪرڻ شروع ڪندو ، ظاهر آهي توهان پيڪس استعمال ڪري سگهو ٿا ته ڪن ٽيوسن کي ڳن toيندا جيڪي توهان ڳالهائڻ چاهيندا آهيو ۔۔۔

پوءِ اهو ئي غائب هوندو مثال طور خاڪو جي شروعات ڪريو 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. ڊيٽا جو ذميوار: Miguel Ángel Gatón
  2. ڊيٽا جو مقصد: ڪنٽرول سپيم ، تبصرو جي انتظام.
  3. سازش: توهان جي رضامندي
  4. ڊيٽا جي ابلاغ: ڊيٽا کي قانوني ذميواري کانسواءِ ٽئين پارٽين تائين رسائي نه ڏني ويندي.
  5. ڊيٽا اسٽوريج: ڊيٽابيس اويسينٽس نيٽورڪ (اي يو) پاران ميزباني ڪيل
  6. حق: ڪنهن به وقت توهان پنهنجي معلومات کي محدود ، ٻيهر ۽ ختم ڪري سگهو ٿا.