पीसीएफ 8574: आर्डिनोसाठी I2C I / O विस्तारक बद्दल

पीसीएफ 8574 टीआय चीप

आपण नक्कीच ऐकले आहे आयसी पीसीएफ 8574, एक चिप जी स्वतंत्रपणे खरेदी केली जाऊ शकते किंवा आधीपासूनच इतर अनेक जणांप्रमाणे मॉड्यूलवर चढविली जाऊ शकते इलेक्ट्रॉनिक घटक आपल्या आर्डिनो बोर्डसह आपले एकत्रीकरण सुलभ करण्यासाठी. या प्रकरणात, ते निविष्ट आणि आउटपुटचा विस्तारक आहे आय 2 सी बस.

आपणास असे वाटेल की अरडिनोचे आधीपासूनच स्वतःचे आहे एकात्मिक आय 2 सी बस, आणि ते खरे आहे. परंतु पीसीएफ 8574 ही बस आपल्या विकास मंडळाच्या मर्यादेच्या पलीकडे वाढविण्यात मदत करू शकते, जे अर्डिनोने पुरविल्या जाणा than्या वस्तूंपेक्षा काही जास्त निर्मात्यांना उपयुक्त ठरू शकते.

आय 2 सी बस काय आहे?

Arduino UNO मिली फंक्शन्स

