PCF8574: Arduino үшін I2C I / O Expander туралы

PCF8574 TI CHIP

Сіз бұл туралы естігенсіз IC PCF8574, бөлек сатып алуға болатын немесе басқалар сияқты модульге орнатылған чип Электрондық компоненттер Arduino тақтасымен біріктіруді жеңілдету үшін. Бұл жағдайда бұл кірістер мен шығыстарды кеңейтуші болып табылады I2C автобусы.

Ардуиноның өзінде бар деп ойлауыңыз мүмкін кіріктірілген I2C шинасы, және бұл шындық. PCF8574 бұл автобусты сіздің даму тақтаңыздың шегінен асыруға көмектесе алады, бұл Arduino ұсынғаннан гөрі көп нәрсені қажет ететін кейбір өндірушілерге үлкен көмек болады.

I2C автобус дегеніміз не?

Arduino UNO миллис функциялары

I2C атауы шыққан Интегралды схема немесе интегралды схемалар. Оның 1.0 нұсқасын 1992 жылы Philips компаниясы құрған. Сонда екінші 2.1 2000 жылы келеді және бүгінде ол стандартқа айналды (100 кбит / с жылдамдықта, егер ол максималды 3.4 Мбит / с-қа дейін жетеді), 2006 жылы патенттің қолданылу мерзімі аяқталды және оны еркін пайдалануға болады.

Қазіргі уақытта ол өндірісте кеңінен қолданылады байланыс үшінСондай-ақ, өндірушілер бір IC-ге интеграцияланған әртүрлі микроконтроллерлер мен перифериялық құрылғыларды байланыстыру жобалары үшін өте жоғары бағаланады.

El I2C - автобус белгілі сериялық байланыс. Ол тек 2 арнадан тұратын синхронды байланыс протоколын қолданады (үшіншісі бар, бірақ ол сілтеме немесе GND-мен біріктірілген), іс жүзінде ол TWI (Two Wire Interface) деп те аталады:

  • Сағат үшін біреуі (SCL).
  • Деректер үшін басқалары (SDA).
Екеуі де ашық дренажды CMOS қосылыстары және тартқыш резисторларды қажет етеді. Сондай-ақ, егер бір құрылғы 0-ді, ал екіншісі 1-ді берсе, қиындықтар туындауы мүмкін, сондықтан сызық әрқашан 1-ге (жоғары деңгей) қойылады, ал құрылғылар әрдайым 0-ге (төменгі деңгей) жіберіледі.

Бұл дегеніміз қожайын және құл олар деректерді дәл сол кабель немесе трек арқылы жібереді, оны сағат сигналын шығаратын біріншісі басқарады. I2C шинасына қосылған перифериялық құрылғылардың әрқайсысы берілістерді бағыттау үшін бірегей адреске ие болады. Бірақ шебер әрдайым бірдей болуы қажет емес (мульти-мастер), ауыстыруды әрқашан өзі бастайды.

Мен қазірдің өзінде туралы мақалада түсіндіргендей Arduino I2C Мен бұрын сілтеме жасаған едім, әр тақтада әртүрлі жерлерде I2C байланыстары бар. Оны әр пластинаның нұсқасында дұрыс қолдана білу үшін есте ұстаған жөн:

Сіз I2C-ді нобайларыңыз үшін оңай қолдана алатыныңызды білесіз, өйткені Wire.h кітапханасы осы сериялық байланыс үшін әртүрлі функциялармен:

  • баста (): Wire кітапханасын іске қосып, оның басты немесе құл екенін көрсетіңіз
  • requestFrom (): шебері құлдан мәлімет сұрау үшін қолданылады.
  • beginTransmission (): жіберуді құлдан бастаңыз.
  • endTransmission (): соңғы беру.
  • жазу ()- Қожайынның сұрауына жауап ретінде құлдан мәлімет жазыңыз немесе сіз шебердің жіберілуіне кезекке тұра аласыз
  • қол жетімді (): оқылатын байт санын қайтарады.
  • оқу (): құлдан қожайынға берілген немесе керісінше байтты оқу.
  • onReceive (): Құл шеберіден хабар алған кезде функцияны шақырады.
  • onRequest (): Құл мастерден деректер сұрағанда функцияны шақырады.

Para қосымша ақпарат Arduino бағдарламалау және функциялары туралы сіз біздің жүктей аласыз PDF оқулығы.

PCF8574 дегеніміз не?

PCF8574 модулі

PCF8574 а I2C шинасының цифрлық кірістері мен шығыстары (енгізу-шығару) кеңейткіші. Оны әртүрлі өндірушілер өндіре алады, сонымен қатар IC және модульдерде болуы мүмкін. Қалай болғанда да, оны Arduino тақтасына қосу өте пайдалы және аналық платадан гөрі көп құрылғыларды басқару мүмкіндігі бар.

El PCF8574 бекіту Бұл қарапайым, өйткені ол тек кіреді 8 қарағай квази-бағытты (P0-P7, онда микросхемалар байланысады), ал екінші жағынан сізде Arduino тақтасына қосылу керек SDA және SCL, сондай-ақ модульге қуат беру үшін VCC және GND бар. Байланыс құрылғыларының қайсысына бағытталғанын таңдау үшін A0, A1, A2 үш адресті түйреуіштерді ұмытпаңыз ...

PCF8574 бекіту

Иелік етеді басқа да ерекшеліктер білуіңіз керек:

  • Оның қосылыстары ашық дренаж бола алады кіріс және шығыс ретінде де қолданылады.
  • La шыңы жоғары ток ол шығыс ретінде жұмыс істегенде 25мА (раковина, ток PCF8574-ке қарай ағып жатқанда) және 300 µA (көз, ток PCF8574-тен ағып кетеді).
  • La стресс қуат көзі 2.5 және 6в құрайды. Күту режиміндегі тұтыну өте аз, тек 10 µА.
  • Барлық нәтижелер ысырмалары бар, сыртқы әрекеттерді қажет етпестен мемлекетті сақтау. Сіз күйді өзгерткіңіз келген кезде ғана әрекет етуіңіз керек.
  • Сіз 8 аласыз мүмкін нұсқаулар, яғни 8 модульмен байланысу үшін 8 құрылғыға дейін немесе оны 64 құрылғыға дейін кеңейту үшін 0 модульді пайдалану. Мекен-жайлар (A1, A2, AXNUMX түйреуіштері):
    • 000: мекен-жайы 0х20
    • 001: мекен-жайы 0х21
    • 010: мекен-жайы 0х22
    • 011: мекен-жайы 0х23
    • 100: мекен-жайы 0х24
    • 101: мекен-жайы 0х25
    • 110: мекен-жайы 0х26
    • 111: мекен-жайы 0х27
  • Қабылдайды үзіліс (INT) деректерді үнемі бақылаусыз табуға арналған арнайы сызық арқылы.

Arduino-мен интеграция

Arduino IDE скриншоты

Arduino-мен байланыс өте қарапайым, сіз Vcc-ді Arduino тақтасының 5v түйреуішімен, ал GND-ді Arduino-дің GND-мен байланыстыруыңыз керек. Екінші жағынан, 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. Құқықтар: Сіз кез-келген уақытта ақпаратты шектей, қалпына келтіре және жоя аласыз.