PCF8574: вземете повече свързващи щифтове за Arduino

pcf8574

Може да сте попаднали в ситуация, в която искате да разширите броя на входовете и изходите, достъпни за вас дъска arduino, тъй като изпълнявате проект, който се нуждае от повече устройства от очакваното. В тези случаи можете да направите само едно нещо и това е да помислите за закупуване на платка от по-висок модел с повече от тези връзки. Но сега с PCF8574 може да разшири I/O на Arduino по лесен и евтин начин.

Тук ще ви покажем какво представлява PCF8574, в случай че не сте го знаели, в допълнение към показването как може да се свърже към вашата платка Arduino, обяснено стъпка по стъпка и как работи...

Какво е PCF8574?

pcf8574

El PCF8574 е разширител за цифров вход и изход (I/O) за шината I2C1. Това устройство, произведено от Philips, ви позволява да свържете процесор като Arduino, за да контролирате повече устройства, използвайки по-малко пинове2. PCF8574 включва 8 квази-насочени пина, базирани на CMOS изходи в конфигурация с отворен дрейн.

Освен това PCF8574 е устройство с ниска мощност, което поддържа VCC операции от 2.5V до 6V. Той разполага с 8-битов квази-двупосочен входно-изходен порт, затворени изходи, изход за прекъсване на отворен дрейн и способност за управление на висок ток за светодиоди. От друга страна, консумацията му в режим на готовност е много ниска, по-малко от 10 µA.

Много е полезно за Разширете възможностите на вашата платка Arduino отвъд нейните граници, което може да бъде голяма помощ за творци, които се нуждаят от нещо повече от това, което Arduino предлага. Максималният ток, който всеки щифт може да достави, ще зависи от конфигурацията:

  • Когато действа като изход, той е 25 mA, когато действа като мивка, т.е. когато електрическият ток протича към PCF8574. Това е конфигурацията по подразбиране.
  • Когато действа като източник, той е 300µA, т.е. когато токът тече от PCF8574. По същия начин трябва да знаете, че всички изходи имат ключалки, тоест те поддържат състоянието сами в регистър. Трябва да действаме само когато искаме да променим състоянието на един от изходите.

Комуникацията е извършена чрез I2C шина, така че е лесно да получите данни от свързаните към него устройства. По същия начин трябва да се отбележи, че има 3 адресни пина, което дава 8 възможни връзки към една и съща I2C шина. Това означава, че е възможно да се контролират 64 устройства, като се използват само 2 пина.

Настройки на адреса

Някои модели на този модул PCF8574 обикновено включват конфигурационни щифтове и джъмпери като тези, които виждате на изображението по-горе. От друга страна, други модели включват превключвател, който улеснява нещата с трите микропревключвателя... Както и да е, те са свикнали конфигуриране на адреси на I/O пинове:

A0 A1 A2 Адрес
0 0 0 0x20
0 0 1 0x21
0 1 0 0x22
0 1 1 0x23
1 0 0 0x24
1 0 1 0x25
1 1 0 0x26
1 1 1 0x27

Цена и къде да купя

Може да се намери само за няколко евро. Това е устройство доста евтино за това колко практично може да бъде за някои модели на Arduino, които имат по-малък брой I/O. Така че, ако търсите PCF8574, можете да го намерите в специализирани магазини или също в големи онлайн платформи като Amazon, Aliexpress или eBay. Например, тук препоръчваме един:

Свързване на PCF8574 към Arduinno

за свържете разширителя PCF8574 към вашата платка Arduino, Схемата за свързване е доста проста. Ще трябва само да свържете:

  • SCL щифтът, маркиран на платката PCF8574 към SCL щифта на Arduino. Този щифт може да се променя в зависимост от модела, но обикновено е на A5 на по-популярните модели като UNO.
  • SDA щифтът на разширителя трябва да се свърже с SDA щифта на Arduino. Същото нещо, което споменах по-горе, може да се променя в зависимост от модела, но като цяло това е A4. Ако се съмнявате, проверете разводката на вашия модел.
  • Щифтът GND на PCF8574 разбира се ще бъде свързан към този, отбелязан с GND на Arduino, тоест това е заземителната връзка.
  • Vcc щифтът на разширителя е свързан към 5V на Arduino, по този начин, с GND и Vcc вече сме захранвали разширителната платка, така че да може да започне да работи.

операция

След като PCF8574 е свързан към платката Arduino, сега е време да знаете как работи. За да направите това, трябва да имате предвид, че ще можете да имате 8 допълнителни пина, в замяна на това, че сте използвали два Arduino пина, в допълнение към захранващите. От друга страна, трябва да вземете предвид нещо, а то е, че на всеки от тези 8 пина на PCF8574 имате MOSFET транзистор заедно с издърпващ резистор с много ниско съпротивление. Това предполага интензитет на тока от 100 микроА, когато транзисторът е активен.

И това ни оставя следната панорама:

  • Конфигурация като изход- Когато щифтът се използва като изход, той действа като токоотвод, както обсъдих по-горе, т.е. тече ток.
    • LOW: Когато е при ниско напрежение, той не провежда ток, натоварване = Vdd.
    • ВИСОКО: когато при високо напрежение може да премине ток до 25mA, товарът ще бъде свързан към GND.
  • Конфигурация като вход: винаги трябва да е настроен на HIGH и в този случай той ще действа като източник, тоест токът изтича.
    • Затворено: Когато външното натоварване не е дадено, напрежението на щифта отива към GND.
    • отворен: Когато възникне външно натоварване, напрежението на щифта става Vdd.

Arduino IDE код

Arduino IDE, типове данни, програмиране

Ако това, което искате, са няколко примера за това как да създадете код, за да използвате този PCF8574 на Arduino, това е толкова просто, колкото използването на тези примери за код, които можете да модифицирате според вашите нужди:

  • Конфигурация като изход:
#include <Wire.h>

const int pcfAddress = 0x38;

void setup()
{
  Wire.begin();
  Serial.begin(9600);
}

void loop()
{
  for (short channel = 0; channel < 8; channel++)
  {
    // Escribir dato en canal 'channel'
    Wire.beginTransmission(pcfAddress);
    Wire.write(~(1 << channel));
    Wire.endTransmission();
    
    // Leer dato de canal
    delay(500);
  }
}
  • Конфигурация като вход:
#include <Wire.h>

const int pcfAddress = 0x38;

void setup()
{
  Wire.begin();
  Serial.begin(9600);
}

void loop()
{
  short channel = 1;
  byte value = 0;

  // Leer dato de canal 'channel'
  Wire.requestFrom(pcfAddress, 1 << channel);
  if (Wire.available())
  {
    value = Wire.read();
  }
  Wire.endTransmission();

  // Mostrar el valor por puerto serie
  Serial.println(value);
}

Не забравяйте, че можете също да използвате библиотека, създадена специално за PCF8574 което включва и практически примери...


Бъдете първите, които коментират

Оставете вашия коментар

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани с *

*

*

  1. Отговорен за данните: Мигел Анхел Гатон
  2. Предназначение на данните: Контрол на СПАМ, управление на коментари.
  3. Легитимация: Вашето съгласие
  4. Съобщаване на данните: Данните няма да бъдат съобщени на трети страни, освен по законово задължение.
  5. Съхранение на данни: База данни, хоствана от Occentus Networks (ЕС)
  6. Права: По всяко време можете да ограничите, възстановите и изтриете информацията си.