lamp.housecope.com
Tilbake

Hvordan koble adresserbar LED-stripe WS2812B til Arduino

Publisert: 02.08.2021
0
2578

Utviklingen av lysteknologi basert på LED fortsetter raskt. Bare i går virket kontrollerstyrte RGB-bånd, hvis lysstyrke og farge kan justeres ved hjelp av en fjernkontroll, som et mirakel. I dag har det dukket opp lamper med enda flere funksjoner på markedet.

LED stripe basert på WS2812B

Forskjellen mellom den adresserbare LED-stripen og standarden RGB tingen er lysstyrke og fargeforhold for hvert element justeres separat. Dette lar deg få lyseffekter som er fundamentalt utilgjengelige for andre typer belysningsenheter. Gløden til den adresserbare LED-stripen styres på kjent måte - ved hjelp av pulsbreddemodulasjon. En funksjon ved systemet er å utstyre hver LED med sin egen PWM-kontroller. WS2812B-brikken er en trefarget lysemitterende diode og en kontrollkrets kombinert i en enkelt pakke.

Hvordan koble adresserbar LED-stripe WS2812B til Arduino
Utseendet til LED med driveren.

Elementene er kombinert til et strømbånd parallelt, og styres via en seriell buss - utgangen til det første elementet er koblet til kontrollinngangen til det andre, etc. I de fleste tilfeller er seriebusser bygget på to linjer, hvorav den ene sender strober (klokkepulser), og den andre - data.

Utseendet til adressestripen.
Utseendet til adressestripen.

Kontrollbussen til WS2812B-brikken består av en linje - data overføres gjennom den. Dataene er kodet som pulser med konstant frekvens, men med forskjellige driftssykluser. En puls - en bit. Varigheten av hver bit er 1,25 µs, nullbiten består av et høyt nivå med en varighet på 0,4 µs og et lavt nivå på 0,85 µs. Enheten ser ut som et høyt nivå for 0,8 µs og et lavt nivå for 0,45 µs. En 24-bits (3-byte) serie sendes til hver LED, etterfulgt av en pause på lavt nivå i 50 µs. Dette betyr at data vil bli overført for neste LED, og ​​så videre for alle elementer i kjeden. Dataoverføringen avsluttes med en pause på 100 µs. Dette indikerer at båndprogrammeringssyklusen er fullført og neste sett med datapakker kan sendes.

Data for å administrere adressebåndet.
Data for å administrere adressebåndet.

En slik protokoll gjør det mulig å klare seg med én linje for dataoverføring, men krever nøyaktighet i å opprettholde tidsintervaller. Avviket tillates ikke mer enn 150 ns. I tillegg er støyimmuniteten til en slik buss svært lav. Enhver interferens med tilstrekkelig amplitude kan oppfattes av kontrolleren som data. Dette pålegger begrensninger på lengden på ledere fra kontrollkretsen. På den annen side gjør dette det mulig båndhelsesjekk uten ekstra enheter.Hvis du setter på strøm til lampen og berører kontaktplaten på kontrollbussen med fingeren, kan noen lysdioder lyse tilfeldig og slukke.

Spesifikasjoner for WS2812B-elementer

For å lage belysningssystemer basert på et adressebånd, må du kjenne til de viktige parametrene til lysavgivende elementer.

LED dimensjoner5x5 mm
PWM-modulasjonsfrekvens400 Hz
Strømforbruk ved maksimal lysstyrke60 mA per celle
Forsyningsspenningen5 volt

Arduino og WS2812B

Arduino-plattformen, populær i verden, lar deg lage skisser (programmer) for å administrere adressebånd. Funksjonene til systemet er brede nok, men hvis de ikke lenger er nok på et eller annet nivå, vil de ervervede ferdighetene være nok til å smertefritt bytte til C ++ eller til og med til assembler. Selv om den første kunnskapen er lettere å få på Arduino.

Koble WS2812B Ribbon til Arduino Uno (Nano)

På det første trinnet er enkle Arduino Uno- eller Arduino Nano-brett nok. I fremtiden kan mer komplekse tavler brukes til å bygge mer komplekse systemer. Når du fysisk kobler den adresserbare LED-stripen til Arduino-kortet, må flere forhold overholdes:

  • på grunn av lav støyimmunitet, bør tilkoblingslederne til datalinjen være så korte som mulig (du bør prøve å gjøre dem innen 10 cm);
  • du må koble datalederen til den ledige digitale utgangen på Arduino-kortet - den vil da bli spesifisert programmatisk;
  • på grunn av høyt strømforbruk er det ikke nødvendig å drive båndet fra brettet - separate strømforsyninger er gitt for dette formålet.

