Codificação compatível com Arduino 08: Interface de um LED RGB usando Arduino

No tutorial anterior, discutimos a entrada analógica ao usar o Arduino. Até agora, cobrimos quatro das cinco maneiras pelas quais os controladores podem interagir e interagir com outros componentes e dispositivos eletrônicos. Isso inclui saída digital, entrada digitalsaída analógica e entrada analógica.

Neste tutorial, discutimos como fazer a interface de LEDs RGB usando Arduíno. Os LEDs RGB são uma combinação de três LEDs – vermelho, verde e azul – todos embalados como um LED. Esses LEDs são usados ​​em diversas aplicações industriais, como indicadores de status/energia, instalações hidráulicas, placas de sinalização digital, anéis de LED, luzes de decoração para casa e grandes displays externos.

Ao controlar a intensidade de cada LED individual, podem ser produzidas quase 16 milhões de cores. Os LEDs RGB são usados ​​na construção de telas de diodo emissor de luz (DV LED) de visão direta que são amplamente utilizadas na indústria de sinalização digital.

LED RGB
Conforme mencionado na introdução, um LED RGB é uma combinação de três LEDs (vermelho, verde e azul) em um único pacote. Dispositivos de exibição eletrônicos usam uma mistura aditiva de cores para produzir cores diferentes.

Na mistura aditiva, vermelho, verde e azul são as cores primárias, que são cores que não podem ser criadas pela mistura de outras. Mas, ao misturar cores primárias, todas as outras cores podem ser geradas.

Os receptores de cores do olho humano são os mais sensíveis a estes. Assim, misturando aditivamente essas cores, pode-se gerar a maior matriz visível ao olho humano.

O espaço de cores gerado pela mistura de cores primárias é chamado de espaço de cores RGB. Aqui estão alguns exemplos:

  • Ao misturar vermelho e verde, são criados tons de amarelo e laranja.
  • Ao misturar verde e azul, são criados tons de ciano.
  • Ao misturar vermelho e azul, são criados tons de roxo e magenta.
  • Ao misturar as três cores, são criados tons de cinza.
  • Quando todas as três cores estão totalmente saturadas, a luz branca é criada.
  • A ausência de todas as três cores cria luz negra na configuração apropriada.

Em um grande display LED DV externo, cada LED RGB funciona como um pixel.

Por LED RGB, quase qualquer cor pode ser produzida. Então, vamos supor que a intensidade de cada cor seja alterada em uma escala de 8 bits, o que equivaleria a 16.777.216 cores (256 x 256 x 256) ou aproximadamente 16 milhões de cores que poderiam ser produzidas.

Em um LED RGB, três LEDs de cor vermelha, verde e azul são embalados de perto. É por isso que quando estes LEDs emitem luz, a luz não é vista individualmente, mas como uma mistura aditiva de três luzes.

A intensidade de cada LED colorido pode ser controlada aplicando-lhes o sinal PWM. Se a largura de pulso desse sinal em cada LED for alterada em valores de 8 bits, a intensidade da luz de cada LED também muda na mesma escala.

Aproximadamente 16 milhões de cores diferentes podem ser produzidas em um LED RBG.

Tipos de LEDs RGB
Existem dois tipos de LEDs RGB: LED de ânodo comum e LED RGB de cátodo comum.

1. LED de ânodo comum

No LED de ânodo comum, todos os três LEDs têm um ânodo comum, mas têm cátodos diferentes. Esses LEDs fazem interface com um controlador de forma que o controlador absorva a corrente através deles.

Nesta configuração o sinal PWM deve ser aplicado nos terminais catódicos para variar a intensidade de cada LED. Quando a largura do pulso do sinal PWM aumenta, a intensidade do LED diminui e vice-versa.

2. LED RGB de cátodo comum

Com o LED RGB de cátodo comum, todos os três LEDs têm um cátodo comum, mas seus ânodos são diferentes. Esses LEDs fazem interface com um controlador de forma que o controlador forneça corrente para eles.

