ElectroBest
Späť

Ako pripojiť adresovateľný LED pásik WS2812B k Arduinu

Uverejnené: 02.08.2021
0
2578

Vývoj osvetľovacej technológie na báze LED pokračuje rýchlym tempom. Až do včera sa pásky RGB ovládané ovládačom, ktorých jas a farbu možno nastaviť diaľkovým ovládaním, zdali ako zázrak. Dnes sú na trhu nové svietidlá s ešte väčšími možnosťami.

LED pásik na báze WS2812B

Rozdiely medzi adresovateľnými LED páskami a štandardnými RGB je Jas a pomer farieb každého prvku je možné nastaviť samostatne. To umožňuje dosiahnuť svetelné efekty, ktoré nie sú dostupné pre iné typy svietidiel. Adresovateľný LED pásik sa ovláda známym spôsobom - pomocou pulzno-šírkovej modulácie. Charakteristickou črtou systému je, že každá LED je vybavená vlastným PWM regulátorom. Čip WS2812B je trojfarebná svetelná dióda a riadiaci obvod skombinovaný v jednom balení.

Ako pripojiť adresovateľný LED pásik WS2812B k Arduinu
Vonkajší pohľad na LED diódu s ovládačom.

Prvky sú pripojené paralelne k napájaciemu zdroju a sú riadené prostredníctvom sériovej zbernice - výstup prvého prvku je pripojený na riadiaci vstup druhého prvku atď. Vo väčšine prípadov sú sériové zbernice postavené na dvoch linkách, z ktorých jedna prenáša stroboskopy (hodinové impulzy) a druhá dáta.

Vzhľad adresovateľnej pásky.
Vzhľad adresovateľnej pásky.

Riadiaca zbernica WS2812B pozostáva z jedného riadku - slúži na prenos dát. Údaje sú kódované ako impulzy s konštantnou frekvenciou, ale s rôznymi frekvenciami. Jeden impulz je jeden bit.. Trvanie každého bitu je 1,25 µs, nulový bit pozostáva z vysokej úrovne 0,4 µs a nízkej úrovne 0,85 µs. Jednotka sa zobrazuje ako vysoká úroveň 0,8 µs a nízka úroveň 0,45 µs. Do každej LED sa pošle balík 24 bitov (3 bajty), po ktorom nasleduje pauza ako nízka úroveň na 50 µs. To znamená, že údaje pre ďalšiu LED diódu sa budú prenášať ako ďalšie a tak ďalej pre všetky prvky v reťazci. Prenos údajov je ukončený 100 µs pauzou. To znamená, že cyklus programovania pásky je ukončený a je možné odoslať ďalšiu sadu dátových paketov.

Riadiace údaje pre adresovateľnú pásku.
Údaje pre kontrolu pásky s adresou.

Tento protokol umožňuje, aby sa pri prenose údajov nepoužíval jeden riadok, ale vyžaduje si presné načasovanie. Je povolená odchýlka max. 150 ns. Okrem toho je odolnosť tejto zbernice voči šumu veľmi nízka. Každé rušenie s dostatočnou amplitúdou môže riadiaca jednotka zachytiť ako údaje. Tým sú obmedzené dĺžky vodičov z riadiacich obvodov. Na druhej strane poskytuje možnosť skontrolovať správnu funkciu remeňa bez ďalších zariadení. Ak je svietidlo napájané a prst sa dotkne kontaktnej oblasti riadiacej zbernice, niektoré LED diódy sa môžu náhodne rozsvietiť a zhasnúť.

Technické vlastnosti prvkov WS2812B

Na vytvorenie osvetľovacích systémov s adresovateľnými páskami musíte poznať dôležité parametre prvkov vyžarujúcich svetlo.

Rozmery LED5x5 mm
Modulačná frekvencia PWM400 Hz
Spotreba prúdu pri maximálnom jase60 mA na prvok
Napájacie napätie5 voltov
Odborné poradenstvo
Spotreba energie svietidla je pomerne vysoká. Je to dané nielen prúdom potrebným na inicializáciu žeravého p-n prechodu, ale aj spínacími stratami počas tvarovania PWM. V prípade svietidla s 15 prvkami sú napájací zdroj a vodiče navrhnuté na prúd minimálne 1 A.

Arduino a WS2812B

Celosvetovo obľúbená platforma Arduino umožňuje vytvárať náčrty (programy) na ovládanie adresovateľných pások. Možnosti systému sú dostatočne široké, ale ak na niektorej úrovni prestanú stačiť, získané zručnosti budú stačiť na bezproblémový prechod na C++ alebo dokonca na assembler. Hoci je jednoduchšie získať základné znalosti z Arduina.

Pripojenie pásky WS2812B k Arduino Uno (Nano)

