ElectroBest
Tilbage

Sådan tilsluttes en WS281212B Addressable LED Strip til en Arduino

Udgivet: 02.08.2021
0
2578

Udviklingen af LED-baseret belysningsteknologi fortsætter med stor fart. Indtil i går virkede controller-styret RGB-bånd, hvis lysstyrke og farve kan justeres med fjernbetjening, som et mirakel. I dag er der nye armaturer på markedet med endnu flere muligheder.

LED strip baseret på WS2812B

Forskellene mellem adresserbare LED-strips og standard RGB er den Lysstyrken og farveforholdet for hvert element kan justeres separat. Dette gør det muligt at opnå lyseffekter, som ikke er mulige med andre typer belysningsarmaturer. Den adresserbare LED-strimmel styres på en velkendt måde - ved hjælp af pulsbreddemodulation. Et af systemets kendetegn er, at hver LED er udstyret med sin egen PWM-controller. WS2812B-chippen er en trefarvet lysdiode og et kontrolkredsløb kombineret i én pakke.

Sådan tilslutter du WS2812B LED Addressable Strip til Arduino
Udvendig visning af LED med driver.

Elementerne er tilsluttet parallelt til strømforsyningen og styres via en seriel bus - det første elements udgang er forbundet med det andet elements kontrolindgang osv. I de fleste tilfælde er de serielle busser opbygget på to linjer, hvoraf den ene sender strobes (clockimpulser) og den anden data.

Udseendet af det adresserbare bånd.
Udseendet af det adresserbare bånd.

WS2812B's kontrolbus består af én linje - den bruges til at overføre data. Dataene er kodet som pulser med en konstant frekvens, men med forskellige frekvenser. En puls er en bit.. Varigheden af hver bit er 1,25 µs, og nulbitten består af et højt niveau på 0,4 µs og et lavt niveau på 0,85 µs. Enheden vises som et højt niveau på 0,8 µs og et lavt niveau på 0,45 µs. Der sendes en pakke på 24 bit (3 bytes) til hver LED efterfulgt af en pause som et lavt niveau i 50 µs. Det betyder, at dataene for den næste LED transmitteres som den næste og så videre for alle elementer i kæden. Dataoverførslen afsluttes med en pause på 100 µs. Dette betyder, at båndprogrammeringscyklussen er afsluttet, og at det næste sæt datapakker kan sendes.

Kontroldata for det adresserbare bånd.
Data til kontrol af adressebånd.

Denne protokol gør det muligt at undvære en enkelt linje til dataoverførsel, men kræver nøjagtig timing. En afvigelse på højst 150 ns er tilladt. Desuden er støjimmuniteten for denne bus meget lav. Enhver interferens af tilstrækkelig amplitude kan opfanges af den dataansvarlige som data. Dette medfører begrænsninger på lederlængderne fra kontrolkredsløbet. På den anden side giver det mulighed for at for at kontrollere, om bæltet fungerer korrekt uden yderligere udstyr. Hvis der er strøm til armaturet, og en finger rører ved kontaktområdet for kontrolbussen, kan nogle lysdioder lyse og slukke tilfældigt.

Tekniske egenskaber for WS2812B-elementer

For at kunne skabe belysningssystemer med adresserbare bånd skal du kende de vigtige parametre for de lysemitterende elementer.

LED-dimensioner5x5 mm
PWM-modulationsfrekvens400 Hz
Strømforbrug ved maksimal lysstyrke60 mA pr. element
Forsyningsspænding5 volt
Ekspertrådgivning
Armaturets strømforbrug er ret højt. Den bestemmes ikke kun af den strøm, der kræves til initiering af p-n-forbindelsen, men også af switchingtab under PWM-formning. For et armatur med 15 elementer er strømforsyningen og lederne konstrueret til en strømstyrke på mindst 1 ampere.

Arduino og WS2812B

Den verdensomspændende populære Arduino-platform gør det muligt at lave skitser (programmer) til styring af adresserbare bånd. Systemets muligheder er brede nok, men hvis de på et eller andet niveau ikke længere er tilstrækkelige, vil de opnåede færdigheder være tilstrækkelige til at skifte til C++ eller endog assembler uden problemer. Selv om det er lettere at få den grundlæggende viden fra Arduino.

Tilslutning af et WS2812B-baseret bånd til en Arduino Uno (Nano)

I første omgang er et simpelt Arduino Uno- eller Arduino Nano-kort tilstrækkeligt. Senere kan man bruge mere komplekse kort til at bygge mere komplekse systemer. Når du fysisk tilslutter den adresserbare LED-strimmel til Arduino-kortet, skal du sikre dig, at et par betingelser er opfyldt:

  • På grund af den lave støjimmunitet skal forbindelseslederne til datalinjen være så korte som muligt (prøv at gøre dem inden for 10 cm);
  • Tilslut datalinjen til en ledig digital udgang på Arduino-kortet - den vil blive angivet senere af softwaren;
  • På grund af det høje strømforbrug er det ikke nødvendigt at forsyne strippen med strøm fra kortet - der er separate strømforsyninger til dette formål.

Den fælles strømforsyningsledning mellem striben og Arduino skal være tilsluttet.

Ledningsdiagram WS2812B.
Ledningsdiagram for WS2812B-striben.

Læs også

Sådan tilslutter du LED'en til Arduino-kortet

 

Grundlæggende oplysninger om WS2812B softwarestyring

Det er allerede blevet nævnt, at for at kunne styre WS2812B-chippen er det nødvendigt at generere impulser af en vis længde med høj præcision. I Arduino-sproget findes der kommandoer til at danne korte impulser delayMicroseconds и mikros. Problemet er, at disse kommandoer har en opløsning på 4 mikrosekunder. Det betyder, at det ikke er muligt at generere tidsforsinkelser med en given nøjagtighed. Det er nødvendigt at bruge C++- eller Assembler-værktøjer. Det er også muligt at styre LED-striben via Arduino ved hjælp af biblioteker, der er specielt udviklet til dette formål. Introduktionen starter med Blink, et program, der får de lysemitterende elementer til at blinke.

FastLed .

Dette bibliotek er alsidigt. Ud over det adresserbare bånd understøtter den mange enheder, herunder SPI-styret bånd. Den er meget kraftfuld.

Først skal du tilslutte biblioteket. Dette gøres før opsætningsblokken, og strengen ser således ud:

#include .

Det næste skridt er at oprette et array til lagring af farverne for hver lysdiode. Den får navnet strip og dimension 15 - antal elementer (det er bedre at tildele en konstant til denne parameter).

CRGB strip[15]

I opsætningsblokken skal du angive det bånd, som scriptet skal arbejde med:

void setup() {

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

int g;

}

RGB-parameteren bestemmer rækkefølgen af vekslende farver, 15 betyder antallet af lysdioder, 7 er nummeret på den udgang, der er tildelt til styring (det er bedre at tildele en konstant til den sidste parameter).

Loop-blokken starter med en loop, der sekventielt skriver til hver sektion af Red (rød glød) arrayet:

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

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

Derefter sendes det genererede array til armaturet:

FastLED.show();

Forsinkelse 1000 millisekunder (et sekund):

delay(1000);

Derefter kan alle elementer slukkes på samme måde ved at skrive sort i dem.

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

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

FastLED.show();

delay(1000);

Skitse til blinkende bånd baseret på FastLed.
En skitse til en FastLed-baseret blinkstribe.

Når skitsen er kompileret og indlæst, blinker båndet i 2 sekunder. Hvis du ønsker at styre hver farvekomponent separat, skal du i stedet for strengen {strip[g]=CRGB::Red;} der anvendes flere strenge:

{

strip[g].r=100;// indstille det røde elements luminescensniveau

strip[g].g=11;// det samme for grøn

strip[g].b=250;// det samme for blå

}

NeoPixel

Dette bibliotek fungerer kun med NeoPixel Ring LED'er, men det er mindre ressourcekrævende og indeholder kun det vigtigste. På Arduino-sprog ser programmet således ud:

#include .

Som i det foregående tilfælde inkluderes biblioteket, og lenta-objektet deklareres:

Adafruit_NeoPixel lenta=Adafruit_NeoPixel(15, 6);// Hvor 15 er antallet af elementer og 6 er det tildelte output

Lenta initialiseres i opsætningsblokken:

void setup() {

lenta.begin ()

}

I loop-blokken lyser alle elementer rødt, der sendes en variabel til båndet, og der oprettes en 1 sekunds forsinkelse:

for (int y=0; y<15;y++)// 15 - antallet af elementer i lenta

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

{lenta.show();

delay(1000);

Lentaen holder op med at lyse sort:

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

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

lenta.show();

delay(1000);

Skitse til Blink-program baseret på NeoPixel.
En skitse til det NeoPixel-baserede Blink-program.

Videolektion: Eksempler på visuelle effekter ved hjælp af adresserbare bånd.

Når du har lært at blinke med LED'er, kan du fortsætte med at lære at skabe farveeffekter, herunder de populære regnbue- og nordlys-effekter med glidende overgange. WS2812B- og Arduino-adresserbare lysdioder giver næsten ubegrænsede muligheder for dette.

Kommentarer:
Ingen kommentarer endnu. Vær den første!

Tips til læsning

Sådan reparerer du selv LED-armaturet