Expander wyjść z PWM na bazie układu PCA9624

Expander wyjść z PWM na bazie układu PCA9624

Zaprezentowany moduł umożliwia rozszerzenie możliwości płytek uruchomieniowych, szczególnie Raspberry Pi wyposażonego tylko w jeden kanał PWM. Dodatkowe osiem kanałów PWM z wyjściami OD o rozdzielczości 8 bitów przeznaczone jest głównie do sterowania diodami LED. Podwyższona do 100 mA obciążalność GPIO i do 800 mA sumaryczny prąd zasilania oraz możliwość pracy z napięciem do 40 V doskonale sprawdzą się przy sterowaniu łańcuchów LED lub dużych wyświetlaczy siedmiosegmentowych. Po spolaryzowaniu wyjść rezystorami nadaje się także do innych zastosowań.

Podstawowe parametry:
  • 8 wyjść cyfrowych typu OD z funkcją PWM,
  • rozdzielczość PWM: 8 bitów,
  • maksymalne obciążenie wyjść: 100 mA/40 V (maksymalne sumaryczne obciążenie: 800 mA),
  • sterowanie poprzez I²C.

Sercem modułu jest układ PCA9624, którego strukturę wewnętrzną pokazano na rysunku 1. Wchodzi w skład szerokiej rodziny kontrolerów LED firmy NXP. Jest sterowany i konfigurowany przez interfejs I²C i ma możliwość zewnętrznego ustawiania adresu za pomocą wyprowadzeń A0...A6, co daje 126 adresów I²C. Kilka adresów magistrali jest zarezerwowanych dla sterowania globalnego. Adres 0x03 zarezerwowany jest dla resetu globalnego, adres 0x70 domyślnie dla globalnego sterowania wszystkimi LED. Ułatwia to oprogramowanie układów wyświetlaczy składających się z kaskady PCA9624, gdyż wszystkie układy, niezależnie od adresu fizycznego, reagują na jedną komendę globalną, co znacząco odciąża magistralę I²C od zbędnych transmisji. Możliwe jest także definiowanie podadresów grupujących sterowane diody LED i ułatwiających tworzenie ekranów RGB.

Rysunek 1. Struktura wewnętrzna PCA9624 (za notą NXP)

Sterowanie układem PCA9624

Oprócz indywidualnego sterowania PWM każdego z 8 wyjść, możliwe jest sterowanie grupowe w trybie globalnego PWM (np. do regulacji jasności wszystkich dołączonych diod LED) oraz pracy przerywanej – migania z wypełnieniem definiowanym z 8-bitową rozdzielczością (np. dla celów sygnalizacyjnych).
Każde z wyjść może być ustawione w stan GND/VCC. Wewnętrzny oscylator i programowane dzielniki upraszczają aplikację układu. Wejście sprzętowe !OE umożliwia sterowanie buforem wyjściowym. Układ funkcjonuje poprawnie w zakresie zasilania 2,3...5,5 V. Programowo jest zgodny z PCA9634, z wyjątkiem możliwości sterowania typem OUTDRV i negacją wyjść INVRT.

Strukturę rejestrów konfiguracyjnych zestawiono w tabeli 1. W zależności od potrzeb możliwa jest komunikacja z poszczególnymi rejestrami poprzez adresowanie indywidualne rejestrów, wskazujące na konkretny rejestr – zgodnie z rysunkiem 2.

Rysunek 2. Adresowanie indywidualne rejestrów (za notą NXP)

Drugim sposobem jest adresowanie grupowe wszystkich rejestrów pokazane na rysunku 3.

Rysunek 3. Adresowanie grupowe rejestrów (za notą NXP)

Ostatnim sposobem jest adresowanie grupowe rejestrów PWM po wcześniejszej konfiguracji układu zgodnie z rysunkiem 4.

Rysunek 4. Adresowanie grupowe rejestrów PWM (za notą NXP)

Odczyt odbywa się podobnie. Dokładniejsze informacje oczywiście zamieszczone są w nocie katalogowej. Najważniejsze bity konfiguracyjne dla podstawowego trybu pracy pokazano w tabeli 2.

Budowa i działanie

Schemat układu pokazano na rysunku 5. Nie jest on skomplikowany – zawiera zaledwie kilka elementów i zestaw szpilek goldpin oraz złączy udostępniających wszystkie istotne wyprowadzenia układu PCA9624.

Rysunek 5. Schemat ideowy układu

Montaż i uruchomienie

