PCF8574: zdobądź więcej pinów połączeniowych dla Arduino

pcf8574

Być może znalazłeś się w sytuacji, w której chciałbyś rozszerzyć liczbę dostępnych wejść i wyjść płyta arduino, ponieważ realizujesz projekt, który wymaga większej liczby urządzeń, niż oczekiwano. W takich przypadkach można było zrobić tylko jedno, a mianowicie pomyśleć o zakupie deski wyższego modelu, posiadającej więcej takich złączy. Ale teraz z PCF8574 może rozszerzyć wejścia/wyjścia Arduino w łatwy i tani sposób.

Tutaj pokażemy Ci, czym jest PCF8574, jeśli tego nie wiesz, a także pokażemy, jak można go podłączyć do płytki Arduino, wyjaśnimy krok po kroku i jak to działa...

Co to jest PCF8574?

pcf8574

El PCF8574 to cyfrowy ekspander wejść i wyjść (I/O) dla magistrali I2C1. To urządzenie wyprodukowane przez firmę Philips umożliwia podłączenie procesora takiego jak Arduino w celu sterowania większą liczbą urządzeń przy użyciu mniejszej liczby pinów2. PCF8574 zawiera 8 quasi-kierunkowych pinów opartych na wyjściach CMOS w konfiguracji z otwartym drenem.

Co więcej, PCF8574 to urządzenie o niskim poborze mocy, które obsługuje operacje VCC od 2.5 V do 6 V. Posiada 8-bitowy quasi-dwukierunkowy port we/wy, wyjścia zatrzaskowe, wyjście przerwania otwartego drenu i możliwość sterowania wysokim prądem dla diod LED. Z drugiej strony jego pobór mocy w trybie gotowości jest bardzo niski, poniżej 10 µA.

Jest to bardzo przydatne dla Rozszerz możliwości swojej płytki Arduino poza jej ograniczenia, co może być świetną pomocą dla twórców, którzy potrzebują czegoś więcej niż to, co oferuje Arduino. Maksymalny prąd, jaki może dostarczyć każdy pin, będzie zależał od konfiguracji:

  • Gdy pełni funkcję wyjścia, wynosi 25 mA, gdy pełni funkcję ujścia, to znaczy, gdy prąd elektryczny przepływa do PCF8574. Jest to konfiguracja domyślna.
  • Gdy pełni rolę źródła, wynosi 300µA, czyli gdy prąd płynie z PCF8574. Podobnie musisz wiedzieć, że wszystkie wyjścia mają zatrzaski, to znaczy same utrzymują stan w rejestrze. Musimy działać tylko wtedy, gdy chcemy zmodyfikować stan jednego z wyjść.

Komunikacja została zakończona poprzez magistralę I2C, dzięki czemu łatwo jest pozyskać dane z podłączonych do niego urządzeń. Podobnie należy zaznaczyć, że posiada 3 piny adresowe, co daje 8 możliwych połączeń do tej samej magistrali I2C. Oznacza to, że możliwe jest sterowanie 64 urządzeniami za pomocą tylko 2 pinów.

Ustawienia adresu

Niektóre modele tego modułu PCF8574 zwykle zawierają piny konfiguracyjne i zworki, takie jak te widoczne na powyższym obrazku. Z drugiej strony inne modele są wyposażone w przełącznik, który ułatwia pracę dzięki trzem mikroprzełącznikom... Tak czy inaczej, są one przyzwyczajone do skonfiguruj adresy Liczba pinów I/O:

A0 A1 A2 Adres
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

Precio y dónde compressar

Można go znaleźć już za kilka euro. To jest urządzenie całkiem tanio jak praktyczne może to być w przypadku niektórych modeli Arduino, które mają mniejszą liczbę wejść/wyjść. Jeśli więc szukasz PCF8574, możesz go znaleźć w wyspecjalizowanych sklepach, ale także na dużych platformach internetowych, takich jak Amazon, Aliexpress czy eBay. Na przykład tutaj polecamy jeden:

Podłączenie PCF8574 do Arduinno

do podłącz ekspander PCF8574 do swojej płytki Arduino, Schemat połączeń jest dość prosty. Wystarczy podłączyć:

  • Pin SCL oznaczony na płytce PCF8574 do pinu SCL Arduino. Ten pin może się zmieniać w zależności od modelu, ale zwykle znajduje się w A5 w bardziej popularnych modelach, takich jak UNO.
  • Pin SDA ekspandera musi być połączony z pinem SDA Arduino. To samo wspomniałem powyżej, może się to zmieniać w zależności od modelu, ale generalnie jest to A4. W razie wątpliwości sprawdź pinout swojego modelu.
  • Pin GND PCF8574 będzie oczywiście podłączony do tego oznaczonego GND na Arduino, czyli jest to połączenie z masą.
  • Pin Vcc ekspandera podłączamy do 5V Arduino, w ten sposób za pomocą GND i Vcc mamy już zasiloną płytkę ekspandera, aby mogła zacząć działać.

operacja

Po podłączeniu PCF8574 do płytki Arduino, czas się o tym przekonać jak to działa. Aby to zrobić, należy pamiętać, że będziesz mógł mieć 8 dodatkowych pinów w zamian za użycie dwóch pinów Arduino, oprócz tych zasilających. Z drugiej strony trzeba jednak wziąć pod uwagę coś, a mianowicie to, że na każdym z tych 8 pinów PCF8574 masz tranzystor MOSFET wraz z rezystorem podciągającym o bardzo niskiej rezystancji. Zakłada się, że natężenie prądu wynosi 100 mikroA, gdy tranzystor jest aktywny.

I tak zostaje nam następująca panorama:

  • Konfiguracja jako wyjście- Kiedy pin jest używany jako wyjście, pełni on funkcję ujścia prądu, jak pisałem powyżej, tj. wpływa prąd.
    • NISKI: Przy niskim napięciu nie przewodzi prądu, obciążenie = Vdd.
    • WYSOKI: przy wysokim napięciu może przepływać prąd do 25 mA, obciążenie zostanie podłączone do GND.
  • Konfiguracja jako dane wejściowe: zawsze musi być ustawiony na WYSOKI, w tym przypadku będzie pełnił rolę źródła, czyli wypływał prąd.
    • Zamknięte: Gdy nie jest podane obciążenie zewnętrzne, napięcie na pinie przechodzi do GND.
    • Otwarte: Gdy wystąpi obciążenie zewnętrzne, napięcie na pinach zmienia się na Vdd.

Kod IDE Arduino

Arduino IDE, typy danych, programowanie

Jeśli potrzebujesz przykładów tworzenia kodu do użycia tego PCF8574 na Arduino, jest to tak proste, jak użycie tych przykładów kodu, które możesz modyfikować zgodnie ze swoimi potrzebami:

  • Konfiguracja jako wyjście:
#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);
  }
}
  • Konfiguracja jako wejście:
#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);
}

Pamiętaj, że możesz także skorzystać z tzw biblioteka stworzona specjalnie dla PCF8574 który zawiera również praktyczne przykłady…


Bądź pierwszym który skomentuje

Zostaw swój komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

*

*

  1. Odpowiedzialny za dane: Miguel Ángel Gatón
  2. Cel danych: kontrola spamu, zarządzanie komentarzami.
  3. Legitymacja: Twoja zgoda
  4. Przekazywanie danych: Dane nie będą przekazywane stronom trzecim, z wyjątkiem obowiązku prawnego.
  5. Przechowywanie danych: baza danych hostowana przez Occentus Networks (UE)
  6. Prawa: w dowolnym momencie możesz ograniczyć, odzyskać i usunąć swoje dane.