ElectroBest
Atpakaļ

Kā pieslēgt WS2812B adresējamu LED sloksni pie Arduino

Publicēts: 02.08.2021
0
2578

LED apgaismojuma tehnoloģiju attīstība turpina strauji attīstīties. Vēl vakar ar kontrolieri vadāmas RGB lentes, kuru spilgtumu un krāsu var regulēt ar tālvadības pulti, šķita brīnums. Šodien tirgū ir pieejami jauni gaismekļi ar vēl plašākām iespējām.

LED sloksne uz WS2812B bāzes

Atšķirības starp adresējamām LED lentēm un standarta LED lentēm RGB ir Katra elementa spilgtuma un krāsu attiecība ir atsevišķi regulējama.. Tas ļauj iegūt apgaismojuma efektus, kas nav pieejami citiem apgaismes ķermeņu veidiem. Adresējamo LED sloksni pārvalda labi zināmā veidā - ar impulsa platuma modulācijas palīdzību. Sistēmas īpatnība ir tāda, ka katrai LED ir savs PWM kontrolieris. WS2812B mikroshēma ir trīs krāsu gaismas diode un vadības shēma, kas apvienota vienā iepakojumā.

Kā pieslēgt WS2812B LED adresējamo sloksni Arduino
LED ar draiveri ārējais skats.

Elementi ir savienoti paralēli barošanas avotam un tiek vadīti, izmantojot sērijveida kopni - pirmā elementa izeja ir savienota ar otrā elementa vadības ieeju utt. Vairumā gadījumu sērijveida kopnes ir veidotas no divām līnijām, no kurām viena pārraida stroboskopus (pulksteņa impulsus), bet otra - datus.

Adresējamās lentes izskats.
Adresējamās lentes izskats.

WS2812B vadības kopne sastāv no vienas līnijas - tā tiek izmantota datu pārsūtīšanai. Dati tiek kodēti kā impulsi ar nemainīgu frekvenci, bet ar dažādām frekvencēm. Viens impulss ir viens bits.. Katra bita ilgums ir 1,25 µs, nulles bits sastāv no augstā līmeņa 0,4 µs un zemā līmeņa 0,85 µs. Vienība parādās kā augstais līmenis 0,8 µs un zemais līmenis 0,45 µs. Uz katru LED tiek nosūtīta 24 bitu (3 baiti) pakete, kam seko pauze kā zems līmenis uz 50 µs. Tas nozīmē, ka dati par nākamo LED tiks pārsūtīti kā nākamais un tā tālāk attiecībā uz visiem ķēdes elementiem. Datu pārsūtīšana tiek pārtraukta ar 100 µs pauzi. Tas nozīmē, ka lentes programmēšanas cikls ir pabeigts un var nosūtīt nākamo datu pakešu komplektu.

Vadības dati par adresējamo lenti.
Dati adreses lentes kontrolei.

Šis protokols ļauj datu pārsūtīšanai neizmantot vienu līniju, taču tam nepieciešams precīzs laiks. Atļautā novirze nedrīkst pārsniegt 150 ns. Turklāt šīs kopnes izturība pret trokšņiem ir ļoti zema. Jebkurus pietiekamas amplitūdas traucējumus kontrolieris var uztvert kā datus. Tas nosaka ierobežojumus vadītāju garumam no vadības shēmas. No otras puses, tas nodrošina iespēju lai pārbaudītu jostas pareizu darbību bez papildu ierīcēm. Ja gaismeklim tiek pievadīta strāva un pirksts pieskaras vadības kopnes kontaktu zonai, daži LED var iedegties un nejauši nodziest.

WS2812B elementu tehniskie parametri

Lai izveidotu apgaismes sistēmas ar adresējamām lentēm, ir jāzina svarīgi gaismas izstarojošo elementu parametri.

LED izmēri5x5 mm
PWM modulācijas frekvence400 Hz
Strāvas patēriņš pie maksimālā spilgtuma60 mA uz elementu
Barošanas spriegums5 volti
Eksperta padoms
Gaismekļa enerģijas patēriņš ir diezgan liels. To nosaka ne tikai strāva, kas nepieciešama kvēlojoša p-n savienojuma ierosināšanai, bet arī komutācijas zudumi PWM formēšanas laikā. 15 elementu gaismeklim barošanas avots un vadi ir paredzēti vismaz 1 ampēra strāvai.

Arduino un WS2812B

Visā pasaulē populārā Arduino platforma ļauj izveidot skices (programmas) adresējamo lentīšu vadībai. Sistēmas iespējas ir pietiekami plašas, bet, ja kādā līmenī tās vairs nebūs pietiekamas, iegūtās prasmes būs pietiekamas, lai bez problēmām pārietu uz C++ vai pat asembleru. Lai gan ir vieglāk iegūt pamatzināšanas no Arduino.

Uz WS2812B bāzētas lentes savienošana ar Arduino Uno (Nano)

