ElectroBest
Voltar

Como ligar uma Fita LED endereçável WS2812B a um Arduino

Publicado: 02.08.2021
0
2578

O desenvolvimento da tecnologia de iluminação baseada em LED continua a um ritmo acelerado. Até ontem, as fitas RGB controladas pelo controlador, cujo brilho e cor podem ser ajustados por controlo remoto, pareciam um milagre. Hoje, existem novas luminárias no mercado com ainda mais possibilidades.

Fita LED baseada no WS2812B

As diferenças entre as tiras de LED endereçáveis e o padrão RGB é a O brilho e a relação de cor de cada elemento é ajustável separadamente. Isto torna possível obter efeitos de iluminação que não estão disponíveis para outros tipos de aparelhos de iluminação. A faixa LED endereçável é controlada de uma forma bem conhecida - por meio da modulação da largura do pulso. Uma característica do sistema é que cada LED está equipado com o seu próprio controlador PWM. O chip WS2812B é um díodo emissor de luz a três cores e um circuito de controlo, combinados num único pacote.

Como ligar a Fita endereçável WS2812B LED ao Arduino
Vista exterior do LED com condutor.

Os elementos são ligados em paralelo à fonte de alimentação e são controlados através de um bus de série - a saída do primeiro elemento é ligada à entrada de controlo do segundo elemento, etc. Na maioria dos casos, os autocarros em série são construídos em duas linhas, uma das quais transmite estroboscópios (impulsos do relógio) e a outra - dados.

O aparecimento da fita endereçável.
O aparecimento da fita endereçável.

O autocarro de controlo do WS2812B é constituído por uma linha - é utilizado para transferir dados. Os dados são codificados como pulsos com uma frequência constante mas com frequências diferentes. Um pulso é um bit.. A duração de cada bit é de 1,25 µs, o bit zero consiste num nível alto de 0,4 µs e um nível baixo de 0,85 µs. A unidade aparece como um nível alto de 0,8µs e um nível baixo de 0,45µs. Um pacote de 24 bits (3 bytes) é enviado para cada LED, seguido de uma pausa como um nível baixo durante 50µs. Isto significa que os dados para o próximo LED serão transmitidos a seguir, e assim por diante para todos os elementos da cadeia. A transferência de dados é terminada por uma pausa de 100 µs. Isto significa que o ciclo de programação da fita está completo e que o próximo conjunto de pacotes de dados pode ser enviado.

Dados de controlo para a fita endereçável.
Dados para controlo de fitas de endereços.

Este protocolo permite dispensar uma única linha para a transferência de dados, mas requer um timing preciso. É permitido um desvio de 150 ns, no máximo. Além disso, a imunidade ao ruído deste autocarro é muito baixa. Qualquer interferência de amplitude suficiente pode ser captada pelo controlador como dados. Isto impõe limitações aos comprimentos dos condutores do circuito de controlo. Por outro lado, oferece a possibilidade de para verificar o correcto funcionamento do cinto sem dispositivos adicionais. Se for aplicada energia à luminária e um dedo tocar na área de contacto do autocarro de controlo, alguns LEDs podem acender-se e apagar-se aleatoriamente.

Características técnicas dos elementos WS2812B

Para criar sistemas de iluminação com fitas endereçáveis, é necessário conhecer os parâmetros importantes dos elementos emissores de luz.

Dimensões do LED5x5 mm
Frequência de modulação PWM400 Hz
Consumo de corrente com a máxima luminosidade60mA por elemento
Tensão de alimentação5 volts
Aconselhamento especializado
O consumo de energia da luminária é bastante elevado. É determinado não só pela corrente necessária para a iniciação da junção p-n brilhante, mas também pelas perdas de comutação durante a moldagem do PWM. Para uma luminária de 15 elementos, a fonte de alimentação e os condutores são concebidos para uma corrente de pelo menos 1 ampere.

Arduino e WS2812B

A plataforma Arduino mundialmente popular permite a criação de esboços (programas) para controlar fitas endereçáveis. As capacidades do sistema são suficientemente amplas, mas se a qualquer nível já não forem suficientes, as capacidades obtidas serão suficientes para mudar sem problemas para C++ ou mesmo assembler. Embora seja mais fácil obter os conhecimentos básicos do Arduino.

Ligação de uma fita com base WS2812B a um Arduino Uno (Nano)

