lamp.housecope.com
späť

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

Zverejnené: 02.08.2021
0
2578

Vývoj svetelnej techniky na báze LED rýchlo pokračuje. Ešte včera pôsobili ako zázrakom ovládačom ovládané RGB pásky, ktorých jas a farbu je možné nastaviť pomocou diaľkového ovládača. Dnes sa na trhu objavili svietidlá s ešte viacerými funkciami.

LED pásik na báze WS2812B

Rozdiel medzi adresovateľným LED pásom a štandardným RGB vec je jas a pomer farieb každého prvku sa nastavujú samostatne. To vám umožní získať svetelné efekty, ktoré sú zásadne neprístupné pre iné typy osvetľovacích zariadení. Žiarenie adresovateľného LED pásika je riadené známym spôsobom - pomocou pulzno-šírkovej modulácie. Funkciou systému je vybaviť každú LED diódu 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
Vzhľad LED s ovládačom.

Prvky sú spojené do napájacej pásky paralelne, a sú riadené cez sériovú zbernicu - výstup prvého prvku je spojený s riadiacim vstupom druhého 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 adresného pruhu.
Vzhľad adresného pruhu.

Riadiaca zbernica čipu WS2812B pozostáva z jednej linky - cez ňu sa prenášajú dáta. Dáta sú zakódované ako impulzy konštantnej frekvencie, ale s rôznymi pracovnými cyklami. Jeden impulz - jeden bit. Trvanie každého bitu je 1,25 µs, nulový bit pozostáva z vysokej úrovne s trvaním 0,4 µs a nízkej úrovne 0,85 µs. Jednotka vyzerá ako vysoká úroveň pre 0,8 µs a nízka úroveň pre 0,45 µs. Do každej LED sa odošle 24-bitový (3-bajtový) zhluk, po ktorom nasleduje pauza na nízkej úrovni na 50 µs. To znamená, že údaje sa prenesú pre ďalšiu LED a tak ďalej pre všetky prvky reťazca. Prenos dát končí pauzou 100 µs. To znamená, že programovací cyklus pásky je dokončený a je možné odoslať ďalšiu sadu dátových paketov.

Údaje na správu pásky s adresou.
Údaje na správu pásky s adresou.

Takýto protokol umožňuje vystačiť si s jednou linkou na prenos dát, ale vyžaduje presnosť v dodržiavaní časových intervalov. Rozdiel nie je povolený väčší ako 150 ns. Navyše odolnosť takejto zbernice voči rušeniu je veľmi nízka. Akékoľvek rušenie dostatočnej amplitúdy môže kontrolór vnímať ako údaj. To ukladá obmedzenia na dĺžku vodičov z riadiaceho obvodu. Na druhej strane to umožňuje zdravotná prehliadka pásky bez prídavných zariadení.Ak zapnete lampu a dotknete sa prstom kontaktnej plochy riadiacej zbernice, niektoré LED sa môžu náhodne rozsvietiť a zhasnúť.

Špecifikácie prvkov WS2812B

Ak chcete vytvoriť osvetľovacie systémy založené na adresnej páske, musíte poznať dôležité parametre prvkov vyžarujúcich svetlo.

Rozmery LED5 x 5 mm
Frekvencia modulácie PWM400 Hz
Aktuálna spotreba pri maximálnom jase60 mA na bunku
Napájacie napätie5 voltov

Arduino a WS2812B

Vo svete populárna platforma Arduino umožňuje vytvárať náčrty (programy) na správu pások s adresou. Možnosti systému sú dostatočne široké, no ak už na nejakej úrovni nestačia, nadobudnuté zručnosti budú stačiť na bezbolestný prechod do C ++ alebo aj do assembleru. Aj keď počiatočné znalosti sa na Arduino ľahšie dostanú.

Pripojenie pásky WS2812B k Arduino Uno (Nano)

V prvej fáze stačia jednoduché dosky Arduino Uno alebo Arduino Nano. V budúcnosti možno použiť zložitejšie dosky na stavbu zložitejších systémov. Pri fyzickom pripájaní adresovateľného LED pásika k Arduino doske je potrebné dodržať niekoľko podmienok:

  • z dôvodu nízkej odolnosti voči rušeniu by mali byť spojovacie vodiče dátovej linky čo najkratšie (treba sa snažiť, aby boli do 10 cm);
  • je potrebné pripojiť dátový vodič k voľnému digitálnemu výstupu dosky Arduino - potom bude špecifikovaný programovo;
  • z dôvodu vysokej spotreby energie nie je nutné pásku napájať z dosky - na tento účel sú k dispozícii samostatné napájacie zdroje.

