PCF8574: За I2C I / O експандер за Arduino

PCF8574 TI чип

Сигурно сте слушнале за ИЦ PCF8574, чип што може да се купи одделно или веќе да се монтира на модул како и многу други Електронски компоненти за да ја олесни вашата интеграција со вашата табла Arduino. Во овој случај, тоа е продолжувач на влезовите и излезите за автобусот I2C.

Можеби мислите дека Ардуино веќе има свои интегриран автобус I2C, и тоа е вистина. Но, PCF8574 може да помогне да се прошири тој автобус над границите на вашата табла за развој, што може да биде од голема помош за некои производители на кои им треба повеќе од само она што го обезбедува Arduino.

Што е автобус I2C?

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

Името I2C потекнува Интер-интегрирано коло или интегрални кола. Неговата верзија 1.0 е создадена во 1992 година од Филипс. Потоа, втората 2.1 ќе дојде во 2000 година и денес стана стандард (со 100 kbit / s, иако дозволува максимум до 3.4 Mbit / s) кога патентот ќе истече во 2006 година и може да се користи слободно.

Во моментов е широко користен во индустријата за комуникација, и исто така многу ценети од производителите за нивните проекти за комуникација со различни микроконтролери и периферни уреди интегрирани во еден IC.

El I2C е автобус добро позната сериска комуникација. Користи синхрон протокол за комуникација со само 2 канали (има и трет, но е поврзан со референца или GND), всушност е познат и како TWI (двожичен интерфејс):

  • Еден за часовникот (SCL).
  • Друго за податоци (СДА).
Двете се со отворен мозок CMOS врски и бараат отпорници за влечење. Исто така, ако еден уред пренесува 0, а друг 1, може да има проблеми, затоа линијата е секогаш поставена на 1 (високо ниво) и уредите секогаш пренесуваат 0 (ниско ниво).

Тоа подразбира дека господар и роб тие испраќаат податоци преку истиот кабел или трака, што е контролирано од првиот што е оној што генерира сигнал на часовникот. Секој од периферните уреди поврзани со автобусот I2C ќе има доделена единствена адреса, со цел да ги насочи преносите. Но, не е потребно господарот да е секогаш ист (мулти-господар), секогаш е тој што го иницира трансферот.

Како што веќе објаснив во написот на Ардуино I2C Јас се повикав порано, секоја табла ги има овие I2C врски на различни места. Тоа е нешто што треба да го имате предвид за да можете правилно да го користите во секоја верзија на табличката:

  • Arduino UNO: СДА е во А4 и СЦК во А5
  • Ардуино Нано: исто како и претходниот.
  • Ардуино Мини Про: исто.
  • Ардуино Мега: SDA е на игла 20 и SCK на 21.
  • Повеќе информации за таблички.

Веќе знаете дека можете лесно да го користите I2C за вашите скици, бидејќи од Библиотека со жици со различни функции за оваа сериска комуникација:

  • започне (): стартувајте ја библиотеката Wire и наведете дали е master или slave
  • requestFrom (): се користи од страна на господарот за да побара податоци од робот.
  • startTransmission (): започнете со пренос со роб.
  • endTransmission (): крајно пренесување.
  • напиши ()- Напишете податоци од роб како одговор на барање од господарот, или можете да чекате во редица за пренос на господар.
  • достапно (): ќе го врати бројот на бајти за читање.
  • прочитај (): прочитајте бајт пренесен од роб на господар или обратно.
  • onReceive (): Повикува функција кога робот прима пренос од господар.
  • на барање (): Повикува функција кога робот бара податоци од господар.

до повеќе информации за програмирањето и функциите на Arduino, можете да ги преземете нашите PDF упатство.

Што е PCF8574?

PCF8574 модул

PCF8574 е a Проширувач на дигитални влезови и излези I2C магистрала. Може да го произведуваат различни производители, покрај тоа што го има на располагање во МЦ и модули. Во секој случај, многу е практично да го поврзете со вашата табла Arduino и да имате капацитет да контролирате повеќе уреди отколку што дозволува матичната плоча.

El PCF8574 pinout Едноставно е, бидејќи вклучува само 8 борови квази насочен (P0-P7 каде што се поврзани чиповите за комуникација), а од друга страна имате SDA и SCL кои мора да ги поврзете на таблата Arduino, како и VCC и GND за исто така да го напојуваат модулот. И не заборавајте на трите адресни пинови А0, А1, А2 за да изберете на кој од уредите комуникацијата е насочена ...

Исклучување на PCF8574

Сопственик други карактеристики што треба да знаете:

  • Неговите врски, како отворен мозоци, можат да бидат се користи и како влез и излез.
  • La врвна струја тоа е 25mA кога делува како излез (мијалник, кога струјата тече кон PCF8574) и 300 μA (извор, струјата тече од PCF8574).
  • 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
  • Признава прекин (INT) со посебна линија за откривање на податоци без постојано следење.

Интеграција со Arduino

Снимка на екранот од Arduino IDE

Врската со Arduino е многу едноставна, само треба да поврзете Vcc со 5v игла на таблата Arduino, и GND со GND на Arduino. Од друга страна, пиновите на модулот 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. Права: Во секое време можете да ги ограничите, вратите и избришете вашите информации.