Nesta configuração, o sinal PWM deve ser aplicado nos terminais anódicos para variar a intensidade de cada LED. Quando a largura do pulso do sinal PWM aumenta, a intensidade do LED também aumenta e vice-versa.

Ambos os tipos de LEDs RGB são dispositivos de quatro terminais com esta configuração de pinos:

Os LEDs RGB de ânodo comum e cátodo comum podem ser facilmente distinguidos por um multímetro. Ao usar um multímetro, faça-o no modo de continuidade.

  • Coloque a ponta positiva do multímetro no fio mais longo e o fio negativo em qualquer outro terminal. Se o respectivo LED vermelho, verde ou azul acender, então é um LED de ânodo comum.
  • Coloque a ponta negativa do multímetro no fio mais longo e o fio positivo em qualquer outro terminal. Se o LED RGB acender desta vez, é um LED RGB de cátodo comum.
  • Se nenhuma das conexões funcionar, um ou mais LEDs do LED RGB podem estar danificados.

Não-linearidade
É importante observar que todos os três LEDs do LED RGB possuem características VI diferentes. Por exemplo, eles têm tensões diretas diferentes e curvas VI ligeiramente diferentes. Isso se deve às diferenças entre os tipos de LEDs, de acordo com a cor que emitem.

As características elétricas das luzes vermelha, verde e azul no LED RGB estão listadas aqui:

A curva VI dos LEDs é exponencial e não linear. Além disso, a corrente através de cada LIDERADO atinge picos em diferentes níveis de tensão e aumenta em diferentes tensões diretas. Assim, numa aplicação comercial, todos estes factores devem ser tidos em conta porque a intensidade de cada LED tem que ser variada para produzir cores diferentes.

Em displays comerciais, a intensidade de cada LED varia de acordo com os verdadeiros sinais analógicos fornecidos através dos conversores digital para analógico. Além disso, a não linearidade da intensidade da luz (ou das unidades de lux) dos LEDs vermelho, verde e azul é corrigida pela correção gama e outras técnicas de calibração de cores.

Para simplificar, não levaremos em consideração esta não linearidade dos LEDs RGB. Em vez disso, assumiremos que a intensidade da luz de cada LED colorido varia igualmente em relação à tensão direta aplicada, aumentando diretamente do nível de 0V. Além disso, a curva da região direta é linear para todos os LEDs pela proporcionalidade de um. Isto é apenas para simplificar nosso programa de controlador. Mas lembre-se, isso é apenas uma suposição.

Aplicações LED RGB
Os LEDs RGB são utilizados em diversas aplicações, como as seguintes:

1. Indicadores

2. Anéis de LED

3. Luzes decorativas

4. Instalações hidráulicas

5. Placas de sinalização digital e outdoors

6. Luzes externas e shows de luzes

Controlando o LED RGB com Arduino
A maioria dos Placas Arduino não possuem uma saída analógica verdadeira ou, se possuem, oferecem apenas um ou dois canais. No entanto, a maioria das placas Arduino pode emitir sinais PWM. Por exemplo, o Arduino UNO pode emitir um sinal PWM usando o função analogWrite nos pinos 3, 5, 6, 9, 10 e 11.

As placas Arduino também podem emitir sinais PWM em qualquer pino usando temporizadores/contadores ou batendo bits.

Os sinais PWM são uma aproximação das tensões analógicas. Ao aplicar um sinal PWM, o mesmo efeito pode ser alcançado em um LED RGB como se aplicasse a tensão analógica. Como o sinal PWM gerado usando a função analogWrite pode variar o ciclo de trabalho, em uma escala de 8 bits, o perfil de cores RGB24 pode ser imitado aplicando os sinais PWM aos LEDs vermelho, verde e azul do LED RGB.

Dessa forma, as cores podem ser produzidas a partir de um LED RGB que se compara diretamente com as cores do espaço de cores RGB24 — onde cada cor é representada por valores hexadecimais de 24 bits.

O driver LED RGB baseado em Arduino receita
Nesta receita, projetaremos um driver de LED RGB usando Arduino. Este driver de LED RGB não envolverá nenhuma correção para a não linearidade dos LEDs vermelho, verde e azul de um LED RGB.

