lamp.housecope.com
Tillbaka

Hur man ansluter adresserbar LED-remsa WS2812B till Arduino

Publicerad: 2021-08-02
0
2578

Utvecklingen av ljusteknik baserad på lysdioder fortsätter snabbt. Igår verkade kontrollerstyrda RGB-band, vars ljusstyrka och färg kan justeras med en fjärrkontroll, som ett mirakel. Idag har det dykt upp lampor med ännu fler funktioner på marknaden.

LED-remsa baserad på WS2812B

Skillnaden mellan den adresserbara LED-remsan och den vanliga RGB saken är ljusstyrka och färgförhållande för varje element justeras separat. Detta gör att du kan få ljuseffekter som är fundamentalt otillgängliga för andra typer av belysningsenheter. Glödet från den adresserbara LED-remsan styrs på känt sätt - med hjälp av pulsbreddsmodulering. En funktion hos systemet är att utrusta varje lysdiod med sin egen PWM-kontroller. WS2812B-chippet är en trefärgad lysdiod och en styrkrets kombinerade i ett enda paket.

Hur man ansluter adresserbar LED-remsa WS2812B till Arduino
Utseendet på lysdioden med föraren.

Elementen kombineras till ett kraftband parallellt och styrs via en seriell buss - utgången på det första elementet är ansluten till styringången på det andra, etc. I de flesta fall är seriebussar byggda på två linjer, varav en sänder strober (klockpulser) och den andra - data.

Adressremsens utseende.
Adressremsens utseende.

Styrbussen för WS2812B-chippet består av en linje - data överförs genom den. Data kodas som pulser med konstant frekvens, men med olika arbetscykler. En puls - en bit. Varaktigheten för varje bit är 1,25 µs, nollbiten består av en hög nivå med en varaktighet på 0,4 µs och en låg nivå på 0,85 µs. Enheten ser ut som en hög nivå för 0,8 µs och en låg nivå för 0,45 µs. En 24-bitars (3-byte) skur skickas till varje lysdiod, följt av en lågnivåpaus i 50 µs. Detta innebär att data kommer att överföras för nästa lysdiod, och så vidare för alla delar av kedjan. Dataöverföringen avslutas med en paus på 100 µs. Detta indikerar att bandprogrammeringscykeln är klar och nästa uppsättning datapaket kan skickas.

Data för att hantera adressbandet.
Data för att hantera adressbandet.

Ett sådant protokoll gör det möjligt att klara sig med en rad för dataöverföring, men kräver noggrannhet i att upprätthålla tidsintervall. Avvikelsen tillåts inte mer än 150 ns. Dessutom är bullerimmuniteten för en sådan buss mycket låg. Varje störning med tillräcklig amplitud kan av styrenheten uppfattas som data. Detta medför begränsningar för längden på ledarna från styrkretsen. Å andra sidan gör detta det möjligt bandets hälsokontroll utan ytterligare enheter.Om du sätter på ström till lampan och rör vid kontaktplattan på kontrollbussen med fingret, kan vissa lysdioder tändas slumpmässigt och slockna.

Specifikationer för WS2812B-element

För att skapa belysningssystem baserade på ett adressband måste du känna till de viktiga parametrarna för ljusemitterande element.

LED-mått5x5 mm
PWM-modulationsfrekvens400 Hz
Strömförbrukning vid maximal ljusstyrka60 mA per cell
Matningsspänning5 volt

Arduino och WS2812B

Arduino-plattformen, populär i världen, låter dig skapa skisser (program) för att hantera adressband. Systemets möjligheter är tillräckligt breda, men om de inte längre räcker till på någon nivå kommer de förvärvade färdigheterna att räcka för att smärtfritt byta till C ++ eller till och med till assembler. Även om den initiala kunskapen är lättare att få på Arduino.

Ansluter WS2812B Ribbon till Arduino Uno (Nano)

I det första skedet räcker det med enkla Arduino Uno eller Arduino Nano-brädor. I framtiden kan mer komplexa skivor användas för att bygga mer komplexa system. När du fysiskt ansluter den adresserbara LED-remsan till Arduino-kortet måste flera villkor iakttas:

  • på grund av låg brusimmunitet bör anslutningsledarna för dataledningen vara så korta som möjligt (du bör försöka göra dem inom 10 cm);
  • du måste ansluta dataledaren till den fria digitala utgången på Arduino-kortet - den kommer då att specificeras programmatiskt;
  • på grund av hög strömförbrukning är det inte nödvändigt att driva tejpen från kortet - separata strömförsörjningar tillhandahålls för detta ändamål.