Den felles strømledningen til lampen og Arduino må kobles til.

Koblingsskjema WS2812B.
WS2812B båndkoblingsskjema.

Les også

Hvordan koble LED til Arduino-kortet

 

Grunnleggende om WS2812B Programkontroll

Det har allerede blitt nevnt at for å kontrollere WS2812B-mikrokretsene, er det nødvendig å generere pulser med en viss lengde, og opprettholde høy nøyaktighet. Det er kommandoer på Arduino-språket for dannelse av korte pulser forsinkelse Mikrosekunder og mikros. Problemet er at oppløsningen til disse kommandoene er 4 mikrosekunder. Det vil si at det ikke vil fungere å danne tidsforsinkelser med en gitt nøyaktighet. Det er nødvendig å bytte til C ++ eller Assembler-verktøy. Og du kan organisere kontrollen av den adresserbare LED-stripen gjennom Arduino ved å bruke biblioteker spesielt laget for dette. Du kan starte ditt bekjentskap med Blink-programmet, som får de lysemitterende elementene til å blinke.

raskt ledet

Dette biblioteket er universelt. I tillegg til adressebåndet støtter det en rekke enheter, inkludert bånd kontrollert av SPI-grensesnittet. Den har store muligheter.

Først må biblioteket inkluderes. Dette gjøres før oppsettblokken, og linjen ser slik ut:

#include <FastLED.h>

Det neste trinnet er å lage en matrise for å lagre fargene til hver lysdiode. Den vil ha navnestripen og dimensjonen 15 - etter antall elementer (det er bedre å tilordne en konstant til denne parameteren).

CRGB-stripe[15]

I oppsettblokken må du spesifisere hvilken tape skissen skal fungere med:

void setup() {

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

intg;

}

RGB-parameteren setter fargesekvensrekkefølgen, 15 betyr antall lysdioder, 7 er nummeret på utgangen som er tildelt for kontroll (det er også bedre å tilordne en konstant til den siste parameteren).

Løkkeblokken begynner med en løkke som sekvensielt skriver til hver seksjon av matrisen Rød (rød glød):

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

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

Deretter sendes den dannede matrisen til lampen:

FastLED.show();

Forsinkelse 1000 millisekunder (sekund):

forsinkelse(1000);

Da kan du slå av alle elementene på samme måte ved å skrive svart i dem.

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

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

FastLED.show();

forsinkelse(1000);

En skisse for en blinkende tape basert på FastLed.
En skisse for en blinkende tape basert på FastLed.

Etter kompilering og opplasting av skissen vil båndet blinke med en periode på 2 sekunder. Hvis du trenger å administrere hver fargekomponent separat, så i stedet for linjen {strip[g]=CRGB::Red;} flere linjer brukes:

{

stripe[g].r=100;// angi glødenivået til det røde elementet

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

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

}

NeoPixel

Dette biblioteket fungerer bare med NeoPixel Ring LED-ringer, men det er mindre ressurskrevende og inneholder kun det viktigste. På Arduino-språket ser programmet slik ut:

#include <Adafruit_NeoPixel.h>

Som i forrige tilfelle er biblioteket tilkoblet, og lenta-objektet er deklarert:

Adafruit_NeoPixel lenta=Adafruit_NeoPixel(15, 6);// hvor 15 er antall elementer og 6 er den tilordnede utgangen

I oppsettblokken initialiseres båndet:

void setup() {

lenta.begin()

}

I løkkeblokken er alle elementer uthevet i rødt, variabelen sendes til feeden, og en forsinkelse på 1 sekund opprettes:

for (int y=0; y<15; y++)// 15 - antall elementer i lampen

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

tape.show();

forsinkelse(1000);

Gløden stopper med en svart plate:

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

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

tape.show();

forsinkelse(1000);

Skisse for Blink-programmet basert på NeoPixel.
Skisse for Blink-programmet basert på NeoPixel.

Videoopplæring: Eksempler på visuelle effekter ved hjelp av adressebånd.

Når du har lært hvordan du blinker lysdiodene, kan du fortsette å lære hvordan du lager fargeeffekter, inkludert de populære Rainbow og Aurora Borealis med jevne overganger. Adresserbare lysdioder WS2812B og Arduino gir nesten ubegrensede muligheter for dette.

Kommentarer:
Det er ingen kommentarer ennå. Vær den første!

Vi anbefaler deg å lese

Hvordan reparere LED-lampe selv