ElectroBest
Atgal

Kaip prijungti WS2812B adresuojamą LED juostelę prie "Arduino

Paskelbta: 2021 08 02
0
2578

Toliau sparčiai vystoma LED apšvietimo technologija. Dar vakar valdikliu valdomos RGB juostelės, kurių ryškumą ir spalvą galima reguliuoti nuotolinio valdymo pulteliu, atrodė kaip stebuklas. Šiandien rinkoje yra naujų šviestuvų, suteikiančių dar daugiau galimybių.

LED juosta, pagrįsta WS2812B

Skirtumai tarp adresuojamų LED juostelių ir standartinių RGB yra Kiekvieno elemento ryškumas ir spalvų santykis reguliuojami atskirai. Tai leidžia išgauti apšvietimo efektus, kurių neįmanoma pasiekti naudojant kitų tipų šviestuvus. Adresuojama LED juosta valdoma gerai žinomu būdu - impulsų pločio moduliacija. Sistema pasižymi tuo, kad kiekvienas šviesos diodas turi savo PWM valdiklį. WS2812B mikroschema yra trijų spalvų šviesos diodas ir valdymo grandinė, sujungti į vieną paketą.

Kaip prijungti WS2812B LED adresuojamą juostelę prie
Šviesos diodo su tvarkykle išorinis vaizdas.

Elementai lygiagrečiai prijungti prie maitinimo šaltinio ir valdomi per nuosekliąją magistralę - pirmojo elemento išėjimas prijungtas prie antrojo elemento valdymo įėjimo ir t. t. Daugeliu atvejų nuosekliosios magistralės yra sudarytos iš dviejų linijų, kurių viena perduoda stroboskopus (laikrodžio impulsus), o kita - duomenis.

Adresuojamos juostos išvaizda.
Adresuojamos juostos išvaizda.

WS2812B valdymo magistralę sudaro viena linija - ji naudojama duomenims perduoti. Duomenys koduojami kaip pastovaus dažnio impulsai, tačiau skirtingo dažnio. Vienas impulsas yra vienas bitas.. Kiekvieno bito trukmė yra 1,25 µs, nulinis bitas susideda iš 0,4 µs aukšto lygio ir 0,85 µs žemo lygio. Įrenginys rodomas kaip 0,8 µs aukšto lygio ir 0,45 µs žemo lygio. Į kiekvieną šviesos diodą siunčiamas 24 bitų (3 baitų) siuntinys, po to 50 µs trunka žemo lygio pauzė. Tai reiškia, kad kito šviesos diodo duomenys bus perduodami toliau, ir taip toliau - visų grandinės elementų duomenys. Duomenų perdavimą užbaigia 100 µs pauzė. Tai reiškia, kad juostos programavimo ciklas baigtas ir galima siųsti kitą duomenų paketų rinkinį.

Adresuojamos juostos valdymo duomenys.
Adreso juostos valdymo duomenys.

Šis protokolas leidžia atsisakyti vienos linijos duomenų perdavimui, tačiau reikalauja tikslaus laiko. Leidžiamas ne didesnis kaip 150 ns nuokrypis. Be to, šios magistralės atsparumas triukšmui yra labai mažas. Bet kokius pakankamos amplitudės trukdžius valdiklis gali priimti kaip duomenis. Dėl to ribojamas valdymo grandinės laidininkų ilgis. Kita vertus, ji suteikia galimybę patikrinti, ar diržas tinkamai veikia. be papildomų įrenginių. Jei į šviestuvą įjungiamas maitinimas ir pirštu paliečiama valdymo magistralės kontaktų sritis, kai kurie šviesos diodai gali atsitiktinai užsidegti ir užgesti.

WS2812B elementų techninės charakteristikos

Norint sukurti apšvietimo sistemas su adresuojamomis juostelėmis, reikia žinoti svarbius šviesą skleidžiančių elementų parametrus.

LED matmenys5x5 mm
PWM moduliacijos dažnis400 Hz
Srovės suvartojimas esant didžiausiam ryškumui60 mA vienam elementui
Maitinimo įtampa5 voltų
Ekspertų patarimai
Šviestuvo suvartojamos energijos kiekis yra gana didelis. Jį lemia ne tik srovė, reikalinga švytėjimo p-n sandūrai inicijuoti, bet ir perjungimo nuostoliai formuojant PWM. 15 elementų šviestuvo maitinimo šaltinis ir laidininkai turi būti pritaikyti ne mažesnei kaip 1 A srovei.

Arduino ir WS2812B

Visame pasaulyje populiarioje "Arduino" platformoje galima kurti eskizus (programas) adresuojamoms juostelėms valdyti. Sistemos galimybės yra pakankamai plačios, tačiau jei kuriuo nors lygiu jų nebepakanka, įgytų įgūdžių pakaks, kad būtų galima sklandžiai pereiti prie C++ ar net asemblerio. Nors pagrindines žinias lengviau įgyti iš "Arduino".

WS2812B juostelės prijungimas prie "Arduino Uno" (Nano)

