ElectroBest
Tillbaka

Hur man ansluter en WS2812B adresserbar LED-strip till en Arduino

Publicerad: 02.08.2021
0
2578

Utvecklingen av LED-baserad belysningsteknik går snabbt framåt. Fram till igår verkade styrda RGB-band vars ljusstyrka och färg kan justeras med fjärrkontrollen som ett mirakel. Idag finns det nya armaturer på marknaden med ännu fler möjligheter.

LED-remsa baserad på WS2812B

Skillnaderna mellan adresserbara LED-remsor och vanliga LED-remsor RGB är den Ljusstyrkan och färgförhållandet för varje element kan justeras separat.. Detta gör det möjligt att uppnå ljuseffekter som inte är möjliga med andra typer av belysningsarmaturer. Den adresserbara LED-strängen styrs på ett välkänt sätt - med hjälp av pulsbreddsmodulering. En funktion i systemet är att varje lysdiod är utrustad med en egen PWM-regulator. WS2812B-chippet är en trefärgs lysdiod och en styrkrets i ett paket.

Hur man ansluter WS2812B LED-adresserbar remsa till Arduino
Utvändig vy av lysdioden med drivrutin.

Elementen är parallellt anslutna till strömförsörjningen och styrs via en seriell buss - det första elementets utgång är ansluten till det andra elementets styringskanal osv. I de flesta fall är de seriella bussarna uppbyggda på två linjer, varav den ena överför strobes (klockpulser) och den andra data.

Utseendet på det adresserbara bandet.
Utseendet på det adresserbara bandet.

WS2812B:s styrbuss består av en linje - den används för att överföra data. Uppgifterna kodas som pulser med konstant frekvens men med olika frekvenser. En puls är en bit.. Varaktigheten för varje bit är 1,25 µs, nollbiten består av en hög nivå på 0,4 µs och en låg nivå på 0,85 µs. Enheten visas som en hög nivå på 0,8 µs och en låg nivå på 0,45 µs. Ett paket med 24 bitar (3 bytes) skickas till varje lysdiod, följt av en paus som en låg nivå i 50 µs. Detta innebär att data för nästa lysdiod kommer att sändas nästa gång, och så vidare för alla element i kedjan. Dataöverföringen avslutas med en paus på 100 µs. Detta innebär att bandprogrammeringscykeln är avslutad och att nästa uppsättning datapaket kan skickas.

Styrdata för det adresserbara bandet.
Data för adressbandskontroll.

Detta protokoll gör det möjligt att avstå från en enda linje för dataöverföring, men kräver exakt timing. En avvikelse på högst 150 ns är tillåten. Dessutom är bullerimmuniteten hos denna buss mycket låg. Alla störningar med tillräcklig amplitud kan uppfattas som data av den personuppgiftsansvarige. Detta innebär begränsningar för ledarlängderna från styrkretsen. Å andra sidan ger den möjlighet att för att kontrollera att bältet fungerar korrekt utan ytterligare utrustning. Om armaturen är strömförsörjd och ett finger rör vid kontaktytan för styrbussen kan vissa lysdioder lysa och slockna slumpmässigt.

Tekniska egenskaper hos WS2812B-elementen

För att skapa belysningssystem med adresserbara band måste du känna till de viktiga parametrarna för de ljusalstrande elementen.

LED-mått5x5 mm
PWM-moduleringsfrekvens400 Hz
Strömförbrukning vid maximal ljusstyrka60 mA per element
Matningsspänning5 volt
Expertrådgivning
Armaturens energiförbrukning är ganska hög. Den bestäms inte bara av den ström som krävs för att initiera p-n-övergången, utan också av växlingsförlusterna under PWM-formningen. För en armatur med 15 element är strömförsörjningen och ledarna konstruerade för en strömstyrka på minst 1 ampere.

Arduino och WS2812B

Den världspopulära Arduino-plattformen gör det möjligt att skapa skisser (program) för att styra adresserbara band. Systemets möjligheter är tillräckligt omfattande, men om de på någon nivå inte längre är tillräckliga, kommer de färdigheter som erhållits att vara tillräckliga för att smidigt byta till C++ eller till och med till assembler. Det är dock lättare att få grundläggande kunskaper från Arduino.

Anslutning av ett WS2812B-baserat band till en Arduino Uno (Nano)

Till att börja med räcker det med ett enkelt Arduino Uno- eller Arduino Nano-kort. Senare kan mer komplexa styrelser användas för att bygga mer komplexa system. När du fysiskt ansluter den adresserbara LED-remsan till Arduinokortet måste du se till att några villkor är uppfyllda:

  • På grund av den låga störningsimmuniteten bör anslutningsledarna för datalinjen vara så korta som möjligt (försök att hålla dem inom 10 cm);
  • Anslut dataledningen till en fri digital utgång på Arduinokortet - den kommer att anges senare av programvaran;
  • På grund av den höga strömförbrukningen är det inte nödvändigt att strömförsörja remsan från kortet - separata strömförsörjningar finns för detta ändamål.

Den gemensamma strömförsörjningsledningen mellan remsan och Arduino måste vara ansluten.

Kopplingsschema WS2812B.
Kopplingsschema för WS2812B-remsan.

Läs också

Hur man ansluter lysdioden till Arduinokortet

 

Grunderna för WS2812B mjukvarukontroll

Det har redan nämnts att för att styra WS2812B-chippet är det nödvändigt att generera pulser av en viss längd med hög precision. I Arduino-språket finns det kommandon för att skapa korta pulser. delayMicroseconds и mikros. Problemet är att upplösningen för dessa kommandon är 4 mikrosekunder. Detta innebär att det inte är möjligt att bilda tidsfördröjningarna med en viss noggrannhet. Det är nödvändigt att använda C++- eller Assembler-verktyg. Det går också att styra LED-remsan via Arduino med hjälp av bibliotek som skapats speciellt för detta ändamål. Introduktionen börjar med Blink, ett program som får de ljusalstrande elementen att blinka.

FastLed .

Det här biblioteket är mångsidigt. Förutom det adresserbara bandet har den stöd för många enheter, inklusive SPI-styrda band. Den är mycket kraftfull.

Först måste du ansluta biblioteket. Detta görs före inställningsblocket, och strängen ser ut så här:

#include .

Nästa steg är att skapa en array för att lagra färgerna för varje lysdiod. Den kommer att ha namnet strip och dimensionen 15 - med antalet element (det är bättre att tilldela en konstant till denna parameter).

CRGB-remsa[15]

I inställningsblocket måste du ange det band som skriptet ska arbeta med:

void setup() {

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

int g;

}

RGB-parametern anger ordningen för växling av färgerna, 15 är antalet lysdioder, 7 är numret på den utgång som ska styras (det är bättre att tilldela en konstant även till den sista parametern).

Loop-blocket börjar med en loop som sekventiellt skriver till varje sektion av Red (röd glöd) arrayen:

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

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

Därefter skickas den genererade matrisen till armaturen:

FastLED.show();

Fördröjning 1000 millisekunder (en sekund):

fördröjning(1000);

Sedan kan alla element stängas av på samma sätt, genom att skriva svart i dem.

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

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

FastLED.show();

fördröjning(1000);

Skiss för blinkande tejp baserad på FastLed.
En skiss för en FastLed-baserad blinkande remsa.

När skissen har kompilerats och laddats kommer bandet att blinka i 2 sekunder. Om du vill styra varje färgkomponent separat kan du istället för strängen {strip[g]=CRGB::Red;} flera strängar används:

{

strip[g].r=100;// ställa in luminescensnivån för det röda elementet

strip[g].g=11;// Samma sak för grönt.

strip[g].b=250;// samma sak för blått

}

NeoPixel

Det här biblioteket fungerar bara med NeoPixel Ring LED:s, men det är mindre resurskrävande och innehåller bara det viktigaste. På Arduino-språk ser programmet ut så här:

#include .

Liksom i det föregående fallet inkluderas biblioteket och lenta-objektet deklareras:

Adafruit_NeoPixel lenta=Adafruit_NeoPixel(15, 6);// Där 15 är antalet element och 6 är den tilldelade utgången.

Lenta initialiseras i inställningsblocket:

void setup() {

lenta.begin ()

}

I loopblocket lyser alla element rött, en variabel skickas till bandet och en 1 sekunds fördröjning skapas:

for (int y=0; y<15;y++)// 15 - antal element i lenta

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

{lenta.show();

fördröjning(1000);

Lenta slutar att lysa svart:

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

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

lenta.show();

fördröjning(1000);

Skiss till ett Blink-program baserat på NeoPixel.
En skiss för det NeoPixel-baserade Blink-programmet.

Videolektion: Exempel på visuella effekter med hjälp av adresserbara band.

När du har lärt dig hur man blinkar med lysdioder kan du fortsätta att lära dig hur man skapar färgeffekter, inklusive de populära regnbågs- och norrskenseffekterna med smidiga övergångar. WS2812B och Arduinos adresserbara lysdioder ger nästan obegränsade möjligheter till detta.

Kommentarer:
Inga kommentarer ännu. Bli den första!

Tips för läsning

Hur du reparerar LED-lampor själv