- umożliwia sterowanie do 18 diod w trybie prądowym,
- indywidualną płynną regulacją jasności metodą PWM,
- sterowanie poprzez magistralę I2C.
Zaprezentowany moduł bazuje na sterowniku diod LED typu IS31FL3218 firmy ISSI. Umożliwia on sterowanie do 18 diod w trybie prądowym, z indywidualną płynną regulacją jasności metodą PWM. Prąd wszystkich LED określany jest wartością tylko jednego rezystora. Struktura wewnętrzna układu została pokazana na rysunku 1.
Komunikacja z układem odbywa się poprzez interfejs I2C pod adresem 0x54. Układ posiada rejestry pośrednie, do których zapisywana jest indywidualna jasność LED oraz rejestr odświeżania, co umożliwia jednoczesne zmiany jasności, bez chwilowych wyświetleń fałszywych kombinacji kolorów przy współpracy z diodami RGB.
Budowa i działanie
Schemat modułu został pokazany na rysunku 2.
Układ U1 typu PCA9306 pełni funkcję konwertera poziomów logicznych 3,3 V/5 V dla magistrali I2C. Układ U2 typu IS31FL3218 steruje 18 diodami LED (w przypadku pasków lub diod RGB muszą mieć wspólne anody). Prąd świecenia jest ustalany poprzez wartość R1 i wynosi w przybliżeniu 76/R1. W modelu został ustawiony na wartość ok. 20 mA, a maksymalnie dla R1=2 kΩ, wynosi 38 mA dla każdej z diod LED.
Wyjścia OUT1...OUT18 pogrupowane są po 6 sygnałów (po 2 sekcje RGB) i wyprowadzone na trzy złącza LDA, LDB, LDC wraz z zasilaniem +5 V i masą. Zasilanie układu pobierane jest ze złącza GPIO Raspberry PI, co należy uwzględnić przy doborze zasilacza. Podczas pracy z wszystkimi 18 LED układ U2 może się nagrzewać, warto dokleić do niego niewielki radiator przeznaczony do obudowy SO.
Montaż i uruchomienie
Moduł został zmontowany na dwustronnej płytce drukowanej, której schemat wraz z rozmieszczeniem elementów został pokazany na rysunku 3.
Konfiguracja układu odbywa się poprzez rejestry, których adresację i funkcje zestawiono w tabeli 1.
Pierwszym rejestrem który należy zapisać jest Shutdown Reg (0x00), znaczenie bitów rejestru jest następujące: D7...D1=0, bez znaczenia; D0: SSD=1 praca, SSD=0 programowe wyłączenie (shutdown).
Rejestry PWM (0x01-0x12) ustalają indywidualną wartość PWM (256 kroków) dla każdego wyjścia OUT1...OUT18.
Rejestr LED Control 1 (0x13) aktywuje wyjścia OUT1...OUT6, znaczenie bitów:
D7, D6=0, bez znaczenia; D5...D0: wyłączenie wyjścia LED[6...1]=0, załączenie wyjścia LED[6..1]=1.
Rejestr LED Control 2 (0x14) aktywuje wyjścia OUT7...OUT12, znaczenie bitów:
D7, D6=0, bez znaczenia; D5...D0: wyłączenie wyjścia LED[12..7]=0, załączenie wyjścia LED[12..7]=1.
Rejestr LED Control 3 (0x15) aktywuje wyjścia OUT13...OUT18, znaczenie bitów:
D7, D6=0, bez znaczenia; D5...D0: wyłączenie wyjścia LED[18...13]=0, załączenie wyjścia LED[18...13]=1.
Rejestr Update (0x16), zapis dowolnej wartości aktualizuje stan wyjść OUT1...18 zgodnie z wartościami zapisanymi w rejestrach 0x01...0x15.
Rejestr Reset (0x17), przywraca wartości domyślne we wszystkich rejestrach układu.
#!/bin/bash
echo ‘IS31FL3218 18x Led Example’
sleep 1
echo ‘IS31FL3218 Software on’
i2cset -y 1 0x54 0x00 0x01
sleep 1
echo ‘IS31FL3218 PWM Set’
i2cset -y 1 0x54 0x01 0xFF
i2cset -y 1 0x54 0x02 0x7F
i2cset -y 1 0x54 0x03 0x3F
i2cset -y 1 0x54 0x04 0x7F
i2cset -y 1 0x54 0x05 0x1F
i2cset -y 1 0x54 0x06 0x00
i2cset -y 1 0x54 0x07 0x2F
i2cset -y 1 0x54 0x08 0x4F
i2cset -y 1 0x54 0x09 0x8F
i2cset -y 1 0x54 0x0A 0xEF
i2cset -y 1 0x54 0x0B 0x11
i2cset -y 1 0x54 0x0C 0x22
i2cset -y 1 0x54 0x0D 0x33
i2cset -y 1 0x54 0x0E 0x44
i2cset -y 1 0x54 0x0F 0x55
i2cset -y 1 0x54 0x10 0x66
i2cset -y 1 0x54 0x11 0x77
i2cset -y 1 0x54 0x12 0x88
sleep 1
echo ‘IS31FL3218 LED Output Set’
i2cset -y 1 0x54 0x13 0x3F
i2cset -y 1 0x54 0x14 0x3F
i2cset -y 1 0x54 0x15 0x3F
sleep 1
echo ‘IS31FL3218 LED Update’
i2cset -y 1 0x54 0x16 0xFF
sleep 5
echo ‘IS31FL32180 Reset’
i2cset -y 1 0x54 0x17 0xFF
sleep 1
Dla szybkiego sprawdzenia działania modułu można użyć biblioteki i2ctools. Układ nie obsługuje wywołania ogólnego, więc nie jest możliwa detekcja poleceniem i2cdetect. Do wyjść układu należy podłączyć diody LED (anody do V50). Prosty skrypt FL3218.sh dla Raspberry Pi, ustawi różną jasność świecenia każdej z diod LED. Treść skryptu została pokazana na listingu 1.
Adam Tatuś, EP
- R1, R5, R6: 3,3 kΩ (SMD805 1%)
- R2: 200 kΩ (SMD805 1%)
- R3, R4: 2,2 kΩ (SMD805 1%)
- R7: 2,2 kΩ (SMD805 1%)
- C1…C3: 0,1 µF SMD805
- CE1: 47 µF/10 V SMD3528 tantalowy
- LD: dioda LED SMD0805
- LDA, LDB, LDC: złącze szpilkowe 2×8 2,54 mm
- U1: PCA9306DCT (SSOP8_065)
- U2: IS31FL3218-GRLS (SOP24)
- GPIO: złącze IDC 2×20 pin żeńskie