Sterownik 18 LED dla Pi Zero

Sterownik 18 LED dla Pi Zero
Pobierz PDF Download icon

Czasem, oprócz wyświetlania informacji na ekranie LCD, konieczna jest sygnalizacja stanu na diodach LED. Gdy jest ich więcej lub są to diody RBG warto zastosować specjalizowany układ sterujący, ułatwiający wykonanie zadania i dodatkowo pozwalający na płynną regulację jasności każdej z nich.

Podstawowe parametry:
  • 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.

Rysunek 1. Schemat blokowy IS31FL3218 (za notą ISSI)

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.

Rysunek 2. Schemat ideowy modułu

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.

Rysunek 3. Rozmieszczenie elementów

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.

Listing 1. Treść skryptu testującego

#!/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

Wykaz elementów:
Rezystory:
  • 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%)
Kondensatory:
  • C1…C3: 0,1 µF SMD805
  • CE1: 47 µF/10 V SMD3528 tantalowy
Półprzewodniki:
  • LD: dioda LED SMD0805
  • LDA, LDB, LDC: złącze szpilkowe 2×8 2,54 mm
  • U1: PCA9306DCT (SSOP8_065)
  • U2: IS31FL3218-GRLS (SOP24)
Inne:
  • GPIO: złącze IDC 2×20 pin żeńskie
Artykuł ukazał się w
Elektronika Praktyczna
luty 2021
DO POBRANIA
Pobierz PDF Download icon
Materiały dodatkowe

Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik marzec 2024

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Świat Radio marzec - kwiecień 2024

Świat Radio

Magazyn krótkofalowców i amatorów CB

Automatyka, Podzespoły, Aplikacje marzec 2024

Automatyka, Podzespoły, Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna marzec 2024

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Elektronika dla Wszystkich kwiecień 2024

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów