PCF8574:: I2C I / O विस्तारकको बारे Aruino

PCF8574 TI CHIP

तपाईंले पक्कै पनि यसको बारेमा सुनेका छौं आईसी PCF8574, एक चिप जो कि अलग खरीद गर्न सकिन्छ वा पहिले नै धेरै अन्य जस्तै मोड्युलमा माउन्ट गर्न सकिन्छ इलेक्ट्रोनिक कम्पोनेन्टहरू तपाईंको Ardino बोर्डको साथ तपाईंको एकीकरणमा सुविधा पुर्‍याउन। यस अवस्थामा यो आगत र विस्तारहरूको लागि विस्तारक हो I2C बस.

तपाईले सोच्न सक्नुहुन्छ कि अरुडिनोसँग पहिले नै उसको आफ्नै छ एकीकृत I2C बस, र यो सत्य हो। तर पीसीएफ 8574 thatXNUMX ले त्यो बसलाई तपाईंको विकास बोर्डको सीमा भन्दा टाढा विस्तार गर्न मद्दत गर्न सक्छ, जुन केही निर्माताहरूलाई ठूलो सहयोगी हुन सक्छ जुन अर्दुइनोले दिएको भन्दा बढि चाहिन्छ।

I2C बस के हो?

Arduino UNO मिली फंक्शनहरू

नाम I2C बाट आयो अन्तर्-एकीकृत सर्किट वा अन्तर-एकीकृत सर्किटहरू। यसको संस्करण १.० १ 1.0 1992 २ मा फिलिप्सले सिर्जना गरेको हो। त्यसो भए दोस्रो २.१ २००० मा आउँथ्यो र आज यो एक मानक (१०० केबिट / सेकेन्ड) मा परिणत भैसकेको छ, यद्यपि यसले 2.1..2000 Mbit / s अधिकतमसम्म अनुमति दिन्छ) जब पेटेन्ट २०० 100 मा समाप्त भयो र स्वतन्त्र रूपमा प्रयोग गर्न सक्दछ।

वर्तमान मा यो उद्योग मा व्यापक प्रयोग गरीन्छ संचार को लागी, र पनि धेरै आईसीमा एकीकृत विभिन्न microcontrollers र परिधीहरु कुराकानी गर्न को लागी आफ्नो परियोजनाहरु को लागि निर्माताहरु द्वारा धेरै सराहना।

El I2C बस हो सीरियल संचारबाट राम्रोसँग परिचित यसले केवल २ च्यानलहरू (एक तेस्रो हो, तर यसलाई सन्दर्भ वा GND सँग जोडिएको छ) का साथ एक सिnch्क्रोनस संचार प्रोटोकल प्रयोग गर्दछ, वास्तवमा यसलाई TWI (दुई तार इन्टरफेस) पनि भनिन्छ:

  • एक घडीको लागि (SCL)।
  • डाटाका लागि अन्य (SDA)।
दुबै खुला नाली सीएमओएस जडानहरू हुन् र पुल-अप प्रतिरोधकहरू आवश्यक छन्। साथै, यदि एक उपकरण ० र अर्को १ १ प्रसारण गर्दछ भने समस्याहरू हुन सक्छन्, यसैले लाइन सधैं १ मा सेट गरिएको छ (उच्च स्तर) र उपकरणहरू सँधै ० (निम्न स्तर) प्रसारण गर्दछ।

त्यो संकेत गर्दछ मास्टर र दास तिनीहरू समान केबल वा ट्र्याकमा डाटा पठाउँछन्, जुन पहिलो द्वारा नियन्त्रण गरिन्छ जुन क्लक सिग्नल उत्पन्न गर्दछ। I2C बसमा जडान गरिएको सबै परिधीय यन्त्रहरूको ट्रान्समिशनहरू निर्देशित गर्न क्रममा, एउटा अद्वितीय ठेगाना तोकिनेछ। तर यो आवश्यक छैन कि शिक्षक जहिले पनि समान (बहु-शिक्षक) हुन्छ, यो सँधै स्थानान्तरण गर्ने पहल गर्ने हो।

मैले यस लेखमा पहिले नै वर्णन गरिसकें Arduino I2C मैले पहिले संदर्भ लिएँ, प्रत्येक बोर्डसँग यी I2C जडानहरू विभिन्न स्थानहरूमा छन्। यो थालको प्रत्येक संस्करणमा यसलाई राम्रोसँग प्रयोग गर्न सक्षम हुन दिमागमा राख्नुपर्ने कुरा यो हो:

तपाईलाई पहिले नै थाहा छ कि तपाईको स्केचेसको लागि I2C सजिलै प्रयोग गर्न सक्नुहुनेछ, किनभने यो Wire.h पुस्तकालय यो क्रम संचार को लागी विभिन्न कार्यहरु संग:

  • सुरु (): तार पुस्तकालय सुरु गर्नुहोस् र निर्दिष्ट गर्नुहोस् यदि यो मास्टर वा दास हो
  • अनुरोधफ्रम (): दासबाट डेटा अनुरोध गर्न मास्टरद्वारा प्रयोग गरिएको।
  • startTransmission (): दाससँग प्रसारण सुरू गर्नुहोस्।
  • अन्त ट्रान्समिशन (): अन्त प्रसारण।
  • लेख्नुहोस् ()- मास्टरबाट अनुरोधको जवाफमा गुलामबाट डाटा लेख्नुहोस्, वा तपाईं मास्टरको ट्रान्समिशनलाई लाममा राख्न सक्नुहुन्छ।
  • उपलब्ध (): पढ्न बाइट्सको संख्या फर्काउँछ।
  • पढ्नुहोस्): दासबाट मालिकमा प्रसारण गरिएको बाइट वा यसको विपरित पढ्नुहोस्।
  • onReLive (): एक समारोह एक कल जब एक दास एक मास्टर देखि एक प्रसारण प्राप्त गर्दछ।
  • अनुरोधमा (): एक समारोह एक कल जब एक दास एक मास्टर देखि डाटा अनुरोध।