Den gemensamma strömkabeln för lampan och Arduino måste vara anslutna.

Kopplingsschema WS2812B.
WS2812B bandkopplingsschema.

Läs också

Hur man ansluter LED till Arduino-kortet

 

Grunderna för WS2812B Programkontroll

Det har redan nämnts att för att styra WS2812B-mikrokretsarna är det nödvändigt att generera pulser med en viss längd och bibehålla hög noggrannhet. Det finns kommandon i Arduino-språket för bildandet av korta pulser fördröjning Mikrosekunder och mikros. Problemet är att upplösningen för dessa kommandon är 4 mikrosekunder. Det vill säga, det kommer inte att fungera att bilda tidsfördröjningar med en given noggrannhet. Det är nödvändigt att byta till C++ eller Assembler-verktyg. Och du kan organisera kontrollen av den adresserbara LED-remsan genom Arduino med hjälp av bibliotek som är speciellt skapade för detta. Du kan börja bekanta dig med Blink-programmet som får de ljusavgivande elementen att blinka.

snabb led

Detta bibliotek är universellt. Förutom adressbandet stöder det en mängd olika enheter, inklusive band som styrs av SPI-gränssnittet. Den har breda möjligheter.

Först måste biblioteket finnas med. Detta görs före installationsblocket, och raden ser ut så här:

#include <FastLED.h>

Nästa steg är att skapa en array för att lagra färgerna på varje lysdiod. Den kommer att ha namnremsan 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 vilket band som skissen ska fungera med:

void setup() {

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

intg;

}

RGB-parametern ställer in färgsekvensordningen, 15 betyder antalet lysdioder, 7 är numret på utgången som tilldelats för kontroll (det är också bättre att tilldela en konstant till den sista parametern).

Slingblocket börjar med en loop som sekventiellt skriver till varje sektion av arrayen Röd (röd glöd):

för (g=0; g<15; g++)

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

Därefter skickas den bildade matrisen till lampan:

FastLED.show();

Fördröjning 1000 millisekunder (sekund):

fördröjning(1000);

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

för (int g=0; g<15; g++)

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

FastLED.show();

fördröjning(1000);

En skiss för ett blinkande band baserat på FastLed.
En skiss för ett blinkande band baserat på FastLed.

Efter att ha sammanställt och laddat upp skissen kommer bandet att blinka med en period på 2 sekunder. Om du behöver hantera varje färgkomponent separat, då istället för linjen {strip[g]=CRGB::Red;} flera rader används:

{

strip[g].r=100;// ställ in ljusnivå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-ringar, men det är mindre resurskrävande och innehåller bara det väsentliga. På Arduino-språket ser programmet ut så här:

#include <Adafruit_NeoPixel.h>

Som i föregående fall är biblioteket anslutet och lenta-objektet deklareras:

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

I inställningsblocket initieras bandet:

void setup() {

lenta.begin()

}

I loopblocket är alla element markerade i rött, variabeln skickas till flödet och en fördröjning på 1 sekund skapas:

för (int y=0; y<15; y++)// 15 - antalet element i lampan

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

tape.show();

fördröjning(1000);

Glödet slutar med en svart skiva:

för (int y=0; y<15; y++)

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

tape.show();

fördröjning(1000);

Skiss för Blink-programmet baserat på NeoPixel.
Skiss för Blink-programmet baserat på NeoPixel.

Handledningsvideo: Exempel på visuella effekter med hjälp av adressband.

När du har lärt dig hur du blinkar med lysdioderna kan du fortsätta lära dig hur du skapar färgeffekter, inklusive de populära Rainbow och Aurora Borealis med mjuka övergångar. Adresserbara lysdioder WS2812B och Arduino ger nästan obegränsade möjligheter för detta.

Kommentarer:
Det finns inga kommentarer än. Vara den första!

Vi råder dig att läsa

Hur man reparerar LED-lampa själv