Spočiatku stačí jednoduchá doska Arduino Uno alebo Arduino Nano. Neskôr sa môžu používať zložitejšie dosky na vytváranie zložitejších systémov. Pri fyzickom pripájaní adresovateľného LED pásika k doske Arduino sa musíte uistiť, že je splnených niekoľko podmienok:

  • Z dôvodu nízkej odolnosti voči šumu by mali byť vodiče na pripojenie dátového vedenia čo najkratšie (snažte sa, aby boli do 10 cm);
  • Pripojte dátovú linku k voľnému digitálnemu výstupu na doske Arduino - neskôr ho určí softvér;
  • Vzhľadom na vysokú spotrebu energie nie je potrebné napájať lištu z dosky - na tento účel sú k dispozícii samostatné napájacie zdroje.

Musí byť pripojené spoločné napájacie vedenie medzi páskou a Arduinom.

Schéma zapojenia WS2812B.
Schéma zapojenia pásky WS2812B.

Prečítajte si tiež

Ako pripojiť LED k doske Arduino

 

Základy softvérového ovládania WS2812B

Už bolo spomenuté, že na riadenie čipu WS2812B je potrebné generovať impulzy určitej dĺžky s vysokou presnosťou. V jazyku Arduino sú príkazy na vytvorenie krátkych impulzov delayMicroseconds и mikrosvet. Problémom je, že rozlíšenie týchto príkazov je 4 mikrosekundy. To znamená, že nie je možné generovať časové oneskorenia s danou presnosťou. Je potrebné použiť nástroje C++ alebo Assembler. Alebo je možné ovládať LED pásik prostredníctvom Arduina pomocou knižníc vytvorených špeciálne na tento účel. Úvod sa začína programom Blink, ktorý spôsobuje blikanie svetelných prvkov.

FastLed .

Táto knižnica je všestranná. Okrem adresovateľnej pásky podporuje mnoho zariadení vrátane pások riadených SPI. Je veľmi výkonný.

Najprv je potrebné pripojiť knižnicu. Toto sa vykoná pred blokom nastavenia a reťazec vyzerá takto:

#include .

Ďalším krokom je vytvorenie poľa na uloženie farieb jednotlivých svetelných diód. Bude mať názov strip a rozmer 15 - podľa počtu prvkov (je lepšie priradiť tomuto parametru konštantu).

CRGB pás[15]

V bloku nastavenia musíte zadať pásmo, s ktorým bude skript pracovať:

void setup() {

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

int g;

}

Parameter RGB nastavuje poradie striedania farieb, 15 znamená počet LED diód, 7 je číslo výstupu priradeného na ovládanie (k poslednému parametru je lepšie priradiť aj konštantu).

Blok slučky začína slučkou, ktorá postupne zapisuje do každej časti poľa Red (červená žiara):

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

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

Potom sa vygenerované pole odošle do svietidla:

FastLED.show();

Oneskorenie 1000 milisekúnd (jedna sekunda):

delay(1000);

Potom sa všetky prvky dajú vypnúť rovnakým spôsobom, a to tak, že sa do nich napíše čierna farba.

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

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

FastLED.show();

delay(1000);

Náčrt pre blikajúcu pásku na základe FastLed.
Náčrt blikacieho pásu na báze FastLed.

Po skompilovaní a načítaní náčrtu bude páska blikať s periódou 2 sekundy. Ak chcete ovládať každú farebnú zložku samostatne, potom namiesto reťazca {strip[g]=CRGB::Red;} používa sa viacero reťazcov:

{

strip[g].r=100;// nastaviť úroveň luminiscencie červeného prvku

strip[g].g=11;// to isté platí pre zelenú farbu

strip[g].b=250;// to isté pre modrú farbu

}

NeoPixel

Táto knižnica pracuje len s NeoPixel Ring LED, ale je menej náročná na zdroje a obsahuje len to najdôležitejšie. V jazyku Arduino vyzerá program takto:

#include .

Rovnako ako v predchádzajúcom prípade sa zahrnie knižnica a deklaruje sa objekt lenta:

Adafruit_NeoPixel lenta=Adafruit_NeoPixel(15, 6);// Kde 15 je počet prvkov a 6 je priradený výstup

Lenta sa inicializuje v bloku nastavenia:

void setup() {

lenta.begin ()

}

V bloku slučky sa všetky prvky rozsvietia na červeno, do pásky sa odovzdá premenná a vytvorí sa oneskorenie 1 sekunda:

for (int y=0; y<15;y++)// 15 - počet prvkov v lente

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

{lenta.show();

delay(1000);

Lenta prestane žiariť čiernou farbou:

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

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

lenta.show();

delay(1000);

Náčrt pre program Blink založený na NeoPixel.
Náčrt pre program Blink založený na NeoPixel.

Video lekcia: Ukážky vizuálnych efektov pomocou adresovateľných pások.

Keď sa naučíte blikať LED diódami, môžete pokračovať v učení sa vytvárania farebných efektov vrátane obľúbených dúhových a polárnych svetiel s plynulými prechodmi. WS2812B a adresovateľné LED diódy Arduino na to poskytujú takmer neobmedzené možnosti.

Komentáre:
Zatiaľ žiadne komentáre. Buďte prvý!

Tipy na čítanie

Ako opraviť svietidlo LED sami