ElectroBest
Обратно

Как да свържете адресируема LED лента WS2812B към Arduino

Публикувано: 02.08.2021
0
2578

Развитието на технологията за осветление на базата на светодиоди продължава с бързи темпове. До вчера управляваните с контролер RGB ленти, чиято яркост и цвят могат да се регулират с дистанционно управление, изглеждаха като чудо. Днес на пазара има нови осветителни тела с още повече възможности.

LED лента на базата на WS2812B

Разликите между адресируемите LED ленти и стандартните RGB е Яркостта и съотношението на цветовете на всеки елемент се регулират поотделно. Това дава възможност за получаване на светлинни ефекти, които не са възможни при други видове осветителни тела. Адресируемата LED лента се управлява по добре познатия начин - чрез широчинно-импулсна модулация. Особеност на системата е, че всеки светодиод е оборудван със собствен ШИМ контролер. Чипът WS2812B представлява трицветен светодиод и контролна схема, обединени в един пакет.

Как да свържете адресируемата светодиодна лента WS2812B към Arduino
Външен изглед на светодиода с драйвера.

Елементите се свързват паралелно към захранването и се управляват чрез последователна шина - изходът на първия елемент е свързан с управляващия вход на втория елемент и т.н. В повечето случаи серийните шини са изградени от две линии, едната от които предава строби (тактови импулси), а другата - данни.

Външният вид на адресируемата лента.
Външният вид на адресируемата лента.

Управляващата шина на WS2812B се състои от един ред - тя се използва за пренос на данни. Данните се кодират като импулси с постоянна честота, но с различни честоти. Един импулс е един бит.. Продължителността на всеки бит е 1,25 µs, като нулевият бит се състои от високо ниво от 0,4 µs и ниско ниво от 0,85 µs. Устройството се появява като високо ниво от 0,8 µs и ниско ниво от 0,45 µs. Към всеки светодиод се изпраща пратка от 24 бита (3 байта), последвана от пауза като ниско ниво за 50 µs. Това означава, че данните за следващия светодиод ще бъдат предадени след това и така нататък за всички елементи във веригата. Прехвърлянето на данни се прекратява с пауза от 100 µs. Това означава, че цикълът на програмиране на лентата е завършен и може да се изпрати следващият набор от пакети с данни.

Контролни данни за адресируемата лента.
Данни за управление на адресната лента.

Този протокол позволява да се премахне една линия за прехвърляне на данни, но изисква точна синхронизация. Позволено е отклонение от максимум 150 ns. Освен това шумоустойчивостта на тази шина е много ниска. Всяко смущение с достатъчна амплитуда може да бъде прието от контролера като данни. Това налага ограничения по отношение на дължината на проводниците от управляващата верига. От друга страна, тя дава възможност за за проверка на правилното функциониране на ремъка без допълнителни устройства. Ако към осветителното тяло е подадено захранване и пръст докосне контактната зона на шината за управление, някои светодиоди може да светнат и да угаснат на случаен принцип.

Технически характеристики на елементите WS2812B

За да създадете осветителни системи с адресируеми ленти, трябва да знаете важните параметри на светлоизлъчващите елементи.

Размери на светодиодите5х5 мм
Честота на ШИМ модулацията400 Hz
Консумация на ток при максимална яркост60mA на елемент
Захранващо напрежение5 волта
Експертни съвети
Консумацията на енергия на осветителното тяло е доста висока. Тя се определя не само от тока, необходим за иницииране на нажежения p-n преход, но и от загубите при превключване по време на формирането на ШИМ. За осветително тяло с 15 елемента захранването и проводниците са проектирани за ток от поне 1 ампер.

Arduino и WS2812B

Популярната в цял свят платформа Arduino позволява създаването на скици (програми) за управление на адресируеми ленти. Възможностите на системата са достатъчно широки, но ако на някое ниво те вече не са достатъчни, придобитите умения ще са достатъчни, за да се премине безпроблемно към C++ или дори асемблер. Въпреки че е по-лесно да се придобият основни знания от Arduino.

Свързване на лента на базата на WS2812B към Arduino Uno (Nano)

