ElectroBest
Vissza

Hogyan csatlakoztassunk egy WS2812B címezhető LED szalagot egy Arduinóhoz?

Megjelent: 02.08.2021
0
2578

A LED-alapú világítástechnika fejlődése továbbra is gyors ütemben halad. Egészen tegnapig csodának tűntek a távirányítóval vezérelhető RGB szalagok, amelyek fényereje és színe távirányítóval állítható. Ma már új lámpatestek vannak a piacon, amelyek még több lehetőséget kínálnak.

WS2812B alapú LED szalag

A címezhető LED szalagok és a szabványos LED szalagok közötti különbségek RGB a Az egyes elemek fényereje és színaránya külön-külön szabályozható. Ez olyan fényhatások elérését teszi lehetővé, amelyek más típusú világítótestek esetében nem állnak rendelkezésre. A címezhető LED-szalag vezérlése a jól ismert módon - impulzusszélesség-modulációval - történik. A rendszer jellemzője, hogy minden LED saját PWM-vezérlővel van felszerelve. A WS2812B chip egy három színű fénykibocsátó dióda és egy vezérlőáramkör, egy csomagban egyesítve.

Hogyan csatlakoztassuk a WS2812B LED-es címezhető szalagot az Arduino-hoz?
A LED külső nézete a meghajtóval.

Az elemek párhuzamosan vannak csatlakoztatva a tápegységhez, és soros buszon keresztül vezéreltek - az első elem kimenete a második elem vezérlőbemenetéhez van csatlakoztatva stb. A legtöbb esetben a soros buszok két vonalra épülnek, amelyek közül az egyik a strobes (órajelek), a másik pedig az adatok átvitelére szolgál.

A címezhető szalag megjelenése.
A címezhető szalag megjelenése.

A WS2812B vezérlőbusz egy vonalból áll - ez az adatátvitelre szolgál. Az adatokat állandó frekvenciájú, de különböző frekvenciájú impulzusokként kódolják. Egy impulzus egy bit.. Az egyes bitek időtartama 1,25 µs, a nulla bit egy 0,4 µs hosszúságú magas és egy 0,85 µs hosszúságú alacsony szintből áll. Az egység 0,8µs magas és 0,45µs alacsony szintként jelenik meg. Minden egyes LED-re 24 bit (3 bájt) csomagot küldünk, amelyet 50 µs hosszúságú szünet követ alacsony szintként. Ez azt jelenti, hogy a következő LED adatai kerülnek továbbításra, és így tovább a lánc összes elemére. Az adatátvitel 100 µs szünettel zárul. Ez azt jelenti, hogy a szalag programozási ciklusa befejeződött, és a következő adatcsomagok elküldhetők.

A címezhető szalag vezérlő adatai.
Adatok a címszalag vezérléséhez.

Ez a protokoll lehetővé teszi, hogy az adatátvitelhez egyetlen vezeték nélkülözhető legyen, de pontos időzítést igényel. Legfeljebb 150 ns eltérés megengedett. Ezen kívül ennek a busznak a zajvédelem nagyon alacsony. Bármilyen megfelelő amplitúdójú interferenciát a vezérlő adatként érzékelhet. Ez korlátozza a vezérlőáramkörből származó vezetékek hosszát. Másrészt lehetőséget biztosít a következőkre a szíj megfelelő működésének ellenőrzése további eszközök nélkül. Ha a lámpatestre áramot kapcsolnak, és egy ujj hozzáér a vezérlőbusz érintkezési felületéhez, előfordulhat, hogy néhány LED véletlenszerűen kigyullad, majd kialszik.

A WS2812B elemek műszaki jellemzői

A címezhető szalagokkal ellátott világítási rendszerek létrehozásához ismernie kell a fénykibocsátó elemek fontos paramétereit.

LED méretek5x5 mm
PWM modulációs frekvencia400 Hz
Áramfelvétel maximális fényerőnél60mA elemenként
Tápfeszültség5 volt
Szakértői tanácsadás
A lámpatest energiafogyasztása meglehetősen magas. Ezt nemcsak az izzó p-n-csomópont beindításához szükséges áram határozza meg, hanem a PWM-alakítás során fellépő kapcsolási veszteségek is. Egy 15 elemes lámpatest esetében a tápegységet és a vezetékeket legalább 1 amper áramra tervezték.

Arduino és WS2812B

A világszerte népszerű Arduino platform lehetővé teszi vázlatok (programok) készítését a címezhető szalagok vezérlésére. A rendszer képességei elég széleskörűek, de ha bármelyik szinten már nem elegendőek, a megszerzett készségek elegendőek ahhoz, hogy zökkenőmentesen át lehessen váltani C++-ra vagy akár Assemblerre. Bár az alapvető ismereteket könnyebb az Arduinóról megszerezni.

WS2812B alapú szalag csatlakoztatása egy Arduino Uno (Nano) szalagra

Eleinte elegendő egy egyszerű Arduino Uno vagy Arduino Nano kártya. A későbbiekben bonyolultabb táblákat lehet felhasználni összetettebb rendszerek építéséhez. Amikor fizikailag csatlakoztatjuk a címezhető LED-csíkot az Arduino laphoz, meg kell győződnünk arról, hogy néhány feltétel teljesül:

  • Az alacsony zajvédelem miatt az adatvezeték csatlakozóvezetékeinek a lehető legrövidebbnek kell lenniük (próbálja meg 10 cm-en belül tartani őket);
  • Csatlakoztassa az adatvezetéket az Arduino kártya egy szabad digitális kimenetéhez - ezt később a szoftver fogja jelezni;
  • A nagy energiafogyasztás miatt a szalagot nem szükséges a lapról táplálni - erre a célra külön tápegységek állnak rendelkezésre.

A szalag és az Arduino közötti közös tápvezetéket csatlakoztatni kell.

WS2812B kapcsolási rajz.
A WS2812B szalag kapcsolási rajza.

Olvassa el továbbá

Hogyan csatlakoztassuk a LED-et az Arduino kártyához?

 

A WS2812B szoftveres vezérlés alapjai

Már említettük, hogy a WS2812B chip vezérléséhez bizonyos hosszúságú impulzusokat kell nagy pontossággal generálni. Az Arduino nyelvében vannak parancsok a rövid impulzusok kialakítására delayMicroseconds и micros. A probléma az, hogy ezeknek a parancsoknak a felbontása 4 mikromásodperc. Ez azt jelenti, hogy nem lehet adott pontosságú időbeli késleltetéseket generálni. C++ vagy Assembler eszközöket kell használni. A címezhető LED-szalagot az Arduino segítségével is lehet vezérelni a kifejezetten erre a célra létrehozott könyvtárak segítségével. A bevezetés a Blink programmal kezdődik, amely a fénykibocsátó elemeket villogtatja.

FastLed .

Ez a könyvtár sokoldalú. A címezhető szalag mellett számos eszközt támogat, beleértve az SPI vezérelt szalagokat is. Nagyon erős.

Először a könyvtárat kell csatlakoztatnia. Ez a beállítási blokk előtt történik, és a karakterlánc így néz ki:

#include .

A következő lépés egy tömb létrehozása az egyes fénykibocsátó diódák színeinek tárolására. A neve szalag és a mérete 15 - az elemek száma szerint (jobb, ha ehhez a paraméterhez egy konstansot rendelünk).

CRGB szalag[15]

A beállítási blokkban meg kell adnia a sávot, amellyel a szkript működni fog:

void setup() {

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

int g;

}

Az RGB paraméter a színek váltakozásának sorrendjét határozza meg, a 15 a LED-ek számát jelenti, a 7 a vezérléshez rendelt kimenet száma (az utolsó paraméterhez is jobb egy konstans értéket rendelni).

A ciklusblokk egy olyan hurokkal kezdődik, amely szekvenciálisan ír a Red (piros izzás) tömb minden egyes szakaszába:

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

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

Ezután a generált tömböt elküldi a lámpatestnek:

FastLED.show();

Késleltetés 1000 milliszekundum (egy másodperc):

delay(1000);

Ezután minden elem ugyanúgy kikapcsolható, ha feketével írjuk be őket.

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

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

FastLED.show();

delay(1000);

FastLed alapú villogó szalag vázlata.
Egy FastLed alapú villogó szalag vázlata.

A vázlat összeállítása és betöltése után a szalag 2 másodpercig villogni fog. Ha minden egyes színkomponenst külön-külön akarsz vezérelni, akkor a string helyett {strip[g]=CRGB::Red;} több karakterláncot használnak:

{

strip[g].r=100;// a piros elem lumineszcencia szintjének beállítása

strip[g].g=11;// ugyanez a zöld esetében

strip[g].b=250;// ugyanez a kék esetében

}

NeoPixel

Ez a könyvtár csak a NeoPixel Ring LED-ekkel működik, de kevésbé erőforrás-igényes, és csak a legszükségesebbeket tartalmazza. Arduino nyelven a program így néz ki:

#include .

Az előző esethez hasonlóan, a könyvtárat beillesztjük, és a lenta objektumot deklaráljuk:

Adafruit_NeoPixel lenta=Adafruit_NeoPixel(15, 6);// Ahol 15 az elemek száma és 6 a hozzárendelt kimenet.

A lenta inicializálása a beállítási blokkban történik:

void setup() {

lenta.begin ()

}

A ciklusblokkban minden elem pirosan világít, egy változót adunk át a szalagnak, és létrehozunk egy 1 másodperces késleltetést:

for (int y=0; y<15;y++)// 15 - a lenta elemeinek száma

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

{lenta.show();

delay(1000);

A lenta már nem világít feketén:

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

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

lenta.show();

delay(1000);

NeoPixel alapú Blink program vázlata.
A NeoPixel alapú Blink program vázlata.

Videólecke: Példák a címezhető szalagokat használó vizuális effektekre.

Ha már megtanulta, hogyan kell LED-eket villogtatni, tovább tanulhatja a színhatások létrehozását, beleértve a népszerű szivárványt és az északi fényt is, zökkenőmentes átmenetekkel. A WS2812B és az Arduino címezhető LED-ek szinte korlátlan lehetőségeket biztosítanak erre.

Megjegyzések:
Még nincs hozzászólás. Legyen az első!

Tippek az olvasáshoz

Hogyan kell javítani a LED-es lámpatestet magad