wersja mobilna | kontakt z nami

Pomysłowe diody LED RGB

Numer: Grudzień/2015

Postęp techniczny daje producentom komponentów elektronicznych zaskakujące możliwości. Współcześnie nikogo już nie dziwi, że dioda LED może świecić w dowolnym kolorze - światło emitowane przez różnobarwne struktury umieszczone we wspólnej obudowie miesza się, umożliwiając uzyskanie dowolnej barwy świetlnej. Jednak takie typowe diody wielokolorowe są bardzo kłopotliwe w użyciu, ponieważ wymagają wielu połączeń - o ile katoda lub anoda diod może być wspólna, o tyle połączenia elektrod o przeciwnej polaryzacji muszą być rozdzielone, co wymusza konieczność doprowadzenia do każdej diody co najmniej 4 ścieżek. Nie ma problemu, jeśli to tylko pojedyncza dioda lub linijka, ale co, jeśli chcemy zbudować ekran LED? Pomyślmy też o multipleksowaniu wyświetlania i połączeniach z kontrolerem LED, o konieczności modulowania natężenia światła oraz zasilania całości z jakichś źródeł prądowych i innych problemach natury technicznej, które trzeba będzie rozwiązać. Te potrzeby zostały zauważone przez firmę WorldSemi, która wprowadziła do programu produkcji pewną specjalną grupę produktów.

Pobierz PDF

Propozycja firmy WorldSemi jest genialna w swojej prostocie. Ktoś wpadł na pomysł, aby skorzystać z dobrodziejstw współczesnej technologii wytwarzania urządzeń półprzewodnikowych i w niewielkiej obudowie diody (SMD 5050) zamknął struktury R, G, B oraz kontroler z interfejsem szeregowym. Do takiej diody wystarczy doprowadzić zasilanie i sygnały interfejsu cyfrowego.

Rysunek 1. Sposób łączenia diod WorldSemi w łańcuchy (źródło: dokumentacja diody LED WS2812B WorldSemi)

Po przesłaniu 24-bitowego słowa zawierającego składowe RGB wbudowany kontroler "zajmuje się" wyświetlaniem koloru. Nie jest to zadanie trywialne, ponieważ dane RGB trzeba przetworzyć na natężenie światła odpowiednich struktur diody. Każdy kolor składowy jest kodowany za pomocą 8 bitów, co oznacza, że dioda ma możliwość wyświetlenia aż 16777216 barw, co zwykło się oznaczać w skrócie 16,7 mln kolorów.

Koncepcja wbudowania kontrolera i źródła prądowego w strukturę diody LED jest genialna. Konstruktor, który zwróci uwagę na taką diodę, będzie jednak chciał nie tyle użyć jej w roli pojedynczego źródła światła, ile połączyć takie diody w zespół, mający możliwość wyświetlania informacji lub obrazów.

Do takiej aplikacji niezbędny jest mechanizm, który umożliwi zmianę koloru świecenia pojedynczego piksela obrazu. Typowo diody łączy się w matryce i steruje nimi na przecięciu wierszy i kolumn, jeśli jednak w obudowie diody umieściliśmy kontroler, to "klasyczne" sterowanie nie ma sensu. Przecież naszym zamiarem było uniknięcie wykonywania nadmiernej liczby połączeń.

Pomysł na rozwiązanie problemu łączenia diod w zespoły jest równie genialny, jak idea zespolenia kontrolera z diodą. Każda dioda ma wbudowany synchroniczny rejestr przesuwny z szeregowym wejściem i szeregowym wyjściem. Ten rejestr ma pojemność 24 bitów, a jeśli przekroczymy jego pojemność, to dane zostaną przez sygnał zegarowy "wypchnięte" na szeregowe wyjście.

Dzięki temu diody można łączyć ze sobą - wyjście do wejścia, budując bardzo długie łańcuchy (rysunek 1). Ograniczenia długości takiego łańcucha wynikają głównie z ograniczeń aplikacji - napiszemy o nich w dalszej części tekstu. Teraz wystarczy nam wiedza o tym, że każda dioda ma 4 wyprowadzenia: dwa służą do zasilania, jedno to wejście danych i jedno wyjście. No dobrze, ale jak wpisywać dane? Przecież jest wejście i wyjście, ale nie ma sygnału zegarowego!

Powiedzmy sobie, że "na szczęście" nie ma sygnału zegarowego. Wyobraźmy sobie, że musimy prowadzić połączenia od diody do diody i równolegle dołączać je do szyny zegara. Jeśli nasz ekran będzie miał przeciętną rozdzielczość 64×64 piksele, to łącznie użyjemy 4096 diod LED.

Jak podaje karta katalogowa, pojemność każdego wejścia wynosi 15 pF. Obliczmy pojemność szyny zegarowej, którą przyjdzie nam sterować - 4096×15 pF=61440 pF, to jest ponad 61 nF! A dodajmy do tego jeszcze pojemności montażowe... Każdy, kto kiedykolwiek miał do czynienia z driverem zdolnym do naładowania/rozładowania takiej pojemności, wie, jak trudne to zadanie.