Sākumā pietiek ar vienkāršu Arduino Uno vai Arduino Nano plati. Vēlāk sarežģītākas plates var izmantot sarežģītāku sistēmu izveidei. Fiziski savienojot adresējamo LED sloksni ar Arduino plati, ir jāpārliecinās, ka ir izpildīti daži nosacījumi:

  • Zemās trokšņu noturības dēļ datu līnijas savienojuma vadiem jābūt pēc iespējas īsākiem (centieties, lai tie būtu ne vairāk kā 10 cm);
  • Savienojiet datu līniju ar brīvu Arduino plates digitālo izeju - to vēlāk norādīs programmatūra;
  • Lielā enerģijas patēriņa dēļ strāvas padeve no plates nav nepieciešama - šim nolūkam ir paredzēti atsevišķi barošanas avoti.

Jābūt savienotai kopējai strāvas padeves līnijai starp sloksni un Arduino.

Elektroinstalācijas shēma WS2812B.
Lentes WS2812B elektroinstalācijas shēma.

Lasīt arī

Kā pieslēgt LED pie Arduino plates

 

WS2812B programmatūras vadības pamati

Jau minēts, ka WS2812B mikroshēmas vadībai ir nepieciešams ar augstu precizitāti ģenerēt noteikta garuma impulsus. Arduino valodā ir komandas īsu impulsu veidošanai delayMicroseconds и mikroshēmas. Problēma ir tā, ka šo komandu izšķirtspēja ir 4 mikrosekundes. Tas nozīmē, ka nav iespējams ģenerēt laika kavējumus ar noteiktu precizitāti. Ir nepieciešams izmantot C++ vai Assembler rīkus. Vai arī ir iespējams kontrolēt LED sloksni, izmantojot Arduino, izmantojot šim nolūkam īpaši izveidotas bibliotēkas. Ievads sākas ar programmu Blink, kas liek mirgot gaismas emisijas elementiem.

FastLed .

Šī bibliotēka ir daudzpusīga. Papildus adresējamai lentītei tā atbalsta daudzas ierīces, tostarp SPI kontrolētas lentītes. Tas ir ļoti spēcīgs.

Vispirms ir nepieciešams savienot bibliotēku. Tas tiek veikts pirms iestatīšanas bloka, un virkne izskatās šādi:

#include .

Nākamais solis ir izveidot masīvu, kurā saglabāt katras gaismu izstarojošās diodes krāsas. Tam būs nosaukums strip un izmērs 15 - pēc elementu skaita (šim parametram labāk ir piešķirt konstantu).

CRGB sloksne[15]

Iestatīšanas blokā jānorāda josla, ar kuru skripts darbosies:

void setup() {

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

int g;

}

RGB parametrs nosaka krāsu maiņas secību, 15 ir LED skaits, 7 ir vadībai piešķirtās izejas numurs (pēdējam parametram labāk ir piešķirt konstantu).

Cilpas bloks sākas ar cilpu, kas secīgi ieraksta katru sarkanā (sarkanā spīduma) masīva iedaļu:

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

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

Pēc tam izveidotais masīvs tiek nosūtīts uz gaismekli:

FastLED.show();

Aizkave 1000 milisekundes (viena sekunde):

kavēšanās(1000);

Tad visus elementus var izslēgt vienādi, uzrakstot melnu krāsu.

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

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

FastLED.show();

kavēšanās(1000);

Mirgojošas lentes skice, kas balstīta uz FastLed.
Uz FastLed balstītas mirgojošas sloksnes skice.

Pēc skices kompilēšanas un ielādēšanas lente mirgo 2 sekundes. Ja vēlaties kontrolēt katru krāsu komponentu atsevišķi, tad virknes virknes {strip[g]=CRGB::Red;} tiek izmantotas vairākas virknes:

{

strip[g].r=100;// iestatīt sarkanā elementa luminiscences līmeni.

strip[g].g=11;// tas pats zaļš

strip[g].b=250;// tas pats zilā krāsā

}

NeoPixel

Šī bibliotēka darbojas tikai ar NeoPixel gredzenveida gaismas diodēm, taču tā ir mazāk resursietilpīga un satur tikai būtiskāko. Arduino valodā programma izskatās šādi:

#include .

Tāpat kā iepriekšējā gadījumā, tiek iekļauta bibliotēka un deklarēts objekts lenta:

Adafruit_NeoPixel lenta=Adafruit_NeoPixel(15, 6);// kur 15 ir elementu skaits un 6 ir piešķirtā izejas vērtība.

Lenta tiek inicializēta iestatīšanas blokā:

void setup() {

lenta.begin ()

}

Cilpas blokā visi elementi tiek izgaismoti sarkanā krāsā, lentē tiek nodots mainīgais un tiek izveidota 1 sekundes aizkave:

for (int y=0; y<15;y++)// 15 - elementu skaits lentā

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

{lenta.show();

kavēšanās(1000);

Lenta pārstāj spīdēt melnā krāsā:

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

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

lenta.show();

kavēšanās(1000);

Blink programmas skice, kas balstīta uz NeoPixel.
Uz NeoPixel balstītas Blink programmas skice.

Videolekcija: vizuālo efektu paraugi, izmantojot adresējamas lentes.

Kad esat iemācījies mirgot ar gaismas diodēm, varat turpināt mācīties, kā radīt krāsu efektus, tostarp populāro varavīksnes un ziemeļblāzmas efektu ar vienmērīgām pārejām. WS2812B un Arduino adresējamie LED nodrošina gandrīz neierobežotas iespējas.

Komentāri:
Vēl nav komentāru. Esi pirmais!

Padomi lasīšanai

Kā pašiem salabot LED gaismas ķermeņus