आय 2 सी हे नाव आहे आंतर-एकात्मिक सर्किट किंवा आंतर-समाकलित सर्किट्स. त्याची आवृत्ती 1.0 फिलिप्सने 1992 मध्ये तयार केली होती. त्यानंतर दुसरा २.१ २००० मध्ये येईल आणि २०० today मध्ये पेटंटची मुदत संपली आणि ती मोकळेपणाने वापरली जाऊ शकते तेव्हा ते प्रमाणित झाले आहे (१०० केबीट / से.

सध्या उद्योगात याचा मोठ्या प्रमाणात वापर केला जातो संवादासाठी, आणि एका आयसीमध्ये समाकलित केलेले वेगवेगळे मायक्रोकंट्रोलर आणि परिघीय संवाद साधण्यासाठी त्यांच्या प्रकल्पांसाठी निर्मात्यांकडून त्यांचे खूप कौतुक केले.

El आय 2 सी ही एक बस आहे मालिका संप्रेषणातून सुप्रसिद्ध हे केवळ 2 चॅनेलसह एक सिंक्रोनस कम्युनिकेशन प्रोटोकॉल वापरते (एक तिहाई आहे, परंतु ते संदर्भ किंवा जीएनडीशी जोडलेले आहे) खरं तर ते टीडब्ल्यूआय (टू वायर इंटरफेस) म्हणून देखील ओळखले जाते:

  • घड्याळासाठी एक (एससीएल).
  • डेटा (एसडीए) साठी इतर.
दोन्ही ओपन ड्रेन सीएमओएस कनेक्शन आहेत आणि त्यांना पुल-अप प्रतिरोधक आवश्यक आहेत. तसेच, जर एखादे डिव्हाइस 0 आणि दुसर्‍यास 1 प्रसारित करते तर समस्या उद्भवू शकते, म्हणूनच लाइन नेहमी 1 वर सेट केली जाते (उच्च पातळी) आणि डिव्हाइस नेहमी 0 (निम्न पातळी) प्रसारित करते.

हे सुचवते की मास्टर आणि गुलाम ते समान केबल किंवा ट्रॅकवर डेटा पाठवतात, जे घड्याळ सिग्नल व्युत्पन्न केलेल्या पहिल्याद्वारे नियंत्रित केले जाते. ट्रान्समिशन निर्देशित करण्यासाठी आय 2 सी बसला जोडलेल्या प्रत्येक परिघीय उपकरणांना एक विशिष्ट पत्ता देण्यात आला आहे. परंतु हे आवश्यक नाही की मास्टर नेहमी एकसारखा असतो (मल्टी-मास्टर), तो नेहमीच हस्तांतरणास आरंभ करतो.

मी वरील लेखात आधीच स्पष्ट केल्याप्रमाणे अर्दूनो आय 2 सी मी पूर्वी संदर्भित केला आहे, प्रत्येक बोर्डाची वेगवेगळ्या ठिकाणी ही आय 2 सी कनेक्शन आहेत. प्रत्येक प्लेट आवृत्तीमध्ये त्याचा योग्यरित्या वापर करण्यास सक्षम होण्यासाठी आपण हे लक्षात ठेवले पाहिजेः

  • Arduino UNO: एसडीए ए 4 मध्ये आहे आणि एस 5 मध्ये ए XNUMX
  • अर्डिनो नॅनो: मागील प्रमाणेच.
  • अर्डिनो मिनी प्रो: त्याच.
  • अरुडिनो मेगा: एसडीए 20 वर आणि 21 रोजी एससीके आहेत.
  • प्लेट्सबद्दल अधिक माहिती.

आपल्याला आधीपासूनच माहित आहे की आपण आपल्या स्केचेससाठी आय 2 सी सहज वापरू शकता, कारण Wire.h लायब्ररी या अनुक्रमित संप्रेषणासाठी विविध कार्येः

  • सुरू (): वायर लायब्ररी सुरू करा आणि ते मुख्य किंवा गुलाम आहे ते निर्दिष्ट करा
  • विनंतीफ्रॅम (): स्लाव्हकडून डेटा विनंती करण्यासाठी मास्टरद्वारे वापरलेला.
  • प्रारंभ ट्रान्समिशन (): स्लेव्ह सह ट्रान्समिशन सुरू करा.
  • एंड ट्रान्समिशन (): अंत प्रसारण.
  • लिहा ()- मास्टरकडून विनंतीस उत्तर म्हणून दासाकडून डेटा लिहा किंवा आपण एखाद्या मास्टरच्या संक्रमणाची रांग लावू शकता.
  • उपलब्ध (): वाचण्यासाठी बाइटची संख्या परत करेल.
  • वाचा(): एका दासाकडून मास्टरकडे किंवा त्याउलट प्रसारित केलेले बाइट वाचा.
  • ऑनप्राप्त (): जेव्हा एखाद्या दासाकडून मास्टरकडून ट्रान्समिशन प्राप्त होते तेव्हा फंक्शन कॉल करते.
  • विनंतीवरून (): जेव्हा एखादा स्मास्टर मास्टरकडून डेटा विनंती करतो तेव्हा फंक्शन कॉल करतो.

परिच्छेद अधिक माहिती आर्डूनो प्रोग्रामिंग आणि कार्ये बद्दल आपण आमचे डाउनलोड करू शकता पीडीएफ ट्यूटोरियल.

पीसीएफ 8574 काय आहे?

पीसीएफ 8574 मॉड्यूल

पीसीएफ 8574 एक आहे आय 2 सी बस डिजिटल इनपुट आणि आउटपुट (I / O) विस्तारक. आयसी आणि मॉड्यूलमध्ये उपलब्ध असण्याव्यतिरिक्त हे विविध उत्पादकांद्वारे तयार केले जाऊ शकते. कोणत्याही परिस्थितीत, ते आपल्या अर्डिनो बोर्डशी कनेक्ट करणे खूपच व्यावहारिक आहे आणि मदरबोर्डला परवानगी देण्यापेक्षा अधिक डिव्हाइस नियंत्रित करण्याची क्षमता आहे.

El पीसीएफ 8574 पिनआउट सोपे आहे, कारण त्यात फक्त समाविष्ट आहे 8 पाइन्स अर्धबिंदू (पी 0-पी 7 जिथे संप्रेषण करण्यासाठी चिप्स कनेक्ट केलेली आहेत) आणि दुसरीकडे आपल्याकडे एसडीए आणि एससीएल आहे की आपण मॉड्यूलला उर्जा देण्यासाठी एर्डुइनो बोर्ड, तसेच व्हीसीसी आणि जीएनडीशी कनेक्ट केले जाणे आवश्यक आहे. संप्रेषण कोणत्या कोणत्या डिव्हाइसवर निर्देशित केले आहे हे निवडण्यासाठी तीन अ‍ॅड्रेसिंग पिन ए 0, ए 1, ए 2 विसरू नका ...

पीसीएफ 8574 पिनआउट

मालकीचे इतर वैशिष्ट्ये तुम्हाला माहिती असावी:

  • त्याचे कनेक्शन, ओपन ड्रेन असल्याने असू शकतात इनपुट आणि आउटपुट दोन्ही म्हणून वापरले.
  • La पीक करंट जेव्हा ते आउटपुट (सिंक, जेव्हा पीसीएफ 25 कडे वर्तमान वाहते) आणि 8574 µ ए (स्त्रोत, पीसीएफ 300 पासून चालू प्रवाह) म्हणून कार्य करते तेव्हा ते 8574 एमए असते.
  • La ताण वीजपुरवठा 2.5 आणि 6v आहे. स्टँड-बाय सेवन खूपच कमी आहे, केवळ 10 .A.
  • सर्व आउटपुट लॅच आहेत, बाह्य क्रियांच्या आवश्यकतेशिवाय राज्य राखण्यासाठी. आपल्याला फक्त जेव्हा राज्य बदलण्याची इच्छा असेल तेव्हा कार्य करावे लागेल.
  • आपण 8 मिळवू शकता संभाव्य दिशानिर्देश, म्हणजेच 8 साधनांपर्यंत विस्तारित करण्यासाठी 8 मॉड्यूल्ससह संवाद साधण्यासाठी किंवा 64 मॉड्यूल वापरणे. पत्ते (पिन ए 0, ए 1, ए 2) हे असतीलः
    • 000: पत्ता 0x20
    • 001: पत्ता 0x21
    • 010: पत्ता 0x22
    • 011: पत्ता 0x23
    • 100: पत्ता 0x24
    • 101: पत्ता 0x25
    • 110: पत्ता 0x26
    • 111: पत्ता 0x27
  • प्रवेश करतो व्यत्यय (आयएनटी) सतत देखरेखीशिवाय डेटा शोधण्यासाठी एका विशेष ओळीद्वारे.

अर्दूनो सह एकत्रीकरण

अर्दूनो आयडीईचा स्क्रीनशॉट

अर्दूनो सह कनेक्शन खूप सोपे आहे, आपल्याला फक्त एआरडिनो बोर्डच्या 5 व्ही पिनसह व्हीसीसी आणि जीआरएनडी ऑफ अर्डिनो सह कनेक्ट करावे लागेल. दुसरीकडे, पीसीएफ 8574 एसडीए आणि एससीएल मॉड्यूलचे पिन असू शकतात पिन सह कनेक्ट करा 14 (ए 5 एससीएल) आणि 15 (ए 4 एसडीए). केवळ त्यासह ते कार्य करण्यास सुरवात करेल, अर्थात आपण संप्रेषण करू इच्छित डिव्हाइस कनेक्ट करण्यासाठी आपण Px वापरू शकता ...

मग ते फक्त गहाळ होईल उदाहरणार्थ स्केचसह प्रारंभ करा अर्दूनो आयडीई मध्ये. आपण अतिरिक्त लायब्ररी न वापरता हे करू शकता जसे की ...

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

किंवा देखील लायब्ररी वापरा, जसे की पीसीएफ 8574 येथे डाउनलोड करा आणि या लायब्ररीसह आलेल्या उदाहरणातूनच यासारखा कोड वापरा:

#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. डेटा संग्रहण: ओकेन्टस नेटवर्क (EU) द्वारा होस्ट केलेला डेटाबेस
  6. अधिकारः कोणत्याही वेळी आपण आपली माहिती मर्यादित, पुनर्प्राप्त आणि हटवू शकता.