ElectroBest
tagasi

Kuidas ühendada WS2812B adresseeritav LED-riba Arduinoga

Avaldatud: 02.08.2021
0
2578

LED-põhise valgustustehnoloogia areng jätkub hoogsalt. Eile tundus imena, et puldiga juhitavad RGB lindid, mille heledust ja värvi saab puldiga reguleerida. Tänapäeval on turul veelgi rohkem võimalusi.

LED-riba WS2812B baasil

Adresseeritava LED-riba erinevused standardsest RGB on see Iga elemendi heledus ja värvisuhe on reguleeritavad eraldi. See võimaldab teil saada valgusefekte, mis pole muud tüüpi valgustusseadmete jaoks saadaval. LED-riba juhitakse tuntud viisil - impulsi laiuse modulatsiooniga. Süsteemi eripära on see, et igal LED-il on oma PWM-kontroller. WS2812B kiip on kolmevärviline valgusdiood ja juhtahel, mis on ühendatud ühes pakendis.

Kuidas ühendada WS2812B aadressiga LED-riba Arduinoga
LED-i välimus koos draiveriga.

Elemendid ühendatakse paralleelselt toiteplokil lindiks ja neid juhitakse jadasiini kaudu - esimese elemendi väljund on ühendatud teise juhtsisendiga jne. Enamasti on jadasiinid ehitatud kahele liinile, millest üks edastab strobe (sünkroonseid impulsse) ja teine ​​andmeid.

Adresseeritava riba välimus.
Aadressilindi välimus.

WS2812B kiibi juhtsiin koosneb ühest reast – see edastab andmeid.Andmed kodeeritakse konstantse sagedusega, kuid erineva sagedusega impulssidena. Üks impulss on üks bitt. Iga biti kestus on 1,25 µs, nullbitt koosneb kõrgest tasemest 0,4 µs ja madalast tasemest 0,85 µs. Seadme maksimum on 0,8 µs ja madalaim 0,45 µs. Igale LED-ile saadetakse 24-bitine (3 baiti) pakett, millele järgneb paus madala taseme kujul 50 µs. See tähendab, et järgmisena edastatakse andmed järgmise LED-i ja nii edasi kõigi ahela elementide kohta. Andmeedastus lõpeb 100 µs pausiga. See tähendab, et lindi programmeerimise tsükkel on lõppenud ja järgmise andmepakettide komplekti saab saata.

Adresseeritava lindi juhtandmed.
Andmed aadressilindi juhtimiseks.

See protokoll võimaldab andmeedastuseks kasutada ühte rida, kuid nõuab täpset ajastust. Erinevus ei ole suurem kui 150 ns. Lisaks on selle bussi mürakindlus väga madal. Kontroller võib tajuda andmetena kõiki piisava amplituudiga häireid. See seab piirangud juhtahelast väljuvate juhtmete pikkusele. Teisest küljest annab see võimaluse et kontrollida, kas lint ilma lisaseadmeteta. Kui lülitate valgusti voolu sisse ja puudutate sõrmega juhtsiini kontakti, võivad mõned LED-id kaootiliselt sisse ja välja lülituda.

WS2812B elementide tehnilised omadused

Adresseeritava lindi baasil valgustussüsteemide loomiseks on vaja teada valgust kiirgavate elementide olulisi parameetreid.

LED mõõtmed5x5 mm
PWM modulatsiooni sagedus400 Hz
Praegune tarbimine maksimaalse heledusega60 mA elemendi kohta
Toitepinge5 volti
Ekspertnõuanded
Valgusti tarbitav võimsus on üsna suur. Seda ei määra mitte ainult hõõguva p-n-siirde käivitamiseks vajalik vool, vaid ka lülituskaod PWM-i moodustamisel. 15 elemendist koosneva võrgu jaoks on toiteallikas ja juhtmed ette nähtud vähemalt 1 amprise voolu jaoks.

Arduino ja WS2812B

Maailmas populaarne Arduino platvorm võimaldab luua visandeid (programme) adresseeritavate lintide juhtimiseks. Süsteemi võimalused on piisavalt laiad, aga kui neist mingil tasemel enam ei piisa, siis piisab omandatud oskustest, et sujuvalt C++ või isegi assembleri peale üle minna. Arduino põhiteadmisi on siiski lihtsam omandada.

WS2812B-põhise lindi ühendamine Arduino Unoga (Nano)

Esimesel etapil piisab lihtsast Arduino Uno või Arduino Nano plaadist. Hiljem saab keerukamaid tahvleid kasutada keerukamate süsteemide ehitamiseks. Kui ühendate adresseeritava LED-riba füüsiliselt Arduino plaadiga, peate veenduma, et on täidetud mõned tingimused:

  • madala mürakindluse tõttu peaksid andmeliinide ühendusjuhtmed olema võimalikult lühikesed (proovige teha 10 cm piires);
  • Ühendage andmejuhe Arduino plaadi vaba digitaalse väljundiga – hiljem annab tarkvara sellest märku;
  • Suure voolutarbimise tõttu ei ole vaja riba plaadilt toita - selleks on ette nähtud eraldi toiteallikad.