No início, uma simples prancha Arduino Uno ou Arduino Nano é suficiente. Mais tarde, placas mais complexas podem ser utilizadas para construir sistemas mais complexos. Ao ligar fisicamente a fita LED endereçável à placa Arduino, é necessário certificar-se de que algumas condições são cumpridas:

  • Devido à baixa imunidade ao ruído, os condutores de ligação da linha de dados devem ser tão curtos quanto possível (tente fazê-los dentro de 10 cm);
  • Ligue a linha de dados a uma saída digital livre da placa Arduino - será indicada mais tarde pelo software;
  • Devido ao elevado consumo de energia, não é necessário alimentar a tira do quadro - são fornecidas fontes de alimentação separadas para este fim.

A linha comum de alimentação eléctrica entre a faixa e o Arduino deve ser ligada.

Diagrama de cablagem WS2812B.
Diagrama de cablagem da faixa WS2812B.

Leia também

Como ligar o LED à placa Arduino

 

Fundamentos do controlo do software WS2812B

Já foi mencionado que, para controlar os chips WS2812B, é necessário gerar impulsos de um determinado comprimento com alta precisão. Na língua Arduino existem comandos para formar impulsos curtos delayMicroseconds и micros. O problema é que a resolução destes comandos é de 4 microssegundos. Isto significa que não é possível gerar atrasos de tempo com uma dada precisão. É necessário utilizar ferramentas C++ ou Assembler. Também é possível controlar a faixa LED endereçável através do Arduino com a ajuda de bibliotecas especialmente criadas para o efeito. A introdução começa com Blink, um programa que faz piscar os elementos emissores de luz.

FastLed .

Esta biblioteca é versátil. Para além da fita endereçável, suporta muitos dispositivos, incluindo fitas controladas por SPI. É muito poderoso.

Primeiro é necessário ligar a biblioteca. Isto é feito antes do bloco de configuração, e a corda tem este aspecto:

#incluir .

O passo seguinte é criar uma matriz para armazenar as cores de cada díodo emissor de luz. Terá a faixa de nome e a dimensão 15 - pelo número de elementos (é melhor atribuir uma constante a este parâmetro).

Faixa CRGB[15]

No bloco de configuração deve especificar a banda com a qual o guião irá funcionar:

configuração inválida() {

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

int g;

}

O parâmetro RGB define a ordem de alternância de cores, 15 significa o número de LEDs, 7 é o número da saída atribuída ao controlo (é melhor atribuir também uma constante ao último parâmetro).

O bloco de laço começa com um laço que escreve sequencialmente em cada secção da matriz Vermelha (brilho vermelho):

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

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

Em seguida, a matriz gerada é enviada para a luminária:

FastLED.show();

Atraso de 1000 milissegundos (um segundo):

atraso(1000);

Depois todos os elementos podem ser desligados da mesma forma, escrevendo neles de preto.

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

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

FastLED.show();

atraso(1000);

Esboço para fita adesiva intermitente com base em FastLed.
Um esboço para uma faixa piscante à base de FastLed.

Depois de compilar e carregar o esboço, a fita piscará com um período de 2 segundos. Se quiser controlar cada componente de cor separadamente, então em vez de cordel {strip[g]=CRGB::Red;} são usadas múltiplas cordas:

{

strip[g].r=100;// definir o nível de luminescência do elemento vermelho

strip[g].g=11;// o mesmo para o verde

strip[g].b=250;// o mesmo para o azul

}

NeoPixel

Esta biblioteca só funciona com os LEDs NeoPixel Ring, mas é menos intensiva em recursos e contém apenas o essencial. Na língua Arduino, o programa tem este aspecto:

#include .

Tal como no caso anterior, a biblioteca é incluída e o objecto lento é declarado:

Adafruit_NeoPixel lenta=Adafruit_NeoPixel(15, 6);// Onde 15 é o número de elementos e 6 é o resultado atribuído

A lenta é inicializada no bloco de configuração:

configuração inválida() {

lenta.begin ()

}

No bloco do laço todos os elementos são iluminados a vermelho, uma variável é passada para a fita e um atraso de 1 segundo é criado:

para (int y=0; y<15;y++)// 15 - número de elementos na lenta

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

{lenta.show();

atraso(1000);

A lenta deixa de brilhar em preto:

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

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

lenta.show();

atraso(1000);

Sketch for Blink programa baseado em NeoPixel.
Um esboço para o programa Blink baseado em NeoPixel.

Vídeo lição: Amostras de efeitos visuais usando fitas endereçáveis.

Depois de aprender a piscar LEDs, pode continuar a aprender a criar efeitos de cor, incluindo o popular Rainbow e Northern Lights com transições suaves. O WS2812B e os LEDs endereçáveis Arduino oferecem possibilidades quase ilimitadas para tal.

Comentários:
Ainda sem comentários. Seja o primeiro!

Dicas de leitura

Como reparar você mesmo a luminária LED