Zauważymy, że generujemy sygnał zegarowy, a więc musi on mieć strome zbocza i kształt chociażby zbliżony do prostokątnego. Jeśli założymy, że nasz ekran będzie odświeżany z przeciętną częstotliwością 30 ramek/sekundę, daje to 30 (ramek)×4096 (diod)=122880 kHz. A więc nasz generator sygnału zegarowego musiałby ładować i rozładowywać pojemność ponad 61 nF z częstotliwością blisko 123 kHz. Nie jest to zadanie trywialne do realizacji układowej.

Inżynierowie z WorldSemi też mieli tę świadomość i wpadli na kolejny genialny pomysł. Otóż diody są sterowane za pomocą specjalnego protokołu, zbliżonego w warstwie łącza danych do dobrze znanego 1-Wire (łatwiejszy w obsłudze, bo nie ma obaw o zasilanie diody) i dlatego nawet przeciętny programista nie będzie miał żadnego problemu z jego implementacją.

Co więcej, dane "przepychane" przez rejestr diody i udostępniane na jej wyjściu są regenerowane cyfrowo, więc tak naprawdę konstruktor musi martwić się jedynie o to, aby wysterować pierwszą diodę, natomiast na jej wyjściu pojawi się zregenerowany sygnał wejściowy, który wysteruje kolejną i uwolni konstruktora od koszmaru dbania o obwiednię sygnału na końcu szeregu diod.

Rysunek 2. Kodowanie bitów danych (źródło: dokumentacja diody LED WS2812B WorldSemi)

Szczegóły kodowania bitów pokazano na zaczerpniętym z dokumentacji diody WS2812 rysunku 2. Podobnie jak w protokole 1-Wire, bity są kodowane za pomocą zależności czasowych. Aby przesłać logiczną "1", ustawiamy wejście danych przez 0,4 µs i zerujemy je przez 0,85 µs.

Aby przesłać logiczne "0", ustawiamy wejście danych przez 0,85 µs i zerujemy je przez 0,4 µs. W związku z tym, że chcemy naszych diod użyć np. do zbudowania ogromnego telebimu, margines błędu przy odmierzeniu czasu trwania poziomu logicznego nie może być zbyt duży i tu wynosi ±150 ns.

Dlatego mikrokontroler wysyłający dane musi mieć częstotliwość taktowania stabilizowaną za pomocą rezonatora kwarcowego, a do odmierzania czasu trwania poszczególnych poziomów logicznych przypuszczalnie będziemy musieli użyć timera lub sterowanego nim systemu przerwań. Nie jest to jednak problem, ponieważ jest to rozwiązanie typowe, niedrogie i stosowane zawsze wtedy, gdy zależy nam na precyzyjnym odmierzaniu czasu.

No dobrze, ale czy "przepychanie" danych przez diodę nie powoduje migotania jej światła? Wbudowane w diodę rejestry przypominają dobrze znany 74595. Był on chętnie stosowany w układach wyświetlania, ponieważ jego rejestr szeregowy miał na wyjściach równoległych przerzutniki typu Latch (zatrzask).

Podczas transmisji danych wyjścia pozostawały w poprzednim stanie do momentu, aż odrębny impuls zegarowy powodował ich aktualizację. Tę samą koncepcję przyjęli inżynierowie z firmy WorldSemi - aktualizację poziomu składowych RGB powoduje specjalny impuls Reset. Dopóki nie zostanie on wysłany przez system nadrzędny, dopóty stan diody nie zmienia się, chociaż jej rejestr przenosi do wyjścia zmieniające się dane.

Maksymalna częstotliwość sygnału zegarowego, a właściwie sygnału danych, wynika z podanych zależności czasowych dla logicznego 0 i logicznej 1, i wynosi 1/(0,4 µs+0,85 µs)=800 kHz. Jeśli założymy, że będziemy odświeżali obraz z częstotliwością 30 Hz, a do każdej diody musimy przesłać 24 bity danych, to po uwzględnieniu czasu trwania impulsu Reset możemy wyliczyć, że łańcuch może mieć łączną długość ponad 1100 diod LED. W ten sposób można zbudować matrycę (ekran) RGB o rozdzielczości 32×32 piksele sterowany za pomocą pojedynczego wyprowadzenia mikrokontrolera!

Sposób sterowania diodami połączonymi w łańcuch jest bardzo dobrze opisany w nocie aplikacyjnej AN1606 udostępnionej przez firmę Microchip (http://goo.gl/sXPU2s). Oprogramowanie napisano w języku C, więc nie będzie trudności ze zrozumieniem, jak działa i ewentualnym przeniesieniem aplikacji na inny model mikrokontrolera.

To nie jest ostatnie słowo

Pomysłowe diody LED RGB opisane w artykule nie są jedynym produktem firmy WorldSemi. Oprócz nich firma wytwarza programowalne taśmy LED RGB oraz moduły złożone z kilku diod. Do ich budowy zastosowano takie same diody, jak opisywana w artykule, przykładowa WS2812, więc i metoda programowania będzie identyczna.

Wydaje mi się jednak, że z punktu widzenia inżyniera-konstruktora, którego zadaniem jest zbudowanie aplikacji, najbardziej interesujące są właśnie diody LED. Moduły lub taśmy bardziej przydadzą się integratorom systemów niż konstruktorowi.

Praktycznie każdą diodę WorldSemi można nabyć w dwóch wariantach wykonania: w obudowie białej (oznaczonej literą "S") lub czarnej (oznaczonej literą "B"). Te pierwsze przydają się zwłaszcza do zamontowania w systemach oświetlenia LED, w których zwykle diody umieszczane są na białym podłożu.

Te drugie są kapitalne do budowania wyświetlaczy informacyjnych, ekranów i innych, ponieważ płytkę drukowaną takiego urządzenia można pokryć czarną maską i na niej zamontować czarne diody. Po zamontowaniu takiej płytki za maskującym ją filtrem grafitowym (przyciemniana szyba) diody są praktycznie niewidoczne - obserwujący może zobaczyć jedynie wyświetlane przez nie obrazy lub znaki.

Transfer Multisort Elektronik Sp. z o.o.

Pozostałe artykuły

LTC4123 - miniaturowa ładowarka bezprzewodowa

Numer: Marzec/2017

Pomimo rozwoju tej techniki, ładowanie bezprzewodowe raczej z dużą trudnością adaptuje się w sprzęcie powszechnego użytku. Zbyt długie prace nad standardem, obecność kilku konkurencyjnych rozwiązań nie ułatwiają wyboru i ?doposażenia? własnych konstrukcji w funkcje ładowania bezprzewodowego. W artykule przedstawiono rozwiązanie proponowane przez Linear Technology służące do bezprzewodowego ładowania akumulatora NiMH o niewielkiej ...

Najnowsze osiągnięcia w dziedzinie przemysłowych wyświetlaczy LCD

Numer: Marzec/2016

Od dłuższego czasu obserwujemy bardzo szybki postęp w branży dużych wyświetlaczy ciekłokrystalicznych. Dotyczy on nie tylko telewizorów - nowości technologiczne z rynku konsumenckiego szybko przenoszone są do sektora przemysłowego. Pomimo znacznie ostrzejszych wymagań odnośnie do wytrzymałości urządzeń przemysłowych, wiodącym na rynku firmom udaje się wprowadzać do sprzedaży produkty o zaskakująco dobrych parametrach. Przegląd ...

MAXimator - tani zestaw startowy z Altera FPGA z rodziny MAX10

Numer: Marzec/2016

Nowoczesna elektronika nie istnieje bez układów FPGA, czego jednak nie widać na co dzień, zwłaszcza w "zarduinizowanym" świecie mikrokontrolerów. Jedną z przyczyn słabej percepcji technologii FPGA są relatywnie wysokie ceny zestawów startowych, które zniechęcają wielu początkujących. Mamy przyjemność poinformować, że sytuacja uległa zmianie i to dzięki polskiej firmie KAMAMI, której biuro konstrukcyjne opracowało i rozpoczęło ...

D32PRO - skalowalny procesor 32-bitowy

Numer: Marzec/2016

Jakiś czas temu informowaliśmy o polskim procesorze z rdzeniem 32-bitowym D32PRO, a teraz dzięki uprzejmości firmy Digital Core Design z Bytomia, możemy podać więcej szczegółów związanych z jego architekturą i listą rozkazów. Firma DCD zajmuje się projektowaniem IP Core od 1999 roku, zatem można powiedzieć, że jej najnowsze dzieło - procesor D32PRO - jest sumą doświadczeń zbieranych przez inżynierów firmy na przestrzeni ...

Renesas Synergy, czyli jak rozwijać produkty w świecie IoT

Numer: Marzec/2016

Przemysł elektroniczny wygląda obecnie zupełnie inaczej niż jeszcze 5 lat temu. Trudno precyzyjnie wskazać moment, w którym zaszła ta zmiana, ale można śmiało powiedzieć, że elektronika stała się bardzo powszechna i modna. Nie oznacza to niestety, że lutowanie i projektowanie obwodów stało się popularne, lecz że zaczęła podlegać prawom panującym w modzie. Produkt wprowadzony w ubiegłym sezonie szybko staje się passé, ...

Mobilna
Elektronika
Praktyczna

Elektronika Praktyczna

Marzec 2017

PrenumerataePrenumerataKup w kiosku wysyłkowym

Elektronika Praktyczna Plus

lipiec - grudzień 2012

Kup w kiosku wysyłkowym