ElectricianExp.com
Înapoi

Cum să conectați o bandă LED adresabilă WS2812B la un Arduino

Publicat: 02.08.2021
0
2578

Dezvoltarea tehnologiei de iluminat pe bază de LED-uri continuă în ritm alert. Până mai ieri, panglicile RGB controlate de controler, a căror luminozitate și culoare pot fi ajustate prin telecomandă, păreau un miracol. În prezent, pe piață există noi corpuri de iluminat care oferă și mai multe posibilități.

Bandă LED bazată pe WS2812B

Diferențele dintre benzile LED adresabile și cele standard RGB este Luminozitatea și raportul de culoare al fiecărui element sunt reglabile separat.. Acest lucru face posibilă obținerea unor efecte de iluminare care nu sunt disponibile pentru alte tipuri de corpuri de iluminat. Banda LED adresabilă este controlată într-un mod bine cunoscut - prin intermediul modulației lățimii impulsurilor. O caracteristică a sistemului este că fiecare LED este echipat cu propriul controler PWM. Cipul WS2812B este o diodă emițătoare de lumină în trei culori și un circuit de control, combinate într-un singur pachet.

Cum se conectează banda LED adresabilă WS2812B la Arduino
Vedere exterioară a LED-ului cu driver.

Elementele sunt conectate în paralel la sursa de alimentare și sunt controlate prin intermediul unei magistrale seriale - ieșirea primului element este conectată la intrarea de control a celui de-al doilea element etc. În cele mai multe cazuri, magistralele seriale sunt construite pe două linii, dintre care una transmite stroboscoape (impulsuri de ceas), iar cealaltă - date.

Aspectul panglicii adresabile.
Aspectul panglicii adresabile.

Magistrala de control a WS2812B constă dintr-o singură linie - este utilizată pentru transferul de date. Datele sunt codificate sub formă de impulsuri cu o frecvență constantă, dar cu frecvențe diferite. Un impuls reprezintă un bit.. Durata fiecărui bit este de 1,25 µs, iar bitul zero este format dintr-un nivel înalt de 0,4 µs și un nivel scăzut de 0,85 µs. Unitatea apare ca un nivel ridicat de 0,8µs și un nivel scăzut de 0,45µs. Un pachet de 24 de biți (3 octeți) este trimis la fiecare LED, urmat de o pauză ca nivel scăzut timp de 50µs. Acest lucru înseamnă că datele pentru următorul LED vor fi transmise în continuare, și așa mai departe pentru toate elementele din lanț. Transferul de date se termină cu o pauză de 100 µs. Acest lucru înseamnă că ciclul de programare a panglicii este finalizat și că următorul set de pachete de date poate fi trimis.

Date de control pentru panglica adresabilă.
Date pentru controlul benzii de adrese.

Acest protocol permite renunțarea la o singură linie pentru transferul de date, dar necesită o sincronizare precisă. Este permisă o abatere de maximum 150 ns. În plus, imunitatea la zgomot a acestei magistrale este foarte scăzută. Orice interferență de amplitudine suficientă poate fi preluată de controler ca date. Acest lucru impune limitări asupra lungimii conductorilor de la circuitul de control. Pe de altă parte, oferă posibilitatea de a pentru a verifica funcționarea corectă a curelei fără dispozitive suplimentare. Dacă aparatul de iluminat este alimentat cu energie electrică și un deget atinge zona de contact a magistralei de control, unele LED-uri se pot aprinde și stinge aleatoriu.

Caracteristicile tehnice ale elementelor WS2812B

Pentru a crea sisteme de iluminat cu panglici adresabile, trebuie să cunoașteți parametrii importanți ai elementelor emițătoare de lumină.

Dimensiuni LED5x5 mm
Frecvența de modulație PWM400 Hz
Consumul de curent la luminozitate maximă60mA pe element
Tensiunea de alimentare5 volți
Consultanță de specialitate
Starikov, Mihail
Starikov Mikhail
Inginer electronist senior
Puneți întrebarea
Consumul de energie al corpului de iluminat este destul de ridicat. Aceasta este determinată nu numai de curentul necesar pentru inițierea joncțiunii p-n incandescente, ci și de pierderile de comutare în timpul modelării PWM. Pentru un corp de iluminat cu 15 elemente, sursa de alimentare și conductoarele sunt proiectate pentru un curent de cel puțin 1 amperiu.

Arduino și WS2812B

Platforma Arduino, populară în întreaga lume, permite crearea de schițe (programe) pentru controlul panglicilor adresabile. Capacitățile sistemului sunt suficient de largi, dar dacă la orice nivel nu mai sunt suficiente, competențele obținute vor fi suficiente pentru a trece fără probleme la C++ sau chiar la asamblor. Cu toate că este mai ușor să obțineți cunoștințele de bază de la Arduino.

Conectarea unei panglici bazate pe WS2812B la un Arduino Uno (Nano)