Vaja on ühendada valgusti ja Arduino ühine toitejuhe.

WS2812B ühendusskeem.
WS2812B lindi juhtmestiku skeem.

Loe ka

Kuidas ühendada LED Arduino plaadiga

 

WS2812B tarkvara juhtimise põhialused

Juba mainitud, et WS2812B kiipide juhtimiseks peate moodustama teatud pikkusega impulsse, mis peavad vastu suurele täpsusele. Arduino keeles on käsud lühikeste impulsside moodustamiseks viivitusMikrosekundid и mikros. Probleem on selles, et nende käskude eraldusvõime on 4 mikrosekundit. See tähendab, et ajaviiteid ei ole võimalik etteantud täpsusega moodustada. Vaja on minna C++ või Assembleri tööriistadesse. Adresseeritavat LED-riba on võimalik juhtida Arduino kaudu spetsiaalselt selleks loodud raamatukogude abil. Alustada võib programmiga Blink, mis paneb valgust kiirgavad elemendid vilkuma.

FastLed

See raamatukogu on universaalne. Lisaks adresseeritavale lindile toetab see paljusid seadmeid, sealhulgas SPI-ga juhitavaid linte. Sellel on lai valik funktsioone.

Kõigepealt peate raamatukogu ühendama. Seda tehakse enne häälestusplokki ja string näeb välja järgmine:

#kaasa

Järgmine samm on luua massiiv iga valgusdioodi värvide salvestamiseks. Selle nimeriba ja mõõtmed on 15 elementi.

CRGB riba[15]

Seadistusplokis peate määrama lindi, millega skript töötab:

void setup() {

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

int g;

}

RGB parameeter määrab värvide jada, 15 tähendab LED-ide arvu, 7 on juhtimiseks määratud väljundi number (parem on määrata konstant ka viimasele parameetrile).

Silmusplokk algab tsükliga, mis kirjutab järjestikku punase (punase kuma) massiivi igasse sektsiooni:

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

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

Seejärel saadetakse genereeritud massiiv illuminaatorisse:

FastLED.show();

Viivitus 1000 millisekundit (sekundites):

viivitus(1000);

Seejärel saate kõik elemendid samamoodi välja lülitada, kirjutades neisse musta värvi.

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

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

FastLED.show();

viivitus(1000);

FastLedil põhinev vilkuva riba visand.
FastLedil põhineva vilkuriba visand.

Pärast visandi koostamist ja laadimist vilgub lint 2 sekundit. Kui soovite iga värvikomponenti eraldi juhtida, siis stringi asemel {strip[g]=CRGB::Punane;} kasutatakse mitut stringi:

{

riba[g].r=100;// määrata punase elemendi luminestsentsi tase

riba[g].g=11;// sama ka rohelisega

riba[g].b=250;// sama ka sinisega

}

NeoPixel

See teek töötab ainult NeoPixel Ring LED-idega, kuid see on vähem ressursimahukas ja sisaldab ainult hädavajalikku. Arduinos näeb programm välja selline:

#kaasa

Nagu eelmisel juhul, on teek ühendatud ja lenta objekt deklareeritakse:

Adafruit_NeoPixel lenta=Adafruit_NeoPixel(15, 6);// Kus 15 on elementide arv ja 6 on määratud väljund

Lenta lähtestatakse häälestusplokis:

void setup() {

lenta.begin ()

}

Silmusplokis põlevad kõik elemendid punaselt, muutuja edastatakse lindile ja luuakse 1-sekundiline viivitus:

jaoks (int y=0; y<15;y++)// 15 - elementide arv valgustis

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

lenta.show();

viivitus(1000);

Lenta lõpetab hõõgumise, kirjutades mustaks:

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

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

lenta.show();

viivitus(1000);

NeoPixelil põhineva programmi Blink visand.
NeoPixel-põhise Blinki programmi visand.

Videotund: visuaalsete efektide näidised adresseeritavate paelte abil.

Pärast LED-lampide vilkumise õppimist saate jätkata õppetundi ja õppida, kuidas luua värviefekte, sealhulgas populaarseid sujuvate üleminekutega "Vikerkaar" ja "virmalised". WS2812B ja Arduino adresseeritavad LED-id annavad teile selleks peaaegu piiramatud võimalused.

Kommentaarid:
Kommentaarid veel puuduvad. Ole esimene!

Näpunäiteid lugemiseks

Kuidas LED-valgustit ise parandada