- 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.
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.
Drugim sposobem jest adresowanie grupowe wszystkich rejestrów pokazane na rysunku 3.
Ostatnim sposobem jest adresowanie grupowe rejestrów PWM po wcześniejszej konfiguracji układu zgodnie z rysunkiem 4.
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.
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.
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:
Po ponownym uruchomieniu należy pobrać narzędzia odpowiadające za obsługę I²C:
Po zainstalowaniu i restarcie, w pierwszej kolejności sprawdzamy w konsoli prawidłowe działanie I²C komendą:
Efekt powinien być podobny to tego z rysunku 7 – powinno pojawić się urządzenie pod adresem 0x60 (lub innym ustawionym zworkami A0...A3).
Jeżeli nie zostały zmienione adresy globalne, to powinny być także widoczne 0x03, 0x70. Korzystając z polecenia:
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 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):
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
- R1: 2,2 kΩ
- R2, R3, R4: 10 kΩ
- C1: 0,1 μF ceramiczny 10 V (SMD0603)
- C2: 1 μF ceramiczny 10 V (SMD0603)
- LD: dioda led (SMD0603)
- U1: PCA9624BS (HVQFN24)
- 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