الجمعة، 27 ديسمبر، 2013

الدارة المتكاملة PCF8574

الدارة المتكاملة PCF8574





تتميز المتحكمات الأصغرية MCU بعدد من المنافذ الرقمية Digital Ports التي يمكنها قراءة الأوامرالرقمية كما في ال Push Button او لوحات الادخال Keypad و ما شابه .

لكن هل تحتاج لمنافذ رقمية أكثر لمشروعك ؟ 
في هذه التدوينة ستتعرف إلى الدارة المتكاملة PCF8574 التي تعمل على زيادة المنافذ المتاحة لك ل 8 منافذ و استعمالها كمدخل Input لقراءة  او كمخرج.

شركة فيليبس طورت البروتوكول I2C في التسعينيات 

طريقة الأتصال مع الأردوينو هي ما يميز هذه القطعة اذا انها تستخدم بروتوكول I2C. يتصل هذا البروتوكول باستخدام سلكين لتبادل البيانات,حيث السلك الاول هو (SCL)والاخر (SDA). مع هذه القطعه يمكننا فقط استخدام منفذين من لوحة الاردوينو للتحكم ما يصل الى 8 منافذ رقمية , بالإضافة لأمكانية 
توصيل ما يصل إلى 8 أجهزة من ال PCF8574،فيصبح لدينا  64منفذا في المجموع ! 64 منفذ اضافي نتحكم بهما بواسطة سلكين فقط من لوحة الأردوينو يا للروعة .


توزيع الأرجل لهذه الدارة المتكاملة :




تأتي هذه الدارة المتكاملة في عدة تعليبات مختلفة Packages 





وظيفة كل مدخل من هذه الدارة المتكاملة في الجدول :



A0,A1,A2  :هي أرجل لعنونه القطعة بحيث نحدد عنوان هذه الدارة .

P0,P1,P2,P3,P4,P5,P6,P7 :هي المنافذ التي ستعمل كمدخل او كمخرج .

SDA,SCL :هي أرجل ال I2C للاتصال مع المتحكم .


بعد توصيل هذه الدارة المتكاملة مع الأردوينو سنحتاج لضبط عنوان خاص بهذه القطعة حتى نستطيع التواصل معها , فكيف يضبط هذا العنوان ؟

ينضبط عن طريق المداخل A0,A1,A2 فمثلا اذا وصلنا هذه ال3 مداخل بالGND يكون العنوان للقطعة هو 32 .

وتضبط هذه المداخل حسب توصيلتنا, و الجدول التالي يوضح العناوين المختلفة اعتماداً على طريقة توصيل المداخل A0,A1,A2 .


ومن التطبيقات عليها :
1)دارة قيادة الشاشة الكريستالية LCD driver و تحدثنا عنها سابقاً 
2) قيادة الباعث الضوئي LED drver.
3)قراءة المفاتيح button-مثل لوحات الادخال keypad driver

ما سنحتاجه لتنفيذ هذه التجربة :
1)بطاقه أردوينو
2)الدارة المتكاملة  PCF8574
3)باعث ضوئي  LED عدد 8 
4)مقطع سُباعي Seven segment
5)مقاومتين 4.7 كيلو اوم
6)مقاومه 50 اوم
7)اسلاك التوصيل

8)BreadBoard .

في البداية سنوصل هذه الدارة المتكاملة  مع  LED

طريقة التوصيل :

الطرف الموجب من الباعث الضوئي LED مع المصدر الموجب و الطرف السالب مع الPCF8574 


هذه الدارة عبارة عن مبدد للتيار Current sink و ليس مصدر للتيار Current source .

البرنامج :
/*   this code for PCF8574 8bit I/O Expander IC   Used to Drive 8 LED    Connect pull up resistor of 4K7 Ohm to SDA,SCL   Written by :Mohannad Rawashdeh   http://www.genotronex.com/
*/
#include"Wire.h" #define firstAddress 0x20  void setup() {     Wire.begin();     delay(2000); } void pcf8574(int y){     Wire.beginTransmission(firstAddress);     Wire.write(y);     Wire.endTransmission(); }       void loop(){     //at first , blink LED Sequantly   for(int i=255;i>=0;i--){     pcf8574(i);     delay(100);   }   // random blink !   for(int j=0;j<=100;j++){     //random     long randNumber = random(255);     long del =random(50,400);     pcf8574(randNumber);     delay(del);    }   }

كل ما نقوم به هو فتح الأتصال عن طريق ارسال  عنوان القطعة و من ثم ارسال قيمة بين صفر -255 و على اساسها نستطيع تفعيل او تعطيل عمل كل مدخل على حدا 

وهذا الفيديو يوضح هذا التطبيق:





التطبيق الثاني هو قيادة المقطعات السُباعية Seven segment 


التوصيل :
 

البرنامج :
/*

  this code for PCF8574 8bit I/O Expander IC
  Used to Drive 7 segment 
  Connect pull up resistor of 4K7 Ohm to SDA,SCL
  Written by :Mohannad Rawashdeh
  http://www.genotronex.com/
*/


#include"Wire.h"
//NUM In Hex format form 0 to 9
int Num[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x98};
#define firstAddress 0x20 
void setup()
{
    Wire.begin();
    delay(2000);
}

void pcf8574(int y){
    Wire.beginTransmission(firstAddress);     //Begin the transmission to PCF8574
    Wire.write(y);                                //Send the data to PCF8574
    Wire.endTransmission();            //End the Transmission
} 
  
  void loop(){
    for (int i=0;i<10;i++){
    int digit=Num[i];  
    pcf8574(digit);
    delay(1000);
  }
  }
 

وهذا الفيديو يوضح هذا التطبيق:



3 التعليقات :

  1. السلام عليكم ورحمة الله وبركاته
    من فضلك يابشمهندس الاقي الاي سي ده فين انا دورت عليه في اماكن كتير ومش لاقيه , وبالمناسبه هل لما استخدمه كزيادة ارجل لاردوينو مش هيكون في بطى في تنفيذ الأوامر ؟
    وهل ممكن تخزين الكود البرمجي الخاص بأردوينو عليه ولا هو بس مجرد زيادة مخارج وفقط ؟؟

    ردحذف
    الردود
    1. ممكن شراءه من الأنترنت .
      لا البطء محدود , و يعتمد على طريقة كتابتك للبرنامج .

      لا فقط زيادة مداخل و مخارج

      حذف

 
Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.