La început, este suficientă o simplă placă Arduino Uno sau Arduino Nano. Ulterior, se pot folosi plăci mai complexe pentru a construi sisteme mai complexe. Atunci când conectați fizic banda LED adresabilă la placa Arduino, trebuie să vă asigurați că sunt îndeplinite câteva condiții:

  • Din cauza imunității scăzute la zgomot, conductorii de conectare a liniei de date trebuie să fie cât mai scurți posibil (încercați să nu depășească 10 cm);
  • Conectați linia de date la o ieșire digitală liberă a plăcii Arduino - aceasta va fi indicată ulterior de către software;
  • Din cauza consumului ridicat de energie, nu este necesar să alimentați banda de pe placă - în acest scop sunt prevăzute surse de alimentare separate.

Trebuie conectată linia comună de alimentare cu energie electrică între bandă și Arduino.

Schema electrică WS2812B.
Schema de cablare a benzii WS2812B.

Citește și

Cum se conectează LED-ul la placa Arduino

 

Fundamentele controlului software WS2812B

S-a menționat deja că, pentru a controla cipul WS2812B, este necesar să se genereze impulsuri de o anumită lungime cu o precizie ridicată. În limbajul Arduino există comenzi pentru a forma impulsuri scurte delayMicrosecunde и micros. Problema este că rezoluția acestor comenzi este de 4 microsecunde. Aceasta înseamnă că nu este posibilă generarea de întârzieri cu o anumită precizie. Este necesar să se utilizeze instrumente C++ sau Assembler. Sau este posibil să controlați banda de LED-uri prin Arduino cu ajutorul bibliotecilor special create în acest scop. Introducerea începe cu Blink, un program care face ca elementele care emit lumină să clipească.

FastLed .

Această bibliotecă este versatilă. În plus față de panglica adresabilă, acceptă multe dispozitive, inclusiv panglici controlate prin SPI. Este foarte puternic.

Mai întâi trebuie să conectați biblioteca. Acest lucru se face înainte de blocul de configurare, iar șirul arată astfel:

#include .

Următorul pas este crearea unei matrice pentru stocarea culorilor fiecărei diode emițătoare de lumină. Acesta va avea numele de bandă și dimensiunea 15 - prin numărul de elemente (este mai bine să se atribuie o constantă acestui parametru).

Banda CRGB[15]

În blocul de configurare trebuie să specificați banda cu care va funcționa scriptul:

void setup() {

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

int g;

}

Parametrul RGB stabilește ordinea de alternanță a culorilor, 15 înseamnă numărul de LED-uri, 7 este numărul ieșirii atribuite pentru control (este mai bine să atribuiți o constantă și ultimului parametru).

Blocul de buclă începe cu o buclă care scrie secvențial în fiecare secțiune a matricei Red (strălucire roșie):

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

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

Apoi, matricea generată este trimisă la corpul de iluminat:

FastLED.show();

Întârziere 1000 de milisecunde (o secundă):

întârziere(1000);

Apoi, toate elementele pot fi dezactivate în același mod, scriind negru în ele.

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

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

FastLED.show();

întârziere(1000);

Schiță pentru bandă intermitentă bazată pe FastLed.
O schiță pentru o bandă intermitentă bazată pe FastLed.

După compilarea și încărcarea schiței, panglica va clipi cu o perioadă de 2 secunde. Dacă doriți să controlați fiecare componentă de culoare în parte, atunci în loc de șirul {strip[g]=CRGB::Red;} se utilizează mai multe șiruri de caractere:

{

strip[g].r=100;// setează nivelul de luminescență al elementului roșu

strip[g].g=11;// același lucru pentru verde

strip[g].b=250;// la fel pentru albastru

}

NeoPixel

Această bibliotecă funcționează numai cu LED-urile inelare NeoPixel, dar este mai puțin consumatoare de resurse și conține doar elementele esențiale. În limbaj Arduino, programul arată astfel:

#include .

Ca și în cazul anterior, biblioteca este inclusă și este declarat obiectul lenta:

Adafruit_NeoPixel lenta=Adafruit_NeoPixel(15, 6);// Unde 15 este numărul de elemente și 6 este ieșirea atribuită.

Lenta este inițializată în blocul de configurare:

void setup() {

lenta.begin ()

}

În blocul de buclă, toate elementele sunt iluminate în roșu, o variabilă este transmisă benzii și se creează o întârziere de 1 secundă:

for (int y=0; y<15;y++)// 15 - numărul de elemente din lenta

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

{lenta.show();

întârziere(1000);

Lentă nu mai strălucește în negru:

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

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

lenta.show();

întârziere(1000);

Schiță pentru programul Blink bazat pe NeoPixel.
O schiță pentru programul Blink bazat pe NeoPixel.

Lecție video: Exemple de efecte vizuale care utilizează panglici adresabile.

După ce ai învățat cum să faci să clipești LED-uri, poți continua să înveți cum să creezi efecte de culoare, inclusiv popularele Rainbow și Northern Lights cu tranziții fluide. LED-urile adresabile WS2812B și Arduino oferă posibilități aproape nelimitate în acest sens.

Comentarii:
Încă nu există comentarii. Fii primul!

Sfaturi pentru lectură

Cum de a repara singur dispozitivul de iluminat cu LED-uri