Componentes necessários
1. Arduino UNO x1
2. LED RGB x1
3. Resistor de 330 Ohms x1
4. Tábua de ensaio x1
5. Fios de ligação macho-macho ou fios de conexão

Conexões de circuito
Primeiro, teste se o seu LED RGB é o cátodo comum ou o ânodo comum. O LED RGB utilizado neste projeto é o cátodo comum. Assim, o terminal cátodo comum (o segundo terminal identificado pelo fio mais longo) deve ser conectado ao terra através de um resistor em série de 330 Ohms.

Os terminais anódicos dos LEDs vermelho, verde e azul do LED RGB são conectados aos pinos PWM 3, 9 e 10 do Arduino UNO. Esses pinos podem gerar um sinal PWM usando a função analogWrite . A placa de ensaio é alimentada por terra comum e trilho de alimentação de 5 V de um dos pinos de aterramento e pino de 5 V do Arduino UNO, respectivamente.

Diagrama de circuito

Esboço do Arduino

`

Como funciona o projeto
O LED RGB de cátodo comum faz interface com o Arduino UNO, de modo que os pinos PWM do Arduino fornecem corrente para os LEDs coloridos do LED RGB. A partir dos pinos PWM, um sinal PWM é aplicado aos LEDs vermelho, verde e azul usando a função analogWrite .

A função gera um sinal PWM com um ciclo de trabalho que pode ser alterado em uma escala de 8 bits. Isto significa que a intensidade de cada LED pode ser variada em 256 passos ou numa escala de 8 bits. Assim, as cores do espaço de cores RGB24 podem ser produzidas em um LED RGB.

Essas cores podem ser comparadas diretamente com as cores de um espaço de cores RGB24, onde cada cor é representada por um valor hexadecimal de 24 bits. Por exemplo, para produzir a cor vermelha pura em um LED RGB (onde a cor é representada por #FF0000), a intensidade das luzes RGB deve ser 255 — portanto, 0 e 0 respectivamente.

À medida que os pinos do Arduino fornecem a corrente para os LEDs coloridos, a intensidade da luz de cada LED aumenta aumentando a largura de pulso aplicada ao sinal PWM.

Se a intensidade da luz de cada LED for diretamente proporcional à largura do pulso (aqui ignoramos a não linearidade do LED RGB, como as diferenças nas tensões diretas e nas curvas VI), então aplicando os sinais PWM com o dever ciclos de 100%, 0% e 0% nos LEDs vermelho, verde e azul produzirão uma luz vermelha pura.

Para que isso ocorra, entretanto, o ciclo de trabalho dos sinais PWM nos LEDs vermelho, verde e azul deve ser definido por 255, 0 e 0, respectivamente.

Da mesma forma, para obter uma luz verde pura, os sinais PWM com ciclos de trabalho definidos por 0, 255 e 0 devem ser aplicados aos LEDs vermelho, verde e azul. respectivamente.

Para obter uma luz azul pura, os sinais PWM com ciclos de trabalho definidos por 0, 0 e 255 devem ser aplicados aos LEDs vermelho, verde e azul, respectivamente.

Para obter luz branca pura, os sinais PWM com ciclos de trabalho definidos por 255, 255 e 255 devem ser aplicados aos LEDs vermelho, verde e azul, respectivamente.

Quando todos os LEDs estiverem apagados, isso representará a cor preta. As outras cores do espaço de cores RGB24 podem ser produzidas definindo o ciclo de trabalho dos sinais PWM para LEDs vermelhos, verdes e azuis, comparando diretamente seus valores hexadecimais de 24 bits.

Neste projeto, 25 cores diferentes são geradas a partir do LED RGB em intervalos de um segundo cada. Essas cores estão listadas abaixo por seus valores RGB hexadecimais e pelos valores de ciclo de trabalho usados ​​para produzi-las.

Neste projeto são produzidas as seguintes cores no LED RGB:

Guia de programação

Os pinos 3, 9 e 10 que estão conectados aos terminais R, G e B do LED RBG são definidos no esboço como variáveis ​​globais R, G e B. Como estamos usando a função analogWrite para gerar os sinais PWM nos terminais do LED RGB, não há necessidade de configurar os pinos usando a função pinMode . Portanto, a função setup está vazia.

int R = 3;
interno G = 9;
interno B = 10;

configuração vazia {
}

Na função loop , diferentes cores são produzidas no LED RGB aplicando os sinais PWM dos diferentes ciclos de trabalho aos terminais R, G e B do LED RGB.

O ciclo de trabalho dos sinais PWM para os terminais do LED RGB é diretamente proporcional aos valores RGB dessas cores. Esses sinais PWM são gerados chamando a função analogWrite . A função delay é chamada para fornecer um intervalo de um segundo entre o piscar de cada cor.

Por exemplo, para produzir uma cor vermelha, este código é usado:

analogWrite(R, 255);
analogWrite(G, 0);
analogWrite(B, 0);
atraso(1000);

Da mesma forma, para produzir a luz da cor verde, este código é usado:

analogWrite(R, 0);
analogWrite(G, 255);
analogWrite(B, 0);
atraso(1000);

E para produzir a luz da cor azul, utiliza-se este código:

analogWrite(R, 0);
analogWrite(G, 0);
analogWrite(B, 255);
atraso(1000);

Para produzir diferentes tonalidades no espaço de cores RGB24, são gerados sinais PWM com ciclo de trabalho diretamente proporcional aos seus valores RGB.

Por exemplo, para produzir uma tonalidade com valor hexadecimal #2ecc71, com valor RGB 46, 204, 113, este código é usado:

analogWrite(R, 46);
analogWrite(G, 204);
analogWrite(B, 113);
atraso(1000);

Para produzir uma luz de cor branca, este código é usado:

analogWrite(R, 255);
analogWrite(G, 255);
analogWrite(B, 255);
atraso(1000);

Para exibir a cor preta, todos os LEDs devem ser desligados configurando um ciclo de trabalho para todos os sinais PWM em 0%. Como todos os LEDs estão desligados, a cor preta será exibida nas configurações apropriadas – como na ausência de qualquer luz de fundo em uma placa de exibição.

analogWrite(R, 0);
analogWrite(G, 0);
analogWrite(B, 0);
atraso(1000);

Nota: O código da função loop continua se repetindo por um número infinito de vezes, piscando cores diferentes no LED RGB pela sequência definida até que o Arduino UNO seja ligado.

Tente você mesmo
Neste driver de LED RGB, a função analogWrite é usada para gerar sinais PWM para produzir cores diferentes no LED RGB. Como o ciclo de trabalho do sinal PWM pode ser variado usando a função analogWrite (entre 0 a 100% em uma escala de 8 bits), é impossível corrigir a não linearidade do LED RGB.

No entanto, se os sinais PWM forem gerados pelo temporizador/contador ou pelo bit-banging (onde o período ON e OFF dos pulsos PWM são controlados com precisão em microssegundos), os sinais PWM podem ser gerados correspondendo o ciclo de trabalho com o avanço. tensões dos LEDs vermelho, verde e azul.

O ciclo de trabalho de cada sinal PWM pode ser variado em uma escala de 8 bits para cada LED, variando a tensão de saída entre a tensão de polarização direta e a tensão na qual suas correntes aumentam exponencialmente em suas respectivas curvas VI.

Com um pouco mais de esforço, o sinal PWM pode ser gerado para imitar a curva exponencial real das características VI de cada LED usando a biblioteca matemática e uma função exponencial dela. Pode ser necessário verificar a folha de dados do LED RGB do fabricante para obter as curvas características VI exatas e cada luz do LED RGB específico a seguir.

No próximo tutorial, discutiremos a interface de um display de sete segmentos (SSD) com o Arduino.

Vídeos de demonstração


(tagsParaTraduzir)Arduino

Conteúdo Relacionado

Voltar para o blog

Deixe um comentário

Os comentários precisam ser aprovados antes da publicação.