ElectroBest
Zpět

Jak připojit adresovatelný LED pásek WS2812B k Arduinu

Zveřejněno: 02.08.2021
0
2578

Vývoj osvětlovací technologie založené na LED pokračuje rychlým tempem. Ještě včera se RGB pásky ovládané ovladačem, jejichž jas a barvu lze nastavit dálkovým ovládáním, zdály být zázrakem. Dnes jsou na trhu nová svítidla s ještě většími možnostmi.

LED pásek na bázi WS2812B

Rozdíly mezi adresovatelnými LED pásky a standardními LED pásky RGB je Jas a poměr barev každého prvku lze nastavit samostatně.. To umožňuje dosáhnout světelných efektů, které nejsou u jiných typů svítidel dostupné. Adresovatelný LED pásek je řízen známým způsobem - pomocí pulzně šířkové modulace. Zvláštností systému je, že každá LED je vybavena vlastním PWM regulátorem. Čip WS2812B je tříbarevná světelná dioda a řídicí obvod v jednom balení.

Jak připojit adresovatelný LED pásek WS2812B k Arduinu
Vnější pohled na LED diodu s ovladačem.

Prvky jsou připojeny paralelně k napájecímu zdroji a jsou řízeny prostřednictvím sériové sběrnice - výstup prvního prvku je připojen k řídicímu vstupu druhého prvku atd. Ve většině případů jsou sériové sběrnice postaveny na dvou linkách, z nichž jedna přenáší stroboskopy (hodinové impulsy) a druhá data.

Vzhled adresovatelné pásky.
Vzhled adresovatelné pásky.

Řídicí sběrnice WS2812B se skládá z jedné linky - slouží k přenosu dat. Data jsou kódována jako impulsy s konstantní frekvencí, ale s různými frekvencemi. Jeden impuls je jeden bit.. Doba trvání každého bitu je 1,25 µs, nulový bit se skládá z vysoké úrovně 0,4 µs a nízké úrovně 0,85 µs. Jednotka se zobrazí jako vysoká úroveň 0,8 µs a nízká úroveň 0,45 µs. Do každé LED je odeslána zásilka 24 bitů (3 bajty), po níž následuje pauza jako nízká úroveň po dobu 50 µs. To znamená, že data pro další LED budou přenesena jako další a tak dále pro všechny prvky v řetězci. Přenos dat je ukončen 100 µs pauzou. To znamená, že programovací cyklus pásky je dokončen a lze odeslat další sadu datových paketů.

Řídicí údaje pro adresovatelnou pásku.
Údaje pro kontrolu adresní pásky.

Tento protokol umožňuje obejít se bez jediné linky pro přenos dat, ale vyžaduje přesné načasování. Je povolena odchylka maximálně 150 ns. Kromě toho je odolnost této sběrnice proti šumu velmi nízká. Jakékoli rušení s dostatečnou amplitudou může řídicí jednotka zachytit jako data. Tím jsou omezeny délky vodičů od řídicích obvodů. Na druhou stranu poskytuje možnost zkontrolovat správnou funkci řemene bez dalších zařízení. Pokud je svítidlo napájeno a prst se dotkne kontaktní oblasti řídicí sběrnice, mohou se některé LED diody náhodně rozsvítit a zhasnout.

Technické vlastnosti prvků WS2812B

Pro vytvoření osvětlovacích systémů s adresovatelnými páskami je třeba znát důležité parametry prvků vyzařujících světlo.

Rozměry LED5x5 mm
Modulační frekvence PWM400 Hz
Spotřeba proudu při maximálním jasu60 mA na prvek
Napájecí napětí5 voltů
Odborné poradenství
Spotřeba energie svítidla je poměrně vysoká. Je to dáno nejen proudem potřebným k iniciaci žhaveného p-n přechodu, ale také spínacími ztrátami při tvarování PWM. U svítidla s 15 prvky jsou napájecí zdroj a vodiče dimenzovány na proud nejméně 1 A.

Arduino a WS2812B

Celosvětově oblíbená platforma Arduino umožňuje vytvářet náčrty (programy) pro ovládání adresovatelných pásků. Možnosti systému jsou dostatečně široké, ale pokud na některé úrovni přestanou stačit, získané dovednosti postačí k bezproblémovému přechodu na C++ nebo dokonce na assembler. I když je snazší získat základní znalosti z Arduina.

Připojení pásky WS2812B k Arduinu Uno (Nano)