Para थप जानकारी Arduino प्रोग्रामिंग र प्रकार्यहरूको बारेमा तपाइँ हाम्रो डाउनलोड गर्न सक्नुहुन्छ पीडीएफ ट्यूटोरियल.

PCF8574 के हो?

PCF8574 मोड्युल

PCF8574 एक हो I2C बस डिजिटल इनपुटहरू र आउटपुट (I / O) विस्तारकर्ता। यो आईसीएस र मोड्युलहरूमा उपलब्ध हुनुका साथै बिभिन्न निर्माताहरूले निर्माण गर्न सक्दछन्। जे भए पनि, यो तपाइँको अर्डिनो बोर्डमा जडान गर्न धेरै व्यावहारिक छ र मदरबोर्डले अनुमति दिए भन्दा बढी यन्त्रहरू नियन्त्रण गर्ने क्षमता छ।

El PCF8574 पिनआउट यो सरल छ, किनकि यसले मात्र समावेश गर्दछ 8 पङ्क्ति quasidirectional (P0-P7 जहाँ कुराकानी गर्न चिपहरू जडित छन्), र अर्कोतर्फ तपाईसँग SDA र SCL छ कि तपाई Arduino बोर्डमा जडान हुनुपर्दछ, साथ साथै VCC र GND लाई पनि मोड्युल पावर गर्न। र तीन ठेगानाहरू पिन A0, A1, A2 नबिर्सनुहोस् कुन उपकरण सञ्चारमा निर्देशित गरिएको छनौट गर्न को लागी ...

PCF8574 पिनआउट

स्वामित्व अन्य सुविधाहरू तपाईंलाई थाहा हुनुपर्दछ:

  • यसको जडानहरू, खुला नाली हुनाले, हुन सक्छ दुबै इनपुट र आउटपुटको रूपमा प्रयोग गरियो.
  • La चरम वर्तमान यो २m एमए हो जब यसले आउटपुटको रूपमा कार्य गर्दछ (सिंक, जब हाल पीसीएफ 25 तिर जान्छ) र µ०० µA (स्रोत, पीसीएफ 8574 बाट हालको बहाव)।
  • La तनाव विद्युत आपूर्ति २. and र vv हो। स्ट्यान्ड-बाय खपत एकदम कम छ, केवल १० µA।
  • सबै परिणामहरू ल्याच छबाह्य कार्यको आवश्यकता बिना राज्य कायम राख्न। तपाईंले मात्र कार्य गर्नु पर्छ जब तपाईं राज्य परिवर्तन गर्न चाहानुहुन्छ।
  • तपाईं 8 प्राप्त गर्न सक्नुहुन्छ सम्भावित दिशाहरू, त्यो हो, 8 उपकरणहरूसँग कुराकानी गर्न वा mod मोड्युलहरू प्रयोग गरेर यसलाई devices 8 उपकरणहरूमा विस्तार गर्न। ठेगानाहरू (पिन A64, A0, A1) हुनेछ:
    • 000: ठेगाना ०x0
    • 001: ठेगाना ०x0
    • 010: ठेगाना ०x0
    • 011: ठेगाना ०x0
    • 100: ठेगाना ०x0
    • 101: ठेगाना ०x0
    • 110: ठेगाना ०x0
    • 111: ठेगाना ०x0
  • स्वीकार गर्दछ अवरोध (INT) निरन्तर अनुगमन बिना डाटा पत्ता लगाउन विशेष लाइन द्वारा।

Ardino संग एकीकरण

Arduino IDE को स्क्रीनशट

Ardino संग जडान धेरै सरल छ, तपाइँ भर्खर Vc Ardino बोर्ड को 5v पिन, र GND Ardino संग GND जडान गर्न को लागी। अर्कोतर्फ, पीसीएफ 8574DAXNUMX एसडीए र एससीएल मोड्युलको पिन हुन सक्छ पिनसँग जोड्नुहोस् १ ((A14 SCL) र १ ((A5 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. डाटाका लागि उत्तरदायी: मिगुएल gelन्गल ग्याटन
  2. डाटाको उद्देश्य: नियन्त्रण स्पाम, टिप्पणी प्रबन्धन।
  3. वैधानिकता: तपाईंको सहमति
  4. डाटाको सञ्चार: डाटा कानुनी बाध्यता बाहेक तेस्रो पक्षलाई सूचित गरिने छैन।
  5. डाटा भण्डारण: डाटाबेस ओसीन्टस नेटवर्क (EU) द्वारा होस्ट गरिएको
  6. अधिकार: कुनै पनि समयमा तपाईं सीमित गर्न सक्नुहुनेछ, पुन: प्राप्ति र तपाईंको जानकारी मेटाउन।