На първо време е достатъчна обикновена платка Arduino Uno или Arduino Nano. По-късно по-сложните платки могат да се използват за изграждане на по-сложни системи. При физическото свързване на адресируемата LED лента към платката Arduino трябва да се уверите, че са изпълнени няколко условия:

  • Поради ниската шумоустойчивост проводниците за свързване на линията за данни трябва да са възможно най-къси (опитайте се да ги направите на разстояние до 10 cm);
  • Свържете линията за данни към свободен цифров изход на платката Arduino - той ще бъде посочен по-късно от софтуера;
  • Поради високата консумация на енергия не е необходимо лентата да се захранва от платката - за тази цел са предвидени отделни захранвания.

Трябва да се свърже общият захранващ кабел между лентата и Arduino.

Електрическа схема WS2812B.
Схема на свързване на лентата WS2812B.

Прочетете също

Как да свържете светодиода към платката Arduino

 

Основи на софтуерното управление на WS2812B

Вече беше споменато, че за да се управлява чипът WS2812B, е необходимо да се генерират импулси с определена дължина и висока точност. В езика на Arduino има команди за формиране на кратки импулси delayMicroseconds и микроскопи. Проблемът е, че разделителната способност на тези команди е 4 микросекунди. Това означава, че не е възможно да се формират времевите закъснения с определена точност. Необходимо е да се използват инструменти на C++ или Assembler. Възможно е също така да управлявате светодиодната лента чрез Arduino с помощта на специално създадени за целта библиотеки. Въведението започва с Blink - програма, която кара светлинните елементи да мигат.

FastLed .

Тази библиотека е многофункционална. В допълнение към адресируемата лента, тя поддържа много устройства, включително ленти, управлявани от SPI. Тя е много мощна.

Първо трябва да свържете библиотеката. Това се прави преди блока за настройка и низът изглежда по следния начин:

#include .

Следващата стъпка е да се създаде масив за съхранение на цветовете на всеки светодиод. Той ще има името strip и размер 15 - по броя на елементите (по-добре е да зададете константа на този параметър).

CRGB лента [15]

В блока за настройка трябва да посочите групата, с която ще работи скриптът:

void setup() {

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

int g;

}

Параметърът RGB задава реда на редуване на цветовете, 15 означава броя на светодиодите, 7 е номерът на изхода, определен за управление (добре е да зададете константа и на последния параметър).

Блокът с цикъла започва с цикъл, който последователно записва във всяка секция на масива Red (червено светене):

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

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

След това генерираният масив се изпраща към осветителното тяло:

FastLED.show();

Забавяне 1000 милисекунди (една секунда):

забавяне(1000);

След това всички елементи могат да бъдат изключени по един и същи начин, като се изпишат с черно в тях.

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

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

FastLED.show();

забавяне(1000);

Скица за мигаща лента, базирана на FastLed.
Скица за мигаща лента, базирана на FastLed.

След компилиране и зареждане на скицата лентата ще мига с период от 2 секунди. Ако искате да управлявате всеки цветен компонент поотделно, вместо низ {strip[g]=CRGB::Red;} използват се няколко низа:

{

strip[g].r=100;// задаване на нивото на луминесценция на червения елемент

strip[g].g=11;// същото за зелено

strip[g].b=250;// същото за синьото

}

NeoPixel

Тази библиотека работи само с пръстеновидните светодиоди NeoPixel, но е по-малко ресурсоемка и съдържа само най-необходимото. На езика на Arduino програмата изглежда по следния начин:

#include .

Както и в предишния случай, библиотеката е включена и обектът lenta е деклариран:

Adafruit_NeoPixel lenta=Adafruit_NeoPixel(15, 6);// Където 15 е броят на елементите, а 6 е зададеният изход

Лента се инициализира в блока за настройка:

void setup() {

lenta.begin ()

}

В блока на цикъла всички елементи светват в червено, към лентата се предава променлива и се създава закъснение от 1 секунда:

for (int y=0; y<15;y++)// 15 - брой елементи в лентата

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

{lenta.show();

забавяне(1000);

Лента спира да свети в черно:

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

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

lenta.show();

забавяне(1000);

Скица за програма Blink, базирана на NeoPixel.
Ескиз за програмата Blink, базирана на NeoPixel.

Видео урок: Образци на визуални ефекти с помощта на адресируеми ленти.

След като научите как да мигате със светодиоди, можете да продължите да се учите как да създавате цветни ефекти, включително популярните Rainbow и Northern Lights с плавни преходи. Адресируемите светодиоди WS2812B и Arduino предоставят почти неограничени възможности за това.

Коментари:
Все още няма коментари. Бъдете първи!

Съвети за четене

Как сами да ремонтирате LED осветително тяло

Съветваме ви да прочетете:

Защита на дървото