Montaż układu nie wymaga szczegółowego opisu. Płytka jest dwustronna, jej schemat został pokazany na rysunku 6, a zmontowany układ pokazuje fotografia tytułowa.

Rysunek 6. Schemat płytki PCB

Złącza interfejsu I²C są zgodne ze standardem Arduino i QWIIC, pozostałe sygnały wyprowadzone są na złącza szpilkowe o rastrze zgodnym z płytkami prototypowymi i stykowymi. Poprawnie zmontowany układ nie wymaga uruchamiania. Dioda PWR sygnalizuje zasilanie. Przed uruchomieniem konieczne jest tylko ustawienie adresu zworkami A0...A3, ze zwróceniem uwagi na adresy zarezerwowane i ewentualne kolizje z innymi układami I²C.

Przed podłączeniem diod LED lub wyświetlaczy należy sprawdzić warunki pracy układu, tj. maksymalne prądy każdego wyprowadzenia GPIO, sumaryczny prąd wyprowadzenia masy (uwzględniający też prądy I²C) oraz maksymalną traconą w układzie moc.

Szybkiego sprawdzenia modułu w przypadku współpracy z Raspberry PI najłatwiej dokonać, korzystając z bibliotek i2c i konsoli. W celu wysterowania PCA9624 konieczne jest dodanie obsługi magistrali I²C, czy poprzez narzędzie raspi-config, czy bezpośrednią edycję pliku config.txt i dodanie wpisu:

dtparam=i2c_arm=on

Po ponownym uruchomieniu należy pobrać narzędzia odpowiadające za obsługę I²C:

sudo apt-get install i2c-tools

Po zainstalowaniu i restarcie, w pierwszej kolejności sprawdzamy w konsoli prawidłowe działanie I²C komendą:

sudo i2cdetect -y 1

Efekt powinien być podobny to tego z rysunku 7 – powinno pojawić się urządzenie pod adresem 0x60 (lub innym ustawionym zworkami A0...A3).

Rysunek 7. Wykrycie układu PCA9624 na magistrali I²C

Jeżeli nie zostały zmienione adresy globalne, to powinny być także widoczne 0x03, 0x70. Korzystając z polecenia:

sudo i2cset -y 1 Adres_I²C, Adres_Rejestru, Dana_Do_Zapisu

możemy kolejno skonfigurować rejestry PCA w celu sprawdzenia działania układu, pamiętając o ustawieniu wejścia !OE w stan niski. Przykładowa konfiguracja rejestrów MODE0 (0x00), MODE1 (0x01), GRPPWM (0x0A), GRPFREQ (0x0B), LEDOUT0 (0x0C) wymaga wpisania poleceń:

i2cset -y 1 0x60 0x00 0x80
i2cset -y 1 0x60 0x01 0x05
i2cset -y 1 0x60 0x0A 0xFF
i2cset -y 1 0x60 0x0B 0x00
i2cset -y 1 0x60 0x0C 0xFF

Zmieniając wartość rejestru PWM0 (0x02):

i2cset -y 1 0x60 0x02 0xAA

zmieniamy wypełnienie sterujące diodą podłączoną do wyprowadzenia LED0. Po pomyślnych testach moduł można zastosować we własnej aplikacji.

Adam Tatuś, EP

Wykaz elementów:
Rezystory: (5%, SMD0603)
  • R1: 2,2 kΩ 
  • R2, R3, R4: 10 kΩ
Kondensatory:
  • C1: 0,1 μF ceramiczny 10 V (SMD0603)
  • C2: 1 μF ceramiczny 10 V (SMD0603)
Półprzewodniki:
  • LD: dioda led (SMD0603)
  • U1: PCA9624BS (HVQFN24)
Pozostałe:
  • A0, A1, A2, A3: listwa goldpin 1×3, 2,54 mm + zwory
  • I²C1: złącze JST 1 mm
  • I²C: złącze EH kątowe
  • J1: listwa goldpin 1×8, 2,54 mm
  • J2: listwa goldpin 1×9, 2,54 mm
Artykuł ukazał się w
Elektronika Praktyczna
czerwiec 2023
DO POBRANIA
Materiały dodatkowe

Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik kwiecień 2024

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Świat Radio maj - czerwiec 2024

Świat Radio

Magazyn krótkofalowców i amatorów CB

Automatyka, Podzespoły, Aplikacje kwiecień 2024

Automatyka, Podzespoły, Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna kwiecień 2024

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Elektronika dla Wszystkich maj 2024

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów