Pomysłowe diody LED RGB

Pomysłowe diody LED RGB
Pobierz PDF Download icon

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.

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.

Artykuł ukazał się w
Elektronika Praktyczna
grudzień 2015
DO POBRANIA
Pobierz PDF Download icon

Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik kwiecień 2024

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Świat Radio maj - czerwiec 2024

Świat Radio

Magazyn krótkofalowców i amatorów CB

Automatyka, Podzespoły, Aplikacje kwiecień 2024

Automatyka, Podzespoły, Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna kwiecień 2024

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Elektronika dla Wszystkich maj 2024

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów