Ekspander 16×PWM

Ekspander 16×PWM

Moduł rozszerza możliwości Raspberry Pi Zero o dodatkowe szesnaście kanałów PWM z wyjściami typu OD rozdzielczości 8 bitów. Przeznaczony jest głównie do sterowania diodami LED, a podwyższona do 100 mA obciążalność każdego GPIO i sumaryczny prąd zasilania do 1,6 A wraz z możliwością pracy z napięciem do 40 V sprawdzi się przy sterowaniu łańcuchów LED lub dużych wyświetlaczy siedmiosegmentowych. Po spolaryzowaniu wyjść rezystorami, nadaje się także do innych zastosowań PWM.

Podstawowe parametry:
  • 16 kanałów PWM z wyjściami typu OD o rozdzielczości 8 bitów,
  • obciążalność każdego GPIO do 100 mA oraz sumaryczny prąd zasilania aż 1,6 A,
  • możliwość pracy z napięciem do 40 V,
  • komunikacja i sterowanie poprzez interfejs I2C.

Sercem modułu jest układ PCA9622, strukturę wewnętrzną układu przedstawiono na rysunku 1. PCA9622 wchodzi w skład szerokiej rodziny kontrolerów LED I2C firmy NXP. Jest to konfigurowany przez I2C 16-kanałowy generator PWM. Układ ma możliwość zewnętrznego adresowania wyprowadzeniami A0...A6. Dostępne jest 126 adresów I2C, a kilka adresów magistrali jest zarezerwowane dla sterowania globalnego.

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

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 PCA9622, gdyż wszystkie układy, niezależnie od adresu fizycznego reagują na jedną komendę globalną, co znacząco odciąża magistralę I2C od zbędnych transmisji. Możliwe jest także definiowanie pod-adresów grupujących sterowane LED, co ułatwia tworzenie ekranów RGB.

Oprócz indywidualnego sterowania PWM każdego z wyjść, możliwe jest sterowanie grupowe w trybie globalnego PWM (np. dla regulacji jasności wszystkich wyjść LEDx) oraz pracy przerywanej – migania, definiowanej z 8-bitową rozdzielczością i wypełnieniem (np. dla celów sygnalizacyjnych).

Budowa i działanie

Schemat układu został pokazany na rysunku 2. Każde z wyjść może zostać ustawione w stan GND/OD. Wewnętrzny oscylator i programowane dzielniki upraszczają aplikację PCA9622. Układ ma wejście sprzętowe !OE umożliwiające sterowanie buforem wyjściowym podłączone poprzez zworę OE do GPIO4 Raspberry Pi (zwarte wyprowadzenia 2–3). Wejście może zostać podłączone także na stałe do masy (zwarte wyprowadzenia 1–2), aktywując trwale bufory wyjściowe.

Rysunek 2. Schemat ideowy układu

Zwory A0, A1 umożliwiają wybór czterech adresów z zakresu 0x68...0x6C. Złącze I2C jest zgodne z  Grove 3,3 V i ułatwia podłączenie modułów zewnętrznych. Wyjścia PWM pogrupowane są w dwie 8-bitowe sekcje i wyprowadzone na złącza szpilkowe PWM0...7, PWM8...15.

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 3. Drugim sposobem jest adresowanie grupowe wszystkich rejestrów pokazane na rysunku 4.

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

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

Rysunek 5. 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 zestawiono w tabeli 2.

Montaż i uruchomienie

Schemat płytki PCB został pokazany na rysunku 6. Montaż jest klasyczny i nie wymaga opisu, zmontowany układ pokazano na fotografii tytułowej. Poprawnie zmontowany układ nie wymaga uruchamiania. Przed uruchomieniem konieczne jest tylko ustawienie adresu A0, A1, ze zwróceniem uwagi na adresy zarezerwowane i ewentualne kolizje z innymi układami na magistrali I2C.

Rysunek 6. Schemat płytki PCB

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 I2C) oraz maksymalną traconą w układzie moc.

Szybkiego sprawdzenia modułu najłatwiej dokonać korzystając z bibliotek i2c i konsoli. W celu użycia PCA9622 konieczne jest dodanie obsługi magistrali I2C, czy poprzez 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ę I2C poleceniem:

sudo apt-get install i2c-tools

Po zainstalowaniu i restarcie, w pierwszej kolejności sprawdzamy w konsoli prawidłowe działanie I2C, wpisując polecenie:

sudo i2cdetect -y 1
Rysunek 7. Detekcja układu PCA9622 na magistrali I2C

Efekt powinien być podobny do tego z rysunku 7. Powinno pojawić się urządzenie pod adresem ustawionym zworkami A1, A0 – w modelu 0x6B. Jeżeli nie zmienione zostały adresy globalne powinny być także widoczne 0x03, 0x70. Korzystając z polecenia:

sudo i2cset -y 1 Adres_I2C, Adres_Rejestru, Dana_Do_Zapisu

możemy kolejno skonfigurować rejestry PCA w celu sprawdzenia działania układu, pamiętając o ustawieniu programowym lub sprzętowym wejścia !OE w stan niski. Przykładowa konfiguracji rejestrów MODE0 (0x00) ,MODE1 (0x01), GRPPWM (0x12), GRPFREQ (0x13), LEDOUT0 (0x14):

i2cset -y 1 0x60 0x00 0x80
i2cset -y 1 0x60 0x01 0x05
i2cset -y 1 0x60 0x12 0xFF
i2cset -y 1 0x60 0x13 0x00
i2cset -y 1 0x60 0x14 0xFF

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

i2cset -y 1 0x60 0x02 0xAA

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

Adam Tatuś, EP

Wykaz elementów:
Rezystory: (SMD0603) 5%
  • R1, R2: 4,7 kΩ
Kondensatory: (SMD0603)
  • C1: 0,1 μF
  • C2: 10 μF
Półprzewodniki:
  • U1: PCA9222DR (TSSOP32)
Pozostałe:
  • GPIO: złącze IDC40 żeńskie
  • I2C: złącze Grove kątowe (110990037)
  • PWM07, PWM815: złącze szpilkowe 2×5 2,54 mm kątowe
Artykuł ukazał się w
Elektronika Praktyczna
czerwiec 2022
DO POBRANIA
Materiały dodatkowe
Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik grudzień 2024

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Świat Radio listopad - grudzień 2024

Świat Radio

Magazyn krótkofalowców i amatorów CB

Automatyka, Podzespoły, Aplikacje listopad - grudzień 2024

Automatyka, Podzespoły, Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna grudzień 2024

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Elektronika dla Wszystkich styczeń 2025

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów