Sterownik wyświetlacza matrycowego LED

Sterownik wyświetlacza matrycowego LED
Pobierz PDF Download icon

Alternatywą dla popularnych wyświetlaczy LED 7-segmentowych są wyświetlacze LED matrycowe, które pozwalają wyświetlać cyfry, litery oraz proste animacje. Minimoduł z matrycą 8×16 LED sterowaną poprzez I2C doskonale nadaje się do współpracy z Raspberry Pi, Arduino itp. Poprzez odpowiednie łączenie modułów można uzyskać matryce o większej rozdzielczości - 64×8 lub 32×16.

Podstawowe parametry:
  • interfejs I2C,
  • możliwość łączenia modułów dla uzyskania większych matryc,
  • wymaga zasilania z zakresu 3,3…5 V.

Moduł bazuje na specjalizowanym sterowniku LED IS31FL3730 firmy ISSI. Strukturę wewnętrzną układu pokazano na rysunku 1. Układ umożliwia sterowanie jednym lub dwoma wyświetlaczami matrycowymi o organizacji 8×8, 7×9, 6×10, 5×11. Komunikacja z układem odbywa się poprzez interfejs I2C, dostępne są cztery adresy wybieranie wyprowadzeniem AD.
Układ posiada rejestry pośrednie do których zapisywany jest kształt znaku do wyświetlenia.

Rysunek 1. Schemat blokowy IS31FL3730

Także przez ustawienia rejestrów konfigurowana jest wydajność źródeł prądowych zasilających LED, dodatkowo dostępna jest regulacja jasności poprzez PWM. Dzięki rejestrom pośrednim obsługa wyświetlacza nie zajmuje zbyt wiele zasobów, wystarczy zapisać kształt do wyświetlenia, a za multipleksowanie i regulację jasności matrycy odpowiada IS31FL3730. Opcjonalnie jasność świecenia może być modulowana zewnętrznym sygnałem audio, ale funkcja ta nie jest wykorzystana w prezentowanym modelu.

Budowa i działanie

W standardowej aplikacji sterowanie matrycą 8×8 wymaga 16 linii sterujących – ośmiu dla wierszy i ośmiu dla kolumn. W IS31FL3730, dzięki wbudowanej logice, 16 wyprowadzeń wystarcza do sterowania dwoma podłączonymi matrycami. Schemat podłączenia matryc został pokazany na rysunku 2.

Rysunek 2. Sposób podłączenia matryc 8×8

Jeżeli stosujemy niezależne diody LED, to sposób podłączenia nie jest problemem, komplikuje ewentualnie płytkę drukowaną. W przypadku gotowych matryc 8×8 wymaga drobnego zabiegu, polegającego na zastosowaniu odpowiednio połączonych matryc jednej ze wspólną anodą, drugiej ze wspólna katodą. Na szczęście praktycznie wszyscy producenci oferują matryce w obu konfiguracjach połączeń. W modelu zastosowano matryce 20×20 mm KWM-20881AVB/CVB.

Układ nie odbiega od aplikacji z karty katalogowej, a jego schemat pokazuje rysunek 3. Zasilanie i magistrala I2C doprowadzone są do złącza I2CA, drugie złącze I2CB służy do połączenia kolejnego modułu, gdy budujemy wyświetlacz o rozdzielczości większej od 16×8. Zwory adresowe A60..A63 ustalają adres bazowy IS31FL3730, powinna być wlutowana jedna z nich.

Rysunek 3. Schemat ideowy modułu

Domyślnym adresem jest 0x60 z wlutowaną zworą A60.

Montaż i uruchomienie

Układ zmontowany jest na dwustronnej płytce drukowanej, której konstrukcja umożliwia zestawianie w poziomie i w pionie, a występy stabilizują położenia płytek. Wlutowane kołki M2 służą do montażu mechanicznego na ramce nośnej. Rozmieszczenie elementów pokazano na rysunku 4. Zmontowany moduł, od strony elementów pokazuje fotografia 1.

Rysunek 4. Schemat płytki PCB wraz z rozmieszczeniem elementów a) strona TOP, b) strona BOTTOM
Fotografia 1. Zmontowany moduł, widok od strony elementów

Konfiguracja układu odbywa się przez rejestry, których adresację i funkcję zestawiono w tabeli 1.

Pierwszym rejestrem który należy zapisać jest Configuration Register (0x00), znaczenie bitów rejestru jest następujące:

  • D7 (SSD): 0 – praca, 1 – programowe wyłączenie (shutdown),
  • D6, D5: bez znaczenia,
  • D4, D3 (DM): konfiguracja matryc, 00 – tylko matryca 1, 01 – tylko matryca 2, 11 – obie,
  • D2 (A_EN): 0 – sterowanie jasnością z rejestru Lighting Effect (0x0D), 1 – sterowanie jasnością sygnałem z wejścia audio,
  • D1, D0 (ADM): typ matrycy, 00 – 8×8, 01 – 7×9, 10 – 6×10, 11 – 5×11.
  • Dla modelu konfiguracja wynosi 0x18, co odpowiada dwóm matrycom 8×8 i sterowaniu jasnością z rejestru 0x0D.

Rejestry danych Matrix1/2 Data Register (0x01...0x0B, 0x0E...0x18) zawierają wzór znaku do wyświetlenia, stan 0 wygasza LED, stan 1 zapala LED w matrycy, najmłodszy bit odpowiada pikselowi w górnym lewym rogu matryc. Aktywne są tylko rejestry wynikające z konfiguracji matrycy, dla matrycy 8×8 zapisujemy pierwsze i drugie osiem rejestrów 0x01...0x08 i 0x0E...0x15. Po każdorazowej zmianie zawartości rejestrów stanu LED należy zapisać do rejestru odświeżania (0x0C) wartość 0x00, co zaktualizuje wyświetlany wzór.

Rejestr efektów świetlnych (0x0D) odpowiada za regulację wzmocnienia toru audio (nieużywana w modelu) i ustawienie prądu źródeł dla każdego rzędu, znaczenie bitów jest następujące:

  • D7: bez znaczenia,
  • D6...D4 (AGS): wzmocnienie audio 000: 0 dB, 110: +18 dB, co 3dB, 111: –6 dB,
  • D3...D0 (CS): prąd źródeł, 0000 – 40 mA, 0111 – 75 mA, 1000 – 5 mA, 1110 – 35 mA, co 5 mA,

Dla modelu konfiguracja wynosi 0x09, co odpowiada dwóm matrycom 8×8 i sterowaniu jasnością z rejestru 0x0D, co odpowiada prądowi źródeł 10 mA.

Rejestr regulacji jasności PWM (0x19), umożliwia regulację jasności matryc w 128 krokach, znaczenie bitów jest następujące:

  • D7 (krok 128): 1 – ustawia maksymalny PWM,
  • D6...D0: jeżeli D7=0, D6...D0 ustawiają krok PWM w zakresie 127...0, przy maksymalnej jasności określonej w rejestrze 0x0D.

Zapis do rejestru Reset (0xFF) ustawia domyślne wartości wszystkich rejestrów konfiguracyjnych. Układ nie przewiduje trybu odczytu rejestrów.
Do szybkiego sprawdzenia działania modułu przygotowałem prosty skrypt FL3730x60.sh dla Raspberry Pi, obsługujący moduł ze skonfigurowanym adresem bazowym 0x60 (wlutowana zwora A60) –  listing 1.

Listing 1. Skrypt do szybkiego sprawdzenia modułu dołączonego do RPi

#!/bin/bash
echo ‘IS31FL3730 dual 8x Led Matrix Example’
i2cset -y 1 0x60 0xFF 0x00
i2cset -y 1 0x60 0x00 0x18
i2cset -y 1 0x60 0x0D 0x09
i2cset -y 1 0x60 0x19 0x0F
i2cset -y 1 0x60 0x01 0x7E
i2cset -y 1 0x60 0x02 0x81
i2cset -y 1 0x60 0x03 0xB5
i2cset -y 1 0x60 0x04 0xA1
i2cset -y 1 0x60 0x05 0xA1
i2cset -y 1 0x60 0x06 0xB5
i2cset -y 1 0x60 0x07 0x81
i2cset -y 1 0x60 0x08 0x7E
i2cset -y 1 0x60 0x0c 0x00
i2cset -y 1 0x60 0x0E 0x7E
i2cset -y 1 0x60 0x0F 0x81
i2cset -y 1 0x60 0x10 0xB5
i2cset -y 1 0x60 0x11 0x91
i2cset -y 1 0x60 0x12 0x91
i2cset -y 1 0x60 0x13 0xB5
i2cset -y 1 0x60 0x14 0x81
i2cset -y 1 0x60 0x15 0x7E
i2cset -y 1 0x60 0x0c 0x00

Moduł wymaga zasilania z zakresu 3,3...5 V, pobór prądu zależy od typu zastosowanej matrycy oraz konfiguracji układu IS37Fl3730.

Adam Tatuś
adam.tatus@ep.com.pl

Wykaz elementów:
Rezystory:
  • A60, A61, A62, A63: Zwora 0 Ω SMD0402
  • R1, R2: 4,7 kΩ SMD0603
Kondensatory:
  • C1: 100 nF SMD0603
  • CE1: 22 μF/10 V tantalowy SMDA
Półprzewodniki:
  • DISP1: matryca 8×8 anoda KWM-2881AVB
  • DISP2: matryca 8x8 katoda KWM-2881CVB
  • U1: IS31FL3730 QFN24
Inne:
  • I2CA: złącze PH 4 pin 2 mm
  • MH1, MH2: dystans M2 SMD (dobrać)
 
Artykuł ukazał się w
Elektronika Praktyczna
lipiec 2020
DO POBRANIA
Pobierz PDF Download icon
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 grudzień 2024

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów