ElectricianExp.com
Powrót

Jak podłączyć adresowalną taśmę LED WS2812B do Arduino

Opublikowano: 02.08.2021
0
2578

Rozwój technologii oświetleniowej opartej na diodach LED postępuje w szybkim tempie. Jeszcze wczoraj taśmy RGB sterowane kontrolerem, których jasność i kolor można regulować za pomocą pilota, wydawały się cudem. Obecnie na rynku dostępne są nowe oprawy oświetleniowe o jeszcze większych możliwościach.

Taśma LED na bazie WS2812B

Różnice między adresowalnymi taśmami LED a standardowymi RGB jest Jasność i proporcje kolorów każdego elementu można regulować oddzielnie. Umożliwia to uzyskanie efektów świetlnych niedostępnych dla innych typów opraw oświetleniowych. Adresowalna taśma LED jest sterowana w dobrze znany sposób - za pomocą modulacji szerokości impulsu. Cechą charakterystyczną systemu jest to, że każda dioda LED jest wyposażona we własny sterownik PWM. Układ scalony WS2812B to trójkolorowa dioda elektroluminescencyjna i obwód sterujący, połączone w jednym pakiecie.

Jak podłączyć adresowalną taśmę LED WS2812B do Arduino
Zewnętrzny widok diody LED ze sterownikiem.

Elementy są podłączone równolegle do źródła zasilania i są sterowane za pomocą magistrali szeregowej - wyjście pierwszego elementu jest połączone z wejściem sterującym drugiego elementu itd. W większości przypadków magistrale szeregowe zbudowane są z dwóch linii, z których jedna przesyła impulsy zegarowe, a druga - dane.

Wygląd taśmy adresowalnej.
Wygląd taśmy adresowalnej.

Magistrala sterująca układu WS2812B składa się z jednej linii - służy do przesyłania danych. Dane są kodowane jako impulsy o stałej częstotliwości, ale o różnych częstotliwościach. Jeden impuls to jeden bit.. Czas trwania każdego bitu wynosi 1,25 µs, przy czym bit zerowy składa się z poziomu wysokiego trwającego 0,4 µs i poziomu niskiego trwającego 0,85 µs. Urządzenie jest wyświetlane jako poziom wysoki o czasie trwania 0,8 µs i poziom niski o czasie trwania 0,45 µs. Do każdej diody LED wysyłana jest paczka 24 bitów (3 bajty), po czym następuje pauza w postaci poziomu niskiego przez 50 µs. Oznacza to, że dane dla kolejnej diody LED zostaną przesłane jako następne, i tak dalej dla wszystkich elementów łańcucha. Transfer danych kończy się przerwą trwającą 100 µs. Oznacza to, że cykl programowania taśmy został zakończony i można wysłać następny zestaw pakietów danych.

Dane sterujące dla taśmy adresowalnej.
Dane do sterowania taśmą adresową.

Ten protokół umożliwia rezygnację z pojedynczej linii do przesyłania danych, ale wymaga dokładnego odmierzania czasu. Dopuszczalne odchylenie wynosi maks. 150 ns. Ponadto odporność tej magistrali na zakłócenia jest bardzo niska. Każde zakłócenie o wystarczającej amplitudzie może zostać odebrane przez kontroler jako dane. Narzuca to ograniczenia co do długości przewodów z obwodów sterujących. Z drugiej strony, daje to możliwość sprawdzenie poprawności działania taśmy bez dodatkowych urządzeń. Jeśli do oprawy zostanie podłączone zasilanie, a palec dotknie obszaru styku magistrali sterującej, niektóre diody LED mogą zapalić się i zgasnąć w sposób losowy.

Charakterystyka techniczna elementów WS2812B

Aby tworzyć systemy oświetleniowe z adresowalnymi taśmami, należy znać ważne parametry elementów emitujących światło.

Wymiary diod LED5x5 mm
Częstotliwość modulacji PWM400 Hz
Pobór prądu przy maksymalnej jasności60 mA na element
Napięcie zasilania5 volt
Porady ekspertów
Zużycie energii elektrycznej przez oprawę jest dość wysokie. Jest ona określana nie tylko przez prąd wymagany do zainicjowania żarzenia złącza p-n, ale także przez straty przy przełączaniu podczas kształtowania PWM. W przypadku oprawy 15-elementowej zasilacz i przewody są zaprojektowane na prąd o natężeniu co najmniej 1 ampera.

Arduino i WS2812B

Popularna na całym świecie platforma Arduino umożliwia tworzenie szkiców (programów) do sterowania taśmami adresowalnymi. Możliwości systemu są wystarczająco szerokie, ale jeśli na którymś poziomie przestaną być wystarczające, uzyskane umiejętności wystarczą do płynnego przejścia na C++ lub nawet asembler. Chociaż łatwiej jest zdobyć podstawową wiedzę z Arduino.

Podłączanie taśmy WS2812B do Arduino Uno (Nano)

Na początku wystarczy zwykła płytka Arduino Uno lub Arduino Nano. Później do budowy bardziej złożonych systemów można użyć bardziej złożonych płytek. Podczas fizycznego podłączania adresowalnej taśmy LED do płytki Arduino należy upewnić się, że spełnionych jest kilka warunków:

  • Ze względu na niską odporność na zakłócenia, przewody łączące linie danych powinny być jak najkrótsze (staraj się, aby nie przekraczały 10 cm);
  • Podłącz linię danych do wolnego wyjścia cyfrowego na płytce Arduino - zostanie ono później wskazane przez oprogramowanie;
  • Ze względu na duży pobór mocy nie jest konieczne zasilanie listwy z płyty - do tego celu przewidziano oddzielne zasilacze.

Należy podłączyć wspólną linię zasilania między listwą a Arduino.

Schemat połączeń WS2812B.
Schemat połączeń listwy WS2812B.

Czytaj także

Jak podłączyć diodę LED do płytki Arduino

 

Podstawy sterowania oprogramowaniem WS2812B

Wspomniano już, że do sterowania układem WS2812B konieczne jest generowanie impulsów o określonej długości z dużą precyzją. W języku Arduino istnieją polecenia do tworzenia krótkich impulsów delayMicroseconds и micros. Problem polega na tym, że rozdzielczość tych poleceń wynosi 4 mikrosekundy. Oznacza to, że nie jest możliwe uformowanie opóźnień czasowych z określoną dokładnością. Konieczne jest użycie narzędzi w języku C++ lub Assembler. Możliwe jest również sterowanie adresowalną taśmą LED za pomocą Arduino z wykorzystaniem bibliotek stworzonych specjalnie do tego celu. Wprowadzenie rozpoczyna się od programu Blink, który sprawia, że elementy emitujące światło migają.

FastLed .

Ta biblioteka jest wszechstronna. Oprócz taśmy adresowalnej obsługuje wiele urządzeń, w tym taśmy sterowane przez SPI. Jest bardzo potężny.

Najpierw należy podłączyć bibliotekę. Wykonuje się to przed blokiem ustawień, a łańcuch wygląda następująco:

#include .

Następnym krokiem jest utworzenie tablicy do przechowywania kolorów każdej diody elektroluminescencyjnej. Będzie on miał nazwę strip i wymiar 15 - przez liczbę elementów (lepiej przypisać temu parametrowi stałą).

Pasek CRGB[15]

W bloku ustawień należy określić zespół, z którym będzie pracował skrypt:

void setup() {

FastLED.addLeds< WS2812B, 7, RGB>(listwa, 15);

int g;

}

Parametr RGB określa kolejność naprzemiennego wyświetlania kolorów, 15 oznacza liczbę diod LED, 7 to numer wyjścia przypisanego do sterowania (ostatniemu parametrowi również lepiej przypisać stałą).

Blok pętli rozpoczyna się od pętli, która kolejno zapisuje do każdej sekcji tablicy Red (czerwona poświata):

for (g=0; g< 15;g++)

{strip[g]=CRGB::Red;}

Następnie wygenerowana tablica jest przesyłana do oprawy oświetleniowej:

FastLED.show();

Opóźnienie 1000 milisekund (jedna sekunda):

delay(1000);

Następnie wszystkie elementy można wyłączyć w ten sam sposób, wpisując w nie czarny napis.

for (int g=0; g< 15;g++)

{strip[g]=CRGB::Black;}

FastLED.show();

delay(1000);

Szkic taśmy błyskowej w oparciu o FastLed.
Szkic listwy błyskowej opartej na technologii FastLed.

Po skompilowaniu i załadowaniu szkicu wstążka będzie migać przez 2 sekundy. Jeśli chcesz kontrolować każdy element koloru osobno, zamiast łańcucha {strip[g]=CRGB::Red;} użyto wielu ciągów znaków:

{

strip[g].r=100;// ustawia poziom luminescencji elementu czerwonego

strip[g].g=11;// to samo dotyczy koloru zielonego

strip[g].b=250;// to samo dotyczy koloru niebieskiego

}

NeoPixel

Ta biblioteka działa tylko z pierścieniowymi diodami LED NeoPixel, ale jest mniej zasobożerna i zawiera tylko podstawowe elementy. W języku Arduino program wygląda następująco:

#include .

Podobnie jak w poprzednim przypadku, biblioteka jest dołączana i deklarowany jest obiekt lenta:

Adafruit_NeoPixel lenta=Adafruit_NeoPixel(15, 6);// Gdzie 15 to liczba elementów, a 6 to przypisane wyjście

Lenta jest inicjalizowana w bloku ustawień:

void setup() {

lenta.begin ()

}

W bloku pętli wszystkie elementy są podświetlane na czerwono, do taśmy przekazywana jest zmienna i tworzone jest 1-sekundowe opóźnienie:

for (int y=0; y<15;y++)//. 15 - liczba elementów w lencie

{lenta.setPixelColor(y, lenta.Color(255,0,0))};

{lenta.show();

delay(1000);

Lenta przestaje świecić na czarno:

for (int y=0; y< 15;y++)

{ lenta.setPixelColor(y, lenta.Color(0,0,0))};

lenta.show();

delay(1000);

Szkic programu Blink opartego na technologii NeoPixel.
Szkic programu Blink opartego na technologii NeoPixel.

Lekcja wideo: Przykłady efektów wizualnych z wykorzystaniem taśm adresowalnych.

Po opanowaniu umiejętności migania diodami LED można kontynuować naukę tworzenia efektów kolorystycznych, w tym popularnych efektów tęczy i zorzy polarnej z płynnymi przejściami. Adresowalne diody LED WS2812B i Arduino dają niemal nieograniczone możliwości w tym zakresie.

Uwagi:
Nie ma jeszcze komentarzy. Bądź pierwszy!

Wskazówki dotyczące czytania

Jak samodzielnie naprawić oprawę oświetleniową LED