Zpočátku postačí jednoduchá deska Arduino Uno nebo Arduino Nano. Později lze složitější desky použít k sestavení složitějších systémů. Při fyzickém připojení adresovatelného LED pásku k desce Arduino je třeba zajistit splnění několika podmínek:

  • Vzhledem k nízké odolnosti proti šumu by měly být vodiče pro připojení datového vedení co nejkratší (snažte se, aby byly do 10 cm);
  • Připojte datovou linku k volnému digitálnímu výstupu desky Arduino - později bude určen softwarem;
  • Vzhledem k vysoké spotřebě energie není nutné napájet lištu z desky - pro tento účel jsou k dispozici samostatné napájecí zdroje.

Mezi lištou a Arduinem musí být připojeno společné napájecí vedení.

Schéma zapojení WS2812B.
Schéma zapojení pásku WS2812B.

Přečtěte si také

Jak připojit LED k desce Arduino

 

Základy softwarového řízení WS2812B

Již bylo zmíněno, že pro ovládání čipu WS2812B je třeba generovat impulsy určité délky s vysokou přesností. V jazyce Arduino existují příkazy pro tvorbu krátkých impulzů. delayMicroseconds и micros. Problémem je, že rozlišení těchto příkazů je 4 mikrosekundy. To znamená, že není možné generovat časová zpoždění s danou přesností. Je nutné použít nástroje C++ nebo Assembler. Adresovatelný LED pásek je možné ovládat také prostřednictvím Arduina pomocí knihoven vytvořených speciálně pro tento účel. Úvod začíná programem Blink, který způsobuje blikání světelných prvků.

FastLed .

Tato knihovna je všestranná. Kromě adresovatelné pásky podporuje mnoho zařízení včetně pásky řízené SPI. Je velmi výkonný.

Nejprve je třeba připojit knihovnu. To se provádí před blokem nastavení a řetězec vypadá takto:

#include .

Dalším krokem je vytvoření pole pro uložení barev jednotlivých světelných diod. Bude mít název strip a rozměr 15 - podle počtu prvků (je lepší tomuto parametru přiřadit konstantu).

CRGB strip[15]

V bloku nastavení je třeba zadat pásmo, se kterým bude skript pracovat:

void setup() {

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

int g;

}

Parametr RGB nastavuje pořadí střídání barev, 15 znamená počet LED diod, 7 je číslo výstupu přiřazeného k ovládání (k poslednímu parametru je lepší přiřadit také konstantu).

Blok smyčky začíná smyčkou, která postupně zapisuje do jednotlivých sekcí pole Red (červená záře):

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

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

Vytvořené pole se pak odešle do svítidla:

FastLED.show();

Zpoždění 1000 milisekund (jedna sekunda):

delay(1000);

Všechny prvky pak lze vypnout stejným způsobem, a to tak, že se do nich napíše černá barva.

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

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

FastLED.show();

delay(1000);

Náčrtek blikající pásky na základě FastLed.
Náčrtek blikajícího pásku založeného na technologii FastLed.

Po zkompilování a načtení náčrtu bude páska blikat po dobu 2 sekund. Pokud chcete ovládat každou barevnou složku zvlášť, pak místo řetězce {strip[g]=CRGB::Red;} je použito více řetězců:

{

strip[g].r=100;// nastavit úroveň luminiscence červeného prvku.

strip[g].g=11;// totéž pro zelenou barvu

strip[g].b=250;// totéž pro modrou barvu

}

NeoPixel

Tato knihovna pracuje pouze s kroužkovými LED diodami NeoPixel, ale je méně náročná na zdroje a obsahuje pouze to nejnutnější. V jazyce Arduino vypadá program takto:

#include .

Stejně jako v předchozím případě je zahrnuta knihovna a deklarován objekt lenta:

Adafruit_NeoPixel lenta=Adafruit_NeoPixel(15, 6);// Kde 15 je počet prvků a 6 je přiřazený výstup.

Lenta se inicializuje v bloku nastavení:

void setup() {

lenta.begin ()

}

V bloku smyčky se všechny prvky rozsvítí červeně, proměnná se předá pásce a vytvoří se zpoždění 1 sekunda:

for (int y=0; y<15;y++)// 15 - počet prvků v lentě

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

{lenta.show();

delay(1000);

Lenta přestane černě svítit:

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

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

lenta.show();

delay(1000);

Skica pro program Blink založená na NeoPixelu.
Skica programu Blink založeného na NeoPixelu.

Videolekce: Ukázky vizuálních efektů pomocí adresovatelných pásků.

Jakmile se naučíte blikat LED diodami, můžete pokračovat v učení se vytváření barevných efektů, včetně oblíbené duhy a polární záře s plynulými přechody. WS2812B a adresovatelné LED diody Arduino k tomu poskytují téměř neomezené možnosti.

Komentáře:
Zatím žádné komentáře. Buďte první!

Tipy pro čtení

Jak si sami opravit svítidlo LED