PCF8574: حول I2C I / O Expander لـ Arduino

PCF8574 TI CHIP

لقد سمعت بالتأكيد عن 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 هي حافلة اتصالات تسلسلية معروفة. يستخدم بروتوكول اتصال متزامن مع قناتين فقط (هناك قناة ثالثة ، ولكنها مقترنة بمرجع أو GND) ، وهي في الواقع تُعرف أيضًا باسم TWI (واجهة سلكية):

  • واحد للساعة (SCL).
  • أخرى للبيانات (SDA).
كلاهما عبارة عن وصلات CMOS مفتوحة التصريف وتتطلب مقاومات سحب. أيضًا ، إذا أرسل أحد الأجهزة 0 وآخر 1 ، فقد تكون هناك مشاكل ، ولهذا السبب يتم ضبط الخط دائمًا على 1 (مستوى عالٍ) وتنقل الأجهزة دائمًا 0 (مستوى منخفض).

هذا يعني أن ملف السيد والعبد يرسلون البيانات عبر نفس الكبل أو المسار ، والذي يتحكم فيه أول واحد وهو الذي يولد إشارة الساعة. سيكون لكل من الأجهزة الطرفية المتصلة بحافلة I2C عنوان فريد مخصص لتوجيه عمليات الإرسال. ولكن ليس من الضروري أن يكون السيد هو نفسه دائمًا (متعدد الماجستير) ، فهو دائمًا هو الذي يبدأ النقل.

كما شرحت بالفعل في المقالة على اردوينو I2C أشرت سابقًا ، كل لوحة بها وصلات I2C في أماكن مختلفة. إنه شيء يجب أن تضعه في اعتبارك لتتمكن من استخدامه بشكل صحيح في كل إصدار لوحة:

أنت تعلم بالفعل أنه يمكنك استخدام I2C للرسومات الخاصة بك بسهولة ، منذ مكتبة Wire.h مع وظائف مختلفة لهذا الاتصال التسلسلي:

  • يبدأ (): ابدأ مكتبة Wire وحدد ما إذا كانت رئيسية أم تابعة
  • طلب من (): يستخدمه السيد لطلب البيانات من العبد.
  • startTransmission (): بدء الإرسال مع العبد.
  • الإرسال النهائي (): نهاية الإرسال.
  • اكتب()- اكتب البيانات من أحد الرقيق استجابة لطلب من السيد أو يمكنك انتظار إرسال السيد
  • متوفرة (): سيعيد عدد البايت للقراءة.
  • اقرأ(): قراءة بايت ينتقل من عبد إلى سيد أو العكس.
  • عند الاستلام (): لاستدعاء وظيفة عندما يتلقى العبد إرسالًا من سيد.
  • تحت الطلب (): لاستدعاء وظيفة عندما يطلب العبد بيانات من سيد.

إلى ماس información حول برمجة ووظائف Arduino ، يمكنك تنزيل ملف برنامج تعليمي بتنسيق PDF.

ما هو PCF8574؟

وحدة PCF8574

إن PCF8574 هو ملف موسع المدخلات والمخرجات الرقمية لناقل I2C (I / O). يمكن تصنيعها من قبل العديد من الشركات المصنعة ، بالإضافة إلى توفرها في الدوائر المتكاملة والوحدات النمطية. على أي حال ، من العملي جدًا توصيله بلوحة Arduino لديك ولديك القدرة على التحكم في عدد أكبر من الأجهزة أكثر مما تسمح به اللوحة الأم.

El PCF8574 pinout إنه بسيط ، لأنه يشمل فقط 8 الصنوبر شبه اتجاهي (P0-P7 حيث يتم توصيل الرقائق المراد توصيلها) ، ومن ناحية أخرى لديك SDA و SCL التي يجب عليك توصيلها بلوحة Arduino ، بالإضافة إلى VCC و GND لتشغيل الوحدة أيضًا. ولا تنس دبابيس العنونة الثلاثة A0 و A1 و A2 لاختيار أي من الأجهزة يتم توجيه الاتصال إليه ...

PCF8574 دبوس خارج

انها تملك ميزات أخرى يجب أن تعرف:

  • يمكن أن تكون اتصالاتها ، كونها مصرفًا مفتوحًا تستخدم كمدخلات ومخرجات.
  • La تيار الذروة يكون 25 مللي أمبير عندما يعمل كمخرج (بالوعة ، عندما يتدفق التيار نحو 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 IDE

الاتصال بـ Arduino بسيط للغاية ، ما عليك سوى توصيل Vcc بدبوس 5 فولت في لوحة Arduino و GND مع GND من Arduino. من ناحية أخرى ، يمكن أن تكون المسامير لوحدة 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. الغرض من البيانات: التحكم في الرسائل الاقتحامية ، وإدارة التعليقات.
  3. الشرعية: موافقتك
  4. توصيل البيانات: لن يتم إرسال البيانات إلى أطراف ثالثة إلا بموجب التزام قانوني.
  5. تخزين البيانات: قاعدة البيانات التي تستضيفها شركة Occentus Networks (الاتحاد الأوروبي)
  6. الحقوق: يمكنك في أي وقت تقييد معلوماتك واستعادتها وحذفها.