Spoločný napájací vodič lampy a Arduina musí byť pripojený.

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

Prečítajte si tiež

Ako pripojiť LED k doske Arduino

 

Základy ovládania programu WS2812B

Už bolo spomenuté, že na riadenie mikroobvodov WS2812B je potrebné generovať impulzy s určitou dĺžkou pri zachovaní vysokej presnosti. V jazyku Arduino existujú príkazy na vytváranie krátkych impulzov oneskorenieMikrosekundy a mikr. Problém je, že rozlíšenie týchto príkazov je 4 mikrosekundy. To znamená, že nebude fungovať na vytváranie časových oneskorení s danou presnosťou. Je potrebné prejsť na nástroje C ++ alebo Assembler. A môžete organizovať ovládanie adresovateľného LED pásu cez Arduino pomocou špeciálne vytvorených knižníc. Svoje zoznámenie môžete začať s programom Blink, vďaka ktorému budú prvky vyžarujúce svetlo blikať.

rýchlo vedený

Táto knižnica je univerzálna. Okrem adresnej pásky podporuje rôzne zariadenia, vrátane pások ovládaných rozhraním SPI. Má široké možnosti.

Najprv musí byť zahrnutá knižnica. Toto sa robí pred blokom nastavenia a riadok vyzerá takto:

#include <FastLED.h>

Ďalším krokom je vytvorenie poľa na uloženie farieb každej diódy vyžarujúcej svetlo. Bude mať názov prúžok a rozmer 15 - podľa počtu prvkov (je lepšie priradiť tomuto parametru konštantu).

CRGB pásik[15]

V bloku nastavenia musíte určiť, s ktorou páskou bude skica fungovať:

void setup() {

FastLED.addLeds< WS2812B, 7, RGB>(pásik, 15);

intg;

}

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

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

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

{strip[g]=CRGB::Červená;}

Potom sa vytvorené pole odošle do lampy:

FastLED.show();

Oneskorenie 1000 milisekúnd (sekunda):

oneskorenie(1000);

Potom môžete rovnakým spôsobom vypnúť všetky prvky tak, že do nich napíšete čiernu farbu.

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

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

FastLED.show();

oneskorenie(1000);

Náčrt pre blikajúcu pásku založenú na FastLed.
Náčrt pre blikajúcu pásku založenú na FastLed.

Po zostavení a odovzdaní náčrtu bude páska blikať s intervalom 2 sekúnd. Ak potrebujete spravovať každú farebnú zložku samostatne, tak namiesto linky {strip[g]=CRGB::Červená;} používa sa niekoľko riadkov:

{

prúžok[g].r=100;// nastavte úroveň žiary červeného prvku

pásik[g].g=11;// to isté pre zelenú

prúžok[g].b=250;// to isté pre modrú

}

NeoPixel

Táto knižnica funguje iba s LED krúžkami NeoPixel Ring, je však menej náročná na zdroje a obsahuje len to najnutnejšie. V jazyku Arduino vyzerá program takto:

#include <Adafruit_NeoPixel.h>

Rovnako ako v predchádzajúcom prípade je knižnica pripojená a objekt lenta je deklarovaný:

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

V bloku nastavenia sa páska inicializuje:

void setup() {

lenta.begin()

}

V bloku slučky sú všetky prvky zvýraznené červenou farbou, premenná sa odovzdá feedu a vytvorí sa oneskorenie 1 sekundy:

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

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

páska.show();

oneskorenie(1000);

Žiara sa zastaví čiernym záznamom:

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

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

páska.show();

oneskorenie(1000);

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

Video tutoriál: Ukážky vizuálnych efektov pomocou pások s adresou.

Keď sa naučíte blikať LED diódami, môžete pokračovať v učení, ako vytvárať farebné efekty, vrátane obľúbených Rainbow a Aurora Borealis s plynulými prechodmi. Adresovateľné LED diódy WS2812B a Arduino na to poskytujú takmer neobmedzené možnosti.

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

Odporúčame vám prečítať

Ako opraviť LED lampu sami