Iš pradžių pakanka paprastos "Arduino Uno" arba "Arduino Nano" plokštės. Vėliau sudėtingesnes plokštes galima naudoti sudėtingesnėms sistemoms kurti. Fiziškai prijungdami adresuojamą LED juostelę prie "Arduino" plokštės, turite įsitikinti, kad tenkinamos kelios sąlygos:

  • Dėl mažo atsparumo triukšmui duomenų linijos jungiamieji laidai turi būti kuo trumpesni (stenkitės, kad jie būtų ne ilgesni kaip 10 cm);
  • Duomenų liniją prijunkite prie laisvos "Arduino" plokštės skaitmeninės išvesties - ją vėliau nurodys programinė įranga;
  • Dėl didelio energijos suvartojimo juostos nereikia maitinti iš plokštės - tam yra atskiri maitinimo šaltiniai.

Turi būti prijungta bendra maitinimo linija tarp juostelės ir "Arduino".

Laidų schema WS2812B.
Lentelės WS2812B laidų schema.

Taip pat skaitykite

Kaip prijungti šviesos diodą prie "Arduino" plokštės

 

WS2812B programinės įrangos valdymo pagrindai

Jau buvo minėta, kad norint valdyti WS2812B mikroschemą, reikia labai tiksliai generuoti tam tikro ilgio impulsus. "Arduino" kalboje yra komandų trumpiems impulsams formuoti delayMicroseconds и mikroschemos. Problema ta, kad šių komandų skiriamoji geba yra 4 mikrosekundės. Tai reiškia, kad neįmanoma sukurti tam tikro tikslumo laiko vėlinimo. Būtina naudoti C++ arba Assembler įrankius. Arba galima valdyti LED juostelę per "Arduino" naudojant specialiai tam sukurtas bibliotekas. Įžanga prasideda programa "Blink", kuri priverčia mirksėti šviesą skleidžiančius elementus.

FastLed .

Ši biblioteka yra universali. Be adresuojamos juostos, ji palaiko daugelį įrenginių, įskaitant SPI valdomas juostas. Jis labai galingas.

Pirmiausia reikia prijungti biblioteką. Tai atliekama prieš sąrankos bloką, o eilutė atrodo taip:

#include .

Kitas žingsnis - sukurti masyvą, kuriame būtų saugomos kiekvieno šviesos diodo spalvos. Jis bus pavadintas juostelės pavadinimu ir matmeniu 15 - pagal elementų skaičių (geriau šiam parametrui priskirti konstantą).

CRGB juostelė [15]

Sąrankos bloke turite nurodyti juostą, su kuria dirbs scenarijus:

void setup() {

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

int g;

}

RGB parametras nustato spalvų kaitos tvarką, 15 reiškia šviesos diodų skaičių, 7 - valdymui priskirto išėjimo numerį (pastarajam parametrui taip pat geriau priskirti konstantą).

Ciklo blokas pradedamas ciklu, kuris nuosekliai įrašomas į kiekvieną "Red" (raudonas švytėjimas) masyvo sekciją:

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

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

Tada sukurtas masyvas siunčiamas į šviestuvą:

FastLED.show();

Vėlavimas 1000 milisekundžių (viena sekundė):

atidėjimas(1000);

Tuomet visus elementus galima išjungti vienodai - užrašyti juoda spalva.

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

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

FastLED.show();

atidėjimas(1000);

Mirksinčios juostos eskizas, paremtas
"FastLed" pagrindu sukurtos mirksinčios juostelės eskizas.

Sukompiliavus ir įkėlus eskizą, juostelė mirksės 2 sekundes. Jei norite atskirai valdyti kiekvieną spalvinį komponentą, vietoj eilutės {strip[g]=CRGB::Red;} naudojamos kelios eilutės:

{

Strip[g].r=100;// nustatyti raudonojo elemento švytėjimo lygį.

strip[g].g=11;// tas pats žalias

Strip[g].b=250;// tas pats mėlynos spalvos

}

"NeoPixel"

Ši biblioteka veikia tik su "NeoPixel" žiediniais šviesos diodais, tačiau jai reikia mažiau išteklių ir joje yra tik svarbiausi dalykai. Arduino kalba programa atrodo taip:

#include .

Kaip ir ankstesniu atveju, įtraukiama biblioteka ir deklaruojamas lenta objektas:

Adafruit_NeoPixel lenta=Adafruit_NeoPixel(15, 6);// kur 15 yra elementų skaičius, o 6 - priskirta išvestis

Lenta inicializuojama sąrankos bloke:

void setup() {

lenta.begin ()

}

Ciklo bloke visi elementai apšviečiami raudonai, juostai perduodamas kintamasis ir sukuriama 1 sekundės delsa:

for (int y=0; y<15;y++)// 15 - elementų skaičius lenta

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

{lenta.show();

atidėjimas(1000);

Lenta nustoja švytėti juoda spalva:

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

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

lenta.show();

atidėjimas(1000);

Programos
"NeoPixel" pagrįstos "Blink" programos eskizas.

Vaizdo pamoka: vaizdinių efektų pavyzdžiai naudojant adresuojamas juosteles.

Išmokę mirksėti šviesos diodais, galite toliau mokytis kurti spalvinius efektus, įskaitant populiariuosius vaivorykštės ir šiaurės pašvaistės efektus su sklandžiais perėjimais. WS2812B ir "Arduino" adresuojami šviesos diodai suteikia beveik neribotas galimybes.

Komentarai:
Komentarų dar nėra. Būkite pirmieji!

Patarimai, kaip skaityti

Kaip patiems remontuoti LED šviestuvą