ElectroBest
Takaisin

WS2812B-osoitteellisen LED-nauhan liittäminen Arduinoon

Julkaistu: 02.08.2021
0
2578

LED-pohjaisen valaistustekniikan kehitys jatkuu vauhdilla. Eiliseen asti ohjaimella ohjattavat RGB-nauhat, joiden kirkkautta ja väriä voi säätää kaukosäätimellä, tuntuivat ihmeiltä. Nykyään markkinoilla on uusia valaisimia, joilla on vielä enemmän mahdollisuuksia.

WS2812B:hen perustuva LED-nauha

Osoitteistettavien LED-nauhojen ja tavallisten LED-nauhojen väliset erot RGB on Kunkin elementin kirkkaus ja värisuhde on säädettävissä erikseen.. Tämän ansiosta voidaan saavuttaa valaistustehosteita, joita ei ole saatavilla muun tyyppisillä valaisimilla. Osoitteellista LED-nauhaa ohjataan tunnetulla tavalla - pulssinleveysmodulaation avulla. Järjestelmän erityispiirteenä on, että jokainen LED on varustettu omalla PWM-ohjaimella. WS2812B-siru on kolmivärinen valodiodi ja ohjauspiiri, jotka on yhdistetty yhteen pakkaukseen.

WS2812B LED-osoitettavan nauhan liittäminen Arduinoon WS2812B LED-osoitettavan nauhan liittäminen Arduinoon
LEDin ja ohjaimen ulkoasu.

Elementit on kytketty rinnakkain virtalähteeseen ja niitä ohjataan sarjaväylän kautta - ensimmäisen elementin lähtö on kytketty toisen elementin ohjaustuloon jne. Useimmissa tapauksissa sarjaväylät rakentuvat kahdesta linjasta, joista toinen lähettää strobeja (kellopulsseja) ja toinen dataa.

Osoitteellisen nauhan ulkonäkö.
Osoitteellisen nauhan ulkonäkö.

WS2812B:n ohjausväylä koostuu yhdestä rivistä - sitä käytetään tiedonsiirtoon. Tiedot koodataan pulsseina, joiden taajuus on vakio, mutta joiden taajuudet vaihtelevat. Yksi pulssi on yksi bitti.. Kunkin bitin kesto on 1,25 µs, nollabitti koostuu 0,4 µs:n korkeasta tasosta ja 0,85 µs:n matalasta tasosta. Yksikkö näkyy korkeana tasona 0,8 µs ja matalana tasona 0,45 µs. Kullekin LEDille lähetetään 24 bitin (3 tavua) paketti, jonka jälkeen seuraa 50 µs:n tauko matalana tasona. Tämä tarkoittaa, että seuraavan LEDin tiedot lähetetään seuraavaksi, ja niin edelleen ketjun kaikkien elementtien osalta. Tiedonsiirto päättyy 100 µs:n taukoon. Tämä tarkoittaa, että nauhan ohjelmointisykli on päättynyt ja seuraavat datapaketit voidaan lähettää.

Ohjaustiedot osoitteellista nauhaa varten.
Tiedot osoitenauhan ohjausta varten.

Tämä protokolla mahdollistaa yhden linjan käytön tiedonsiirrossa, mutta vaatii tarkkaa ajoitusta. Poikkeama saa olla enintään 150 ns. Lisäksi tämän väylän häiriönsietokyky on hyvin heikko. Valvoja voi havaita kaikki riittävän voimakkaat häiriöt datana. Tämä asettaa rajoituksia ohjauspiirin johtimien pituuksille. Toisaalta se tarjoaa mahdollisuuden, että hihnan oikean toiminnan tarkistaminen ilman lisälaitteita. Jos valaisimeen kytketään virta ja sormi koskettaa ohjausväylän kosketusaluetta, jotkin LEDit saattavat syttyä ja sammua satunnaisesti.

WS2812B-elementtien tekniset ominaisuudet

Jotta voit luoda valaistusjärjestelmiä, joissa on osoitteellisia nauhoja, sinun on tunnettava valoa säteilevien elementtien tärkeät parametrit.

LEDin mitat5x5 mm
PWM-modulaatiotaajuus400 Hz
Virrankulutus suurimmalla kirkkaudella60mA per elementti
Syöttöjännite5 volttia
Asiantuntijan neuvoja
Valaisimen virrankulutus on melko korkea. Se määräytyy paitsi hehkuvan p-n-liitoksen käynnistämiseen tarvittavan virran myös PWM-muotoilun aikana tapahtuvien kytkentähäviöiden perusteella. 15 elementin valaisimessa virtalähde ja johtimet on suunniteltu vähintään 1 ampeerin virralle.

Arduino ja WS2812B

Maailmanlaajuisesti suosittu Arduino-alusta mahdollistaa luonnosten (ohjelmien) luomisen osoitteellisten nauhojen ohjaamiseen. Järjestelmän valmiudet ovat riittävän laajat, mutta jos ne eivät jollakin tasolla enää riitä, saadut taidot riittävät saumattomaan siirtymiseen C++:aan tai jopa assembleriin. Tosin perustiedot on helpompi hankkia Arduinosta.

WS2812B-pohjaisen nauhan liittäminen Arduino Uno (Nano) -laitteeseen.

Aluksi riittää yksinkertainen Arduino Uno- tai Arduino Nano -alusta. Myöhemmin monimutkaisempia piirilevyjä voidaan käyttää monimutkaisempien järjestelmien rakentamiseen. Kun osoitteellinen LED-nauha liitetään fyysisesti Arduino-levyyn, on varmistettava, että muutama ehto täyttyy:

  • Heikon häiriönsietokyvyn vuoksi datajohdon liitäntäjohtimien on oltava mahdollisimman lyhyitä (yritä saada ne 10 cm:n päähän);
  • Kytke datajohto Arduino-levyn vapaaseen digitaaliseen lähtöön - ohjelmisto ilmoittaa sen myöhemmin;
  • Suuren virrankulutuksen vuoksi liuskaa ei ole tarpeen syöttää virtalähteenä piirilevystä - tätä tarkoitusta varten on erilliset virtalähteet.

Liuskan ja Arduinon välinen yhteinen virtalähdejohto on kytkettävä.

Kytkentäkaavio WS2812B.
WS2812B-nauhan kytkentäkaavio.

Lue myös

Miten LED liitetään Arduino-levyyn?

 

WS2812B-ohjelmiston ohjauksen perusteet

On jo mainittu, että WS2812B-sirun ohjaamiseksi on tarpeen tuottaa tietyn pituisia pulsseja suurella tarkkuudella. Arduino-kielessä on komentoja lyhyiden pulssien muodostamiseksi. delayMicroseconds и micros. Ongelmana on, että näiden komentojen resoluutio on 4 mikrosekuntia. Tämä tarkoittaa, että aikaviiveitä ei ole mahdollista tuottaa tietyllä tarkkuudella. On tarpeen käyttää C++- tai Assembler-työkaluja. LED-nauhaa on myös mahdollista ohjata Arduinon kautta erityisesti tätä tarkoitusta varten luotujen kirjastojen avulla. Käyttöönotto alkaa Blink-ohjelmalla, joka saa valoa säteilevät elementit vilkkumaan.

FastLed .

Tämä kirjasto on monipuolinen. Osoitteellisen nauhan lisäksi se tukee monia laitteita, kuten SPI-ohjattuja nauhoja. Se on hyvin voimakas.

Ensin sinun on yhdistettävä kirjasto. Tämä tehdään ennen setup-lohkoa, ja merkkijono näyttää tältä:

#include .

Seuraavaksi luodaan joukko, johon tallennetaan kunkin valodiodin värit. Sen nimi on strip ja ulottuvuus 15 - elementtien lukumäärä (on parempi antaa tälle parametrille vakio).

CRGB-nauhat[15]

Setup-lohkossa sinun on määriteltävä kaista, jonka kanssa skripti toimii:

void setup() {

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

int g;

}

RGB-parametrilla asetetaan värien vuorottelujärjestys, 15 tarkoittaa LEDien lukumäärää, 7 on ohjaukseen määritetyn lähdön numero (viimeiselle parametrille on parempi määrittää myös vakio).

Silmukkalohko alkaa silmukalla, joka kirjoittaa peräkkäin jokaiseen Red (punainen hehku) -matriisin osaan:

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

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

Tämän jälkeen luotu ryhmä lähetetään valaisimeen:

FastLED.show();

Viive 1000 millisekuntia (yksi sekunti):

delay(1000);

Tämän jälkeen kaikki elementit voidaan kytkeä pois päältä samalla tavalla, kirjoittamalla niihin mustaa.

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

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

FastLED.show();

delay(1000);

FastLediin perustuvan vilkkuvan nauhan luonnos.
FastLed-pohjaisen vilkkukaistan luonnos.

Kun luonnos on käännetty ja ladattu, nauha vilkkuu 2 sekunnin ajan. Jos haluat ohjata jokaista värikomponenttia erikseen, niin merkkijonon {strip[g]=CRGB::Red;} käytetään useita merkkijonoja:

{

strip[g].r=100;// asettaa punaisen elementin luminesenssitason.

strip[g].g=11;// sama koskee vihreää

strip[g].b=250;// sama sininen

}

NeoPixel

Tämä kirjasto toimii vain NeoPixel Ring LEDien kanssa, mutta se on vähemmän resursseja vaativa ja sisältää vain välttämättömät osat. Arduino-kielellä ohjelma näyttää tältä:

#include .

Kuten edellisessäkin tapauksessa, kirjasto sisällytetään ja lenta-objekti ilmoitetaan:

Adafruit_NeoPixel lenta=Adafruit_NeoPixel(15, 6);// Jossa 15 on elementtien lukumäärä ja 6 on määritetty lähtöarvo.

Lenta alustetaan asetuslohkossa:

void setup() {

lenta.begin ()

}

Silmukkalohkossa kaikki elementit syttyvät punaisina, nauhalle siirretään muuttuja ja luodaan 1 sekunnin viive:

for (int y=0; y<15;y++)// 15 - elementtien lukumäärä lentsassa

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

{lenta.show();

delay(1000);

Lenta lakkaa hehkumasta mustana:

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

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

lenta.show();

delay(1000);

Luonnos NeoPixeliin perustuvalle Blink-ohjelmalle.
Luonnos NeoPixel-pohjaiselle Blink-ohjelmalle.

Videotunti: Esimerkkejä visuaalisista efekteistä, joissa käytetään osoitteellisia nauhoja.

Kun olet oppinut vilkuttamaan LED-valoja, voit jatkaa opettelemalla luomaan väritehosteita, kuten suosittuja sateenkaari- ja revontulitehosteita, joissa on sulavat siirtymät. WS2812B ja Arduinon osoitteelliset LEDit tarjoavat tähän lähes rajattomat mahdollisuudet.

Kommentit:
Ei vielä kommentteja. Ole ensimmäinen!

Vinkkejä lukemiseen

Miten korjata LED-valaisin itse