PCF8574: Аб пашыральніку ўводу-выводу I2C для 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 годзе, і ім можна карыстацца свабодна.

У цяперашні час ён шырока выкарыстоўваецца ў прамысловасці для зносін, а таксама вельмі высока ацэнены вытворцамі за іх праекты па сувязі розных мікракантролераў і перыферыйных прылад, інтэграваных у адну ІС.

El I2C - гэта аўтобус добра вядомы з паслядоўнай сувязі. Ён выкарыстоўвае сінхронны пратакол сувязі толькі з 2 каналамі (ёсць трэці, але ён звязаны са спасылкай або GND), на самай справе ён таксама вядомы як TWI (двухправодны інтэрфейс):

  • Адзін для гадзін (SCL).
  • Іншае для дадзеных (SDA).
Абодва яны маюць адкрытыя зліўныя злучэння CMOS і патрабуюць падцягвальных рэзістараў. Акрамя таго, калі адно прылада перадае 0, а іншае 1, могуць узнікнуць праблемы, таму лінія заўсёды ўстаноўлена на 1 (высокі ўзровень), а прылады заўсёды перадаюць 0 (нізкі ўзровень).

Гэта азначае, што гаспадар і раб яны адпраўляюць дадзеныя па адным і тым жа кабелі альбо дарожцы, якая кіруецца першай, якая генеруе сігнал тактавай частоты. Кожнаму з перыферыйных прылад, падлучаных да шыны I2C, будзе прызначаны унікальны адрас для таго, каб накіроўваць перадачы. Але неабавязкова, што настаўнік заўсёды адзін і той жа (мульты-настаўнік), ён заўсёды ініцыюе перавод.

Як я ўжо тлумачыў у артыкуле пра Arduino I2C Я спасылаўся раней, кожная плата мае гэтыя злучэнні I2C у розных месцах. Гэта трэба мець на ўвазе, каб мець магчымасць правільна выкарыстоўваць яго ў кожнай версіі пласціны:

Вы ўжо ведаеце, што вы можаце лёгка выкарыстоўваць I2C для сваіх эскізаў, так як Бібліятэка Wire.h з рознымі функцыямі для гэтай паслядоўнай сувязі:

  • пачаць (): запусціце правадную бібліятэку і ўкажыце, калі яна з'яўляецца галоўнай або падпарадкаванай
  • requestFrom (): выкарыстоўваецца майстрам для запыту дадзеных у раба.
  • beginTransmission (): пачаць перадачу з раба.
  • endTransmission (): канчатковая перадача.
  • напісаць ()- Запішыце дадзеныя ад раба ў адказ на запыт ад майстра, альбо вы можаце паставіць у чаргу перадачу майстра.
  • даступна (): верне колькасць байтаў для чытання.
  • чытаць (): прачытаць байт, які перадаецца ад падлеглага вядучаму ці наадварот.
  • onReceive (): Выклікае функцыю, калі падпарадкаваны атрымлівае перадачу ад вядучага.
  • onRequest (): Выклікае функцыю, калі падпарадкаваны запытвае дадзеныя ў майстра.

да больш інфармацыі пра праграмаванне і функцыі Arduino вы можаце загрузіць нашы Падручнік PDF.

Што такое PCF8574?

Модуль PCF8574

PCF8574 з'яўляецца Пашыральнік лічбавых уваходаў і выхадаў (I / O) шыны I2C. Ён можа вырабляцца рознымі вытворцамі, акрамя таго, што ён даступны ў ІС і модулях. У любым выпадку вельмі практычна падключыць яго да платы Arduino і мець магчымасць кіраваць большай колькасцю прылад, чым дазваляе мацярынская плата.

El PCF8574 распіноўка проста, бо ўключае толькі 8 хвоі квазінакіраваны (P0-P7, дзе падключаны мікрасхемы для сувязі), а з іншага боку, у вас ёсць SDA і SCL, якія вы павінны падключыць да платы Arduino, а таксама VCC і GND для харчавання модуля. І не забудзьцеся пра тры адрасныя кантакты A0, A1, A2, каб выбраць, на якую з прылад накіроўваецца сувязь ...

PCF8574 распіноўка

Валодае іншыя асаблівасці што вы павінны ведаць:

  • Яе злучэння, будучы адкрытым каналізацыяй, могуць быць выкарыстоўваецца і як уваход, і як выхад.
  • La пікавы ток гэта 25 мА, калі ён дзейнічае як выхад (пагружальнік, калі ток ідзе да PCF8574), і 300 мкА (крыніца, ток ідзе ад PCF8574).
  • La напружанасць крыніца харчавання складае 2.5 і 6v. Спажыванне ў рэжыме чакання вельмі нізкае, усяго 10 мкА.
  • Усе выхады мець зашчапкі, каб падтрымліваць стан без неабходнасці знешніх дзеянняў. Дзейнічаць трэба толькі тады, калі вы хочаце змяніць стан.
  • Вы можаце атрымаць 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

Здымак экрана Arduino IDE

Злучэнне з Arduino вельмі простае, вам проста трэба падключыць Vcc 5-кантактным штыфтам платы Arduino, а GND - GND Arduino. З іншага боку, штыфты модуля SDF і SCL PCF8574 могуць быць злучыце шпількамі 14 (A5 SCL) і 15 (A4 SDA). Толькі з гэтым ён пачне працаваць, відавочна, вы можаце выкарыстоўваць Px для падлучэння прылад, з якімі вы хочаце звязацца ...

Тады яго толькі не хапала б пачніце з прыкладу эскіза у IDE Arduino. Вы можаце зрабіць гэта, не выкарыстоўваючы дадатковую бібліятэку, такую ​​як ...

#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. Правы: у любы час вы можаце абмежаваць, аднавіць і выдаліць сваю інфармацыю.

Тэст па англійскай мовеТэст каталонскайіспанская віктарына