WS2801S – stałoprądowy 3-kanałowy sterownik LED z wyjściami PWM.

4.5/5 - (2 votes)

WS2801S aplikacja Stosując układ WS2801S, zaawansowana obsługa trzypunktowego źródła światła LED, bądź diod RGB przestaje być wyzwaniem, a zasoby sprzętowe µC można przeznaczyć do oprogramowania innych funkcjonalności. Sam układ może pracować również jako programowalne źródło trójkanałowego przebiegu PWM.
IC w swojej strukturze zawiera szeregowe rejestry przesuwne, zatrzaski danych, rejestry wyjściowe, generator napięcia odniesienia (typu bandgap – niezależny termicznie), wewnętrzny oscylator i programowalne sterowniki stałoprądowe na wyjściach sterujących LED.

Kanały sterujące układu WS2801S są wyjściami, z których każde może dostarczać stały prąd o natężeniu 30mA. Układ opracowano tak by można go było łączyć kaskadowo z następnymi, a dane będą przekazywane szeregowo dzięki wyjściowym buforom. Funkcja odwrotnej polaryzacji wyjść sterujących opracowana została do sterowania diodami LED dużej mocy. A dwu przewodowy interfejs IO oferuje niskie przekazywanie zakłóceń EMI, bardzo silną zdolność zwalczania zakłóceń i wsparcie dla standardu hot-swap.

Cechy wyróżniające układ WS2801S – według producenta.

• Model No.:WS2801S (SOP14 Package),
• Supports both constant voltage and constant current drive mode, (dwa tryby sterowania napięciowy i prądowy),
• 3-Channel Constant Current LED Driver with programmable PWM Outputs,
• Wide-range constant output current range 5~150mA,
• PWM free-run capability (refresh rate 2.5KHz),
• Build in buffers to cascading data and clock to the next driver,
• Maximum input clock frequency 10MHz.
• Output polarity reverse function
• Support hot swap
• Power supply voltage 3.3~5.5V

Zastosowania z wyższym napięciem zasilania.

Ponieważ układ WS2801S podczas normalnej pracy zużywa tylko 1,5mA prądu, producent dopuszcza stosowanie odcinającej diody zenera w celu dostosowania poziomu napięcia. Przy dobieraniu opornika ograniczającego prąd jego wartość należy co najmniej dwukrotnie przewartościować. Dla przykładu gdy napięcie zasilania wynosi VDD=12V, rezystor o wartości RS=2kΩ będzie dobrze funkcjonował. Kondensator C0 jest niezbędny dla filtrowania napięcia zasilającego układ WS2801. W większości przypadków wystarczający będzie kondensator o wartości C0=1µF. Tym sposobem, gdyby drivery miały być rozproszone na dużej odległości, powinny funkcjonować prawidłowo. Oczywiście w zastosowaniach mniej rozległych można zastosować niedrogi stabilizator liniowy.

Tryb sterownika stało prądowego.

Stopień wyjściowy sterownika WS2801 został wyposażony w wysokiej jakości OpAmp, sterujący klucz wyjściowy M0, który to z kolei stanowi sterownik stało prądowy dla podłączonego szeregu diod LED.
Prąd wyjściowy każdego kanału można ustawić poprzez dobranie odpowiedniego rezystora w obwodzie zwrotnym wzmacniacza, podłączanego przy wyprowadzeniu  R/G/BFB (current feed back pin).

Prąd wyjściowy wyznacza się za wzoru:
IXOUT=VREF/RXFB,
gdzie FREF=0,6V, a RXFB to wartość rezystora podłączonego do pina R/G/BFB.

Dla przykładu RXFB=30Ω ograniczy prąd do IXOUT=20mA.
Aby zapewnić normalne funkcjonowanie dla sterownika stałego prądu, napięcie na R/G/BOUT powinno być ustawione w zakresie 1 – 1,5V. Wtedy sterownik może wyprowadzać wysoce precyzyjnie prąd w całym zakresie pracy, i tym samym nie będzie rozpraszane zbyt dużo mocy na układzie WS2801.

Tryb sterownika stało napięciowego.

WS2801S jako driver uniwersalny posiada też tryb sterowania stało napięciowy, kompatybilny z układem ZQL9712. W tym trybie sterownik może dostarczyć do 50mA prądu na każdym kanale. Aby tak było wyprowadzenie POL musi być wysterowane stanem HIGH lub pozostać nieużywane (floating). Natomiast piny R/G/BFB należy połączyć bezpośrednio do potencjału GND. W tym trybie prąd diody należy ustawić opornikiem RL z wzoru:

RL=(VDD-VLED-VOUT)/ILED,
gdzie RL jest rezystancją ograniczającą prąd diody LED, VDD to wartość napięcia zasilania LED, VLED oznacza spadek napięcia przewodzenia diody, VOUT to napięcie nasycenia na wyjściu sterownika (0,2~0,4V), ILED to prąd diody LED, zwyczajowo ILED≤20mA.

Tryb sterownika stało napięciowego z zewnętrznym przełączaniem.

Driver zapewnia również możliwość sterowania stałym napięciem z zewnętrznym kluczem, do zastosowania przy diodach o dużej jasności – HB LED. W ten sposób uzyskać można 256 stopni jasności świecenia. Aby korzystać z tego trybu wyprowadzenie POL musi być podłączone do potencjału GND. Właściwości tego trybu z powodzeniem znajdą zastosowanie gdy napięcie zasilania LED będzie wysokie, a prąd ILED>300mA.
Jego zasada działania zrealizowana jest za pomocą zewnętrznego tranzystora mocy NPN, sterującego aktywnością diod LED. Prąd LED może być regulowany przez zewnętrzny rezystor ograniczający prąd RL. Jego wartość RL może być wyliczona z następującego równania:

RL=(VDD-VLED-VCE)/ILED,
gdzie: zewnętrzny tranzystor NPN działa w regionie nasycenia i VCE jest napięciem nasycenia, VCE = 0.5 ~ 0.8V, RB rezystor bazowy = 2 ~ 5kΩ.

Tryb sterownika stało prądowego z zewnętrznym przełączaniem.

W tym trybie sterowania układ WS2801 umożliwia podłączenie LED kaskadowo w ekstremalnie niskich kosztach. W tym trybie wyprowadzenie POL  musi być wysterowane stanem HIGH lub pozostać nieużywane (floating).
Tryb ten może być stosowany do zasilania łańcuchów diod LED pod wysokim napięciem wejściowym (VIN> 6V), maksymalne napięcie aplikacji określone jest przez zewnętrzny tranzystor mocy NPN. Prąd przepływający przez kolektor tranzystora NPN obliczymy z wzoru:

INPNC = IXOUT×(β/β+1)

Prąd przepływający przez bazę tranzystora NPN obliczymy z wzoru:

INPNB = IXOUT×(1/β+1)

Podczas normalnej pracy, aby uniknąć zbyt dużego rozpraszania energii w układzie WS2801, napięcia na R/G/BOUT powinny być ustalone na około 1,2V; wartość RB można otrzymać za pomocą następującego równania:

RB=(VDD-VXOUT)/INPNB

Przygotowanie i format danych dla układu.

W skutek utrzymania stan niskiego na pinie CLK ponad 500µs dokonany zostanie reset rejestru stanu wewnętrznego WS2801,  i od tej chwili, przesłane dane skali jasności zostaną zatrzaśnięte w rejestrze przesuwnym. Teraz WS2801 jest gotowy do transportu kolejnych danych skali jasności. Gdy WS2801 otrzyma łącznie 24 narastające zbocza na linii zegarowej, przechodzi w tryb przekaźnika, który przesyła sygnały wejściowe otrzymane na liniach CKI  i SDI z bardzo niskimi zniekształceniami (100pS typowo) i bardzo niskimi opóźnieniami (8ns typowo). Format danych i schemat czasowy można zobaczyć na rysunku obok.
Ramka danych skali jasności składa się z 3 słów, każde słowo danych składa się z 8 bitów danych określających skalę jasności, łącznie 24 bity.
8 bitów danych może łatwo zrealizować sterowanie liniowe LED z 256 poziomami jasności.
Podczas transferu danych, pierwszy bit jest sygnałem ramki danych, to jest bit MSB kanału ROUT, ostatni przeniesiony do rejestru przesuwnego jest bitem LSB kanału BOUT.

Długość cyklu roboczego sterownika można obliczyć z zależności:

DXOUT =(L[7]×27+L[6]×26+L[5]×25+L[4]×24+L[3]×23+L[2]×22+L[1]×21+L[0])/256,
gdzie L[x]=”0″ lub „1”, który jest wartością poszczególnego kanału R, G, B[x], gdzie x=0, 1, 2 …7 w danej skali jasności. Minimalna wartość to 0000 0000 dla minimalnego współczynnika wypełnienia (0), i 1111 1111 dla wartości maksymalnej 255/256 wskaźnika wypełnienia.

W trakcie transportu danych, gdy paczka jest kompletna dane zostaną zatrzaśnięte. Po ich zatrzaśnięciu kolejna paczka zostanie przekazana do transportu z następnym cyklem PWM

Połączenia kaskadowe.

Dzięki wyjściowym stopniom Push Pull dla wyjść danych i CLK, układ zapewnia możliwość przesyłania informacji na duże odległości – do 6m przy częstotliwości do 2MHz. W takim wypadku celem zapobieżenia wystąpieniu odbić producent zaleca stosowanie oporników 50Ω, na wyjściach lub wejściach danych.

Jak to wygląda w praktyce.

Swego czasu a było to jak zwykle już bardzo dawno (2014-08-11) zakupiłem ciekawe moduły z czterema ledami RGB napędzanymi bohaterem wątku, w niebywałej cenie 1,80PLN. Opracowanie jest wykonane dość elegancko, i zabezpieczone białym lakierem (soldermaską). Moduł wyposażony jest w stabilizator, i wszystko czego potrzebuje driver WS2801S do prawidłowej pracy + oczywiście diody LED RGB.

Uruchomienie modułu zasilanego napięciem 12V DC nie sprawiło żadnych kłopotów. W tym celu stworzyłem testowy kod i kolejny do sterowania kilkoma modułami (dwie sztuki bo nikomu nie chciało się więcej lutować):

Kod jest fajny bo oparty jest o jedną zmienną fizyczną i coś a’la wskaźniki. Konfiguracja stosów jest byle jaka i można, a wręcz należy dostosować ją do swoich potrzeb. Generalnie jest to brudnopis, mający na celu pokazać patent i detale przekazywania danych do kolejnych modułów.

Jak się to mówi diabeł tkwi w szczegółach. ponieważ chciałem zobaczyć na czym polega ewenement przekazywania szeregowego danych, w poszczególnych sekwencjach wprowadziłem różne opóźnienia czasowe, po między rozkazem wysyłania danych do kolejnych modułów. Notka mówi o czasie  resetu do 500µs, a nic nie jest wspomniane o zależności czasowej między poszczególnymi partiami danych które są transmitowane. A w praktyce podobnie jak to w braciszku WS2812B mamy do czynienia z pewnym marginesem błędu. Krotko mówiąc jeśli zmieścimy się z rozpoczęciem przesyłania kolejnej paczki w odstępie czasu do około 750µs dane będą przepchane do kolejnego modułu. Dociekliwi mogą przeanalizować poniższe oscylogramy:

Warunek – czyli stan niski na linii zegarowej po między paczkami danych jest zachowany „naturalnie”. Przykładowy oscylogram transmitowanych paczek może wyglądać tak:

I na koniec filmik przedstawiający funkcjonowanie kodu testowego, w odniesieniu do prezentowanych oscylogramów.

Tutaj akurat udało się złapać moment o największej powtarzalności. Przedstawię jeszcze jeden filmik gdzie regularność nie jest już tak dobrze zachowana. Moim zdaniem wynika to z zastosowania płytki stykowej i napędzania µC wewnętrznym oscylatorem RC, w końcu do czynienia mamy z bardzo krótkimi odcinkami czasu.  😉

A.D. 2017-02-12 Jeżeli moc dostarczana przez układ po mimo zastosowania któregoś z opracowanych rozwiązań jest niewystarczająca, a na upartego ktoś chce zastosować ten driver można posłużyć się rozwiązaniem proponowanym tutaj. Oczywiście jest to stara nie najlepsza szkoła, LED + rezystor … przedkładająca łatwość sterowania nad jakością.


Rodzina sterowników IC Worldsemi będąca obecnie dostępną na rynku (WS2801S, WS2811S, WS2818S, WS2821A, WS2821B, WS2861).


Układy scalone o podobnej funkcjonalności:
Pekin Zhongqing Microelectronics ZQL9712,
SC16722 Hangzhou Silan Microelectronics,
BOC Hong Kong Data Systems Changzhou SD600,
Shenzhen Choi Extension Technology Co. LPD6803,
Tajwan Silicon dotykowy Technology Co. DM412.


słowniczek:
wyjście typu Push Pull – wyjście takiego typu charakteryzuje wysoka niezawodność działania. Dla sygnału „1” na wyjście podawane jest napięcie zasilające („+”), logiczna 1, dla „0” na wyjście podawany jest potencjał masy logiczne 0 ( „-” ). W ten sposób na wejściu odbiornika unika się stanów nieustalonych – nigdy nie „wisi w powietrzu”. Zaletą wyjść przeciwsobnych (push pull) jest większa prędkość, oraz możliwość pozyskania większego prądu.

Bandgap voltage reference – Jest to niezależny od temperatury, układ napięcia odniesienia, powszechnie stosowany w układach scalonych. Produkuje stałą (constant) niezależnie od wahań napięcia zasilania, zmiany temperatury otoczenia i obwodu obciążeni układu.
Ma zwykle napięcie wyjściowe na poziomie około 1,25V (zbliżony do teoretycznego 1,22 eV pasma zabronionego krzemu o 0K).


nota katalogowa układu scalonego  WS2801.pdf (3555 pobrań )
pełen kod testowy z dodatkową demonstracją :mrgreen:  – tylko dla zarejestrowanych czytelników  WS2801SLED-RGB_kilka_M48.bas_.zip (71 pobrań )


i jeszcze jedno – opis dedykowany dla Grzenio73, co prawda naczekałeś się z rok ale jak kaktus coś obieca to słowa dotrzyma  😆

Otagowano , , , , , , , .Dodaj do zakładek Link.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

pięć × 4 =

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.