PCF8574: Аб пашыральніку ўводу-выводу I2C для Arduino

PCF8574 TI CHIP

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