Conexión de tiras de LED RGB. Conexión de un LED RGB a Arduino

Ahora veamos el LED multicolor, que a menudo se llama abreviadamente: LED RGB.

RGB es una abreviatura que significa: Rojo - rojo, Verde - verde, Azul - azul. Es decir, dentro de este dispositivo se colocan tres LED separados. Dependiendo del tipo, un LED RGB puede tener un cátodo común o un ánodo común.

1. Mezclando colores

¿Por qué es mejor un LED RGB que tres convencionales? Se trata de la capacidad de nuestra visión para mezclar la luz de diferentes fuentes ubicadas una cerca de la otra. Por ejemplo, si colocamos los LED azules y rojos uno al lado del otro, a una distancia de varios metros su brillo se fusionará y el ojo verá un punto violeta. Y si agregamos verde, el punto aparecerá blanco. Así es exactamente como funcionan los monitores de ordenador, los televisores y las pantallas exteriores.

La matriz del televisor consta de puntos individuales de diferentes colores. Si toma una lupa y mira a través de ella el monitor que está encendido, podrá ver fácilmente estos puntos. Pero en una pantalla exterior, los puntos no están muy densos, por lo que se pueden distinguir a simple vista. Pero desde una distancia de varias decenas de metros estos puntos son indistinguibles.

Resulta que cuanto más cerca están los puntos multicolores entre sí, menos distancia necesita el ojo para mezclar estos colores. De ahí la conclusión: a diferencia de tres LED separados, la mezcla de colores de un LED RGB ya se nota a una distancia de 30-70 cm. Por cierto, un LED RGB con lente mate funciona aún mejor.

2. Conexión de un LED RGB a Arduino

Dado que el LED multicolor consta de tres LED normales, los conectaremos por separado. Cada LED está conectado a su propio pin y tiene su propia resistencia independiente.

En este tutorial estamos usando un LED RGB con un cátodo común, por lo que solo habrá un cable a tierra.

Diagrama esquemático

Aspecto del diseño

3. Programa para controlar un LED RGB

Creemos un programa simple que iluminará cada uno de los tres colores por turno.

Byte constante rPin = 3; byte constante gPin = 5; byte constante bPin = 6; void setup() ( pinMode(rPin, SALIDA); pinMode(gPin, SALIDA); pinMode(bPin, SALIDA); ) void loop() ( // apaga el azul, enciende el rojo digitalWrite(bPin, LOW); digitalWrite( rPin, HIGH); retraso(500); // apaga el rojo, enciende el verde digitalWrite(rPin, LOW); digitalWrite(gPin, HIGH); // apaga el verde, enciende el azul digitalWrite(gPin, LOW); , ALTO); retraso (500);

Cargamos el programa en Arduino y observamos el resultado.

Optimicemos un poco el programa: en lugar de las variables rPin, gPin y bPin, usaremos una matriz. Esto nos ayudará en las siguientes tareas.

Byte constante rgbPins = (3,5,6); configuración vacía() (para(byte i=0; i<3; i++) pinMode(rgbPins[i], OUTPUT); } void loop() { digitalWrite(rgbPins, LOW); digitalWrite(rgbPins, HIGH); delay(500); digitalWrite(rgbPins, LOW); digitalWrite(rgbPins, HIGH); delay(500); digitalWrite(rgbPins, LOW); digitalWrite(rgbPins, HIGH); delay(500); }

4. Siete colores del arcoiris

Ahora intentemos iluminar dos colores al mismo tiempo. Programemos la siguiente secuencia de colores:

  • rojo
  • rojo + verde = amarillo
  • verde
  • verde + azul = azul claro
  • azul
  • azul + rojo = morado

Omitimos el color naranja por simplicidad. Entonces resultaron ser seis colores del arcoíris :)

Byte constante rgbPins = (3,5,6); arco iris de byte constante = ( (1,0,0), // rojo (1,1,0), // amarillo (0,1,0), // verde (0,1,1), // azul ( 0,0,1), // azul (1,0,1), // violeta); configuración vacía() (para(byte i=0; i<3; i++) pinMode(rgbPins[i], OUTPUT); } void loop() { // перебираем все шесть цветов for(int i=0; i<6; i++){ // перебираем три компоненты каждого из шести цветов for(int k=0; k<3; k++){ digitalWrite(rgbPins[k], rainbow[i][k]); } delay(1000); } }

El resultado del programa es:

Su navegador no soporta la etiqueta de video.

5. Cambio de color suave

No en vano conectamos el LED RGB a los pines 3, 5 y 6. Como sabes, estos pines te permiten generar una señal PWM de diferentes ciclos de trabajo. En otras palabras, no podemos simplemente encender o apagar el LED, sino controlar el nivel de voltaje en él. Esto se hace usando la función analógicoEscribir.

Asegurémonos de que nuestro LED realice una transición entre los colores del arco iris no de forma abrupta, sino suave.

Byte constante rgbPins = (3,5,6); int tenue = 1; configuración vacía() (para(byte i=0; i<3; i++){ pinMode(rgbPins[i], OUTPUT); } // начальное состояние - горит красный цвет analogWrite(rgbPins, 255); analogWrite(rgbPins, 0); analogWrite(rgbPins, 0); } void loop() { // гасим красный, параллельно разжигаем зеленый for(int i=255; i>=0; i--)( analogWrite(rgbPins, i/dim); analogWrite(rgbPins, (255-i)/dim); delay(10); ) // apaga el verde, enciende el azul en paralelo for(int i=255 ; i> =0; i--)( analogWrite(rgbPins, i/dim); analogWrite(rgbPins, (255-i)/dim); delay(10); ) // apaga el azul, enciende el rojo en paralelo for(int i=255; i>=0; i--)( analogWrite(rgbPins, i/dim); analogWrite(rgbPins, (255-i)/dim); retraso(10); ) )

La variable tenue determina el brillo del resplandor. En tenue = 1 tenemos el brillo máximo.

Cargue el programa en Arduino.

Su navegador no soporta la etiqueta de video.

Misiones

  1. Indicador de temperatura. Agreguemos un termistor al circuito y conéctelo a la entrada analógica. El LED debe cambiar de color dependiendo de la temperatura del termistor. Cuanto más baja es la temperatura, más azul es el color y cuanto más alta es la temperatura, más rojo.
  2. Lámpara RGB con regulador. Agreguemos tres resistencias variables al circuito y conéctelas a las entradas analógicas. El programa debe leer continuamente los valores de resistencia y cambiar el color del componente LED RGB correspondiente.

Seguimos dominando el PWM, esta vez para controlar el color de un LED RGB.

Básicamente, un LED RGB combina tres LED convencionales: rojo, verde y azul.

En consecuencia, un LED RGB tiene 4 patas: una pata y una pata común (normalmente la más larga) se utilizan para controlar cada color. Tanto el cátodo (-) como el ánodo (+) pueden ser comunes. El diagrama muestra un ejemplo de un circuito con un ánodo común.

Cabe destacar que mezclando estos 3 colores puedes obtener casi cualquier otro color. Si enciendes los 3 LED al mismo tiempo, el color será blanco.

Ahora sobre la implementación, obtuve un LED con un cátodo común, la corriente nominal, que según la hoja de datos era de 20 mA. Sin embargo, hay un pequeño matiz: cada color tiene su propio umbral de ignición. Por ejemplo, para un LED rojo, 20 mA correspondían a un voltaje de 2,1 V, verde y azul, un voltaje de 3,2 V. En general, la pata del microcontrolador debe soportar esta corriente, por lo que puede conectarla de forma segura al microcontrolador a través de resistencias limitadoras de corriente.
Utilicé transistores pnp, pero no fuerzo esta idea a nadie.

Atmega8 tiene 3 canales PWM: dos canales en el temporizador1 (pines PB.1 - OCR1A, PB.2 - OCR1B) y uno en el temporizador2 (pin PB.3 - OCR2). Al ajustar el llenado PWM, ajustamos el voltaje en el LED y, en consecuencia, su brillo.

Crea un nuevo proyecto, configura un temporizador2.

Dado que OCR2 es de 8 bits y OCR1 es de 10 bits, el valor máximo de OCR2=0xFF(255) y OCR1A/B=0x3FF(1023), es decir 4 veces más. Tenemos en cuenta esta característica, por lo que para que los canales se regulen por igual, configuramos la frecuencia del temporizador en 4 veces mayor. En consecuencia, el brillo máximo para OCR2 será 0xFF y para OCR1, 0x3FF.

Configuramos las patas PB1-PB3 como salida. En el bucle principal del programa agregamos código que se enciende suavemente en rojo de 0 a 255 y luego lo apaga suavemente de 255 a 0.

mientras(OCR1A<0x3FF) { OCR1A++; delay_ms(2); } while(OCR1A>0x00) ( OCR1A--; retardo_ms(2); )

Resultado:

Si necesitas obtener un color determinado, por ejemplo el morado, abre algún editor gráfico, por ejemplo Paint.net, ve a la paleta, haz clic en el color que te guste, a la derecha, donde dice RGB, sus valores numéricos. Se mostrará R=255, B=220.

Tengo el canal R en OCR2, así que siéntete libre de escribir 0xFF(255) en OCR2, canal B en OCR1A, pero desde... el valor máximo es 1023, luego recalculamos por proporción:

(220*1023)/255=882 así que lo insertamos de forma segura en OCR1A, el resultado es bastante similar.

Los LED multicolores, o RGB como también se les llama, se utilizan para mostrar y crear una iluminación de color que cambia dinámicamente. De hecho, no tienen nada de especial, descubramos cómo funcionan y qué son los LED RGB.

Estructura interna

De hecho, un LED RGB son tres cristales de un solo color combinados en una sola carcasa. El nombre RGB significa Rojo - rojo, Verde - verde, Azul - azul, según los colores que emite cada cristal.

Estos tres colores son básicos, y al mezclarlos se forma cualquier color; esta tecnología se ha utilizado durante mucho tiempo en televisión y fotografía. En la imagen de arriba, puedes ver el brillo de cada cristal individualmente.

En esta imagen ves el principio de mezclar colores para obtener todos los tonos.

Los cristales en LED RGB se pueden conectar según el siguiente esquema:

Con ánodo común;

Con un cátodo común;

No conectado.

En las dos primeras opciones verás que el LED tiene 4 pines:

O 6 conclusiones en el último caso:

Puedes ver en la foto que hay tres cristales claramente visibles debajo de la lente.

Se venden almohadillas de montaje especiales para dichos LED, y en ellas incluso se indica la asignación de pines.

Los LED RGBW no se pueden ignorar; su diferencia es que en su carcasa hay otro cristal que emite luz blanca.

Naturalmente, no podríamos prescindir de tiras con este tipo de LED.

Esta imagen muestra una tira con LED RGB, ensamblada según un circuito con un ánodo común, la intensidad del brillo se ajusta controlando el “-” (menos) de la fuente de alimentación.

Para cambiar el color de una cinta RGB, se utilizan controladores RGB especiales: dispositivos para cambiar el voltaje suministrado a la cinta.

Aquí está la distribución de pines RGB SMD5050:

Y las cintas, no hay particularidades al trabajar con cintas RGB, todo sigue igual que con los modelos monocolor.

También existen conectores para conectar tiras de LED sin soldar.

Aquí está la distribución de pines de un LED RGB de 5 mm:

Cómo cambia el color del resplandor.

El ajuste del color se realiza ajustando el brillo de la radiación de cada uno de los cristales. Ya hemos mirado.

Un controlador RGB para cinta funciona según el mismo principio; contiene un microprocesador que controla el terminal negativo de la fuente de alimentación, lo conecta y desconecta del circuito del color correspondiente. Por lo general, se incluye un control remoto con el controlador. Los controladores vienen en diferentes capacidades, su tamaño depende de esto, a partir de uno en miniatura.

Sí, un dispositivo tan potente en una carcasa del tamaño de una fuente de alimentación.

Están conectados a la cinta según el siguiente esquema:

Dado que la sección transversal de las pistas en la cinta no permite conectar la siguiente sección de la cinta en serie con ella, si la longitud de la primera excede los 5 m, es necesario conectar la segunda sección con cables directamente desde el controlador RGB. .

Pero puede salir de la situación y no tirar 4 cables adicionales a 5 metros del controlador y usar un amplificador RGB. Para que funcione, es necesario estirar solo 2 cables (más y menos 12 V) o alimentar otra fuente de alimentación de la fuente de 220 V más cercana, así como 4 cables de “información” del segmento anterior (R, G y B), son necesario recibir comandos del controlador, para que toda la estructura brille por igual.

Y el siguiente segmento ya está conectado al amplificador, es decir. Utiliza la señal del trozo de cinta anterior. Es decir, puede alimentar la cinta desde el amplificador, que estará ubicado directamente al lado, ahorrando así dinero y tiempo en el tendido de cables desde el controlador RGB primario.

Ajustamos el LED RGB con nuestras propias manos.

Entonces, hay dos opciones para controlar los LED RGB:

Aquí hay una versión del circuito sin usar Arduino ni otros microcontroladores, usando tres controladores CAT4101 capaces de entregar corriente hasta 1A.

Sin embargo, ahora los controladores son bastante baratos y si necesita regular la tira de LED, es mejor comprar una opción ya preparada. Los circuitos con Arduino son mucho más sencillos, sobre todo porque puedes escribir un boceto con el que configurarás el color manualmente o la selección de colores será automática de acuerdo con un algoritmo determinado.

Conclusión

Los LED RGB permiten crear efectos de iluminación interesantes; se utilizan en el diseño de interiores, como iluminación de fondo para electrodomésticos y para ampliar la pantalla del televisor. No existen diferencias especiales al trabajar con ellos respecto a los LED convencionales.

En esta lección, usaremos las salidas digitales y analógicas de "Modulación de ancho de pulso" en la placa Arduino para encender un LED RGB en diferentes tonos. El uso de una tira de LED RGB le permite crear iluminación interior con cualquier tono de color. Hablemos sobre el dispositivo y la configuración de pines de un LED a todo color (RGB) y consideremos la directiva. #definir en lenguaje C++.

Diseño y finalidad de un LED RGB

Para mostrar toda la paleta de tonos, son suficientes tres colores mediante síntesis RGB (rojo - rojo, verde - verde, azul - azul). La paleta RGB se utiliza no sólo en editores gráficos, sino también en el desarrollo de sitios web. Mezclando colores en diferentes proporciones puedes conseguir casi cualquier color. Las ventajas de los LED RGB son su simplicidad de diseño, pequeñas dimensiones y alta eficiencia luminosa.

Los LED RGB combinan tres cristales de diferentes colores en un solo paquete. El LED RGB tiene 4 pines: uno común (el ánodo o cátodo tiene el pin más largo) y tres pines de color. Se debe conectar una resistencia a cada salida de color. Además, el módulo LED RGB Arduino se puede montar directamente en la placa y tener resistencias integradas; esta opción es más conveniente para las actividades en el aula.

Foto. Distribución de pines LED RGB y módulo LED RGB para Arduino

La distribución de pines del LED RGB se muestra en la foto de arriba. Tenga en cuenta también que muchos LED a todo color requieren difusores; de lo contrario, los componentes de color serán visibles. A continuación, conectaremos un LED RGB al Arduino y lo haremos brillar con todos los colores del arco iris usando "modulación de ancho de pulso".

Controlando un LED RGB en Arduino

Las salidas analógicas del Arduino utilizan "modulación de ancho de pulso" para producir diferentes niveles de corriente. Podemos suministrar las tres entradas de color del LED con diferentes valores de señal PWM en el rango de 0 a 255, lo que nos permitirá obtener casi cualquier tono de luz en el LED RGB Arduino.

Para esta lección necesitaremos los siguientes detalles:

  • Placa Arduino Uno/Arduino Nano/Arduino Mega;
  • tablero de circuitos;
  • LED RGB;
  • 3 resistencias de 220 ohmios;
  • cables macho-hembra.

Foto. Diagrama de conexión de LED RGB a Arduino en una placa de pruebas

El módulo LED RGB se puede conectar directamente a la placa, sin cables ni placa de pruebas. Conecte el módulo con un LED RGB a todo color a los siguientes pines: Menos- TIERRA B-Pin13, GRAMO-Pin12, R— Pin11 (ver primera foto). Si está utilizando LED RGB (diodo emisor de luz), conéctelo de acuerdo con el diagrama de la foto. Después de conectar el módulo y ensamblar el circuito en Arduino, cargue el boceto.

Boceto para LED RGB parpadeante

#definir ROJO 11 // Asigna el nombre RED al pin 11#definir VERDE 12 // Asigna el nombre VERDE al pin 12#definir AZUL 13 // Asigna el nombre AZUL al pin 13 configuración vacía () ( pinMode(ROJO, SALIDA); pinMode(VERDE, SALIDA); // Usa Pin12 para salida pinMode(AZUL, SALIDA); // Usa Pin13 para salida) bucle vacío () (escritura digital (ROJO, ALTO); //Enciende la luz roja escritura digital (VERDE, BAJO); escritura digital (AZUL, BAJO); retraso(1000); escritura digital (ROJO, BAJO); escritura digital (VERDE, ALTA); //Enciende la luz verde escritura digital (AZUL, BAJO); escritura digital (ROJO, BAJO); }

retraso(1000);

  1. // Establecer una pausa para el efecto
  2. escritura digital (ROJO, BAJO);
  3. escritura digital (VERDE, BAJO);
  4. escritura digital (AZUL, ALTA);

    //Enciende la luz azul

    retraso(1000);

    Explicaciones del código: Usando la directiva #define, reemplazamos los números de pin 11, 12 y 13 con los nombres correspondientes ROJO, VERDE y AZUL. Esto se hace por conveniencia, para no confundirse en el boceto y comprender qué color incluimos; en el procedimiento void setup() asignamos los pines 11, 12 y 13 como salidas; en el procedimiento void loop() encendemos los tres colores del LED RGB uno por uno. Control LED RGB suave El control de un LED rgb en un Arduino se puede simplificar utilizando salidas analógicas con “modulación de ancho de pulso”. Para hacer esto, las entradas de color en el LED deben conectarse a salidas analógicas, por ejemplo, a los pines 11, 10 y 9. Y alimentarlos con diferentes valores PWM para diferentes tonos. Después de conectar el módulo mediante cables macho-hembra, cargue el boceto. Boceto para un parpadeo suave de un LED RGB #definir ROJO 9// Asigna el nombre RED al pin 9 #definir VERDE 10// Asigna el nombre VERDE al pin 10 #definir AZUL 11// Asigna el nombre AZUL al pin 11 //Enciende la luz roja configuración vacía() (pinMode(ROJO, SALIDA); escritura digital (AZUL, BAJO);// Usa Pin9 para salida //Enciende la luz verde }

    retraso(1000);

    1. pinMode(VERDE, SALIDA);
    2. // Usa Pin10 para salida

Los LED RGB, a veces llamados LED de 3 colores, no son más que diodos rojos, verdes y azules combinados en un solo paquete.

  • Sabiendo esto, es fácil imaginar cómo se diseñan los LED rgb. Para cada uno de los 3 colores hay su propia pata de cátodo y otra es un ánodo común. El cable del ánodo es el más largo y los cátodos suelen estar dispuestos en el siguiente orden:
  • azul;
  • verde;

rojo.

Para que el dispositivo brille en uno de los colores especificados, se debe aplicar una señal al cátodo correspondiente. Si necesita algún otro tono, puede obtenerlo mediante modulación de ancho de pulso (PWM, señal PWM). El número de colores resultantes depende de cómo se implemente el control y de la profundidad de bits PWM. El color blanco también es bastante fácil de conseguir: todo lo que necesitas hacer es encender todos los LED al mismo tiempo.

Los LED RGB también pueden tener una estructura diferente, lo que determina sus características principales (su potencia, etc.). En el caso de un dispositivo con cátodo común, cada color tiene su propio umbral de ignición, separado del siguiente por un par de voltios. Los dispositivos con un "+" común encienden el LED deseado cuando el valor es "0" en la salida del microcontrolador, y con un "-" común - en "1".

El control de los LED rgb se puede implementar en microcontroladores de 8 bits de la familia Pic, AVR (ATtiny, ATmega) y modelos más potentes, cuyo programa está compilado en ensamblador.

En teoría, las patas de los microcontroladores deberían diseñarse para una cierta cantidad de corriente, pero los LED rgb se pueden conectar a través de una resistencia limitadora de corriente o un transistor pnp.

Controlar leds rgb

El control de los LED consiste en establecer el valor deseado de sus parámetros. Para hacer esto, se deben suministrar a las salidas pulsos rectangulares de un cierto ciclo de trabajo, lo que afectará el valor de la corriente promedio y, en consecuencia, el brillo promedio.

Si la frecuencia del pulso es insuficiente, los LED parpadearán. Para que brillen constantemente, el umbral de frecuencia inferior debe ser de unos 60-70 Hz (monitores de modelos más antiguos), e idealmente de al menos 100 Hz (más potentes y modernos).

Los controladores de serie de gama baja, por regla general, no tienen solo 3 PWM, sino incluso 3 temporizadores con interrupciones (en base a los cuales es fácil implementar PWM). Se debe considerar cómo se implementará el circuito de control utilizando ejemplos específicos, dependiendo de la arquitectura del dispositivo específico.

Base teórica para implementar el circuito de control LED rgb.

Primero, debes recordar qué es PWM. Brevemente, este es el modo de funcionamiento del dispositivo en el que el ciclo de trabajo (nivel de señal) está regulado por el microcircuito de acuerdo con algoritmos específicos.

Para implementar un canal PWM necesitas saber:

  • algoritmo para determinar el factor de llenado (establecido por el usuario);
  • temporización de la señal de alto nivel;
  • el tiempo de todo el impulso.

En la implementación práctica, esto requerirá 2 contadores, que funcionarán según el siguiente algoritmo:

  1. Al iniciar los contadores, la salida se establece en “1”.
  2. Interrupción del contador N°1 (tiempo de nivel alto), la salida pasa a “0”.
  3. El contador nº 1 se apaga.
  4. Interrumpiendo el contador No. 2 – repitiendo todas las operaciones desde el principio.

Resulta que el circuito de control de LED rgb, independientemente de la potencia de los dispositivos, debe incluir 2 contadores para el canal PWM, es decir, 6 en total.

Incluso si hace que la duración del pulso sea la misma para todos los canales, su número se reducirá en 2. Los controladores simples no tendrán 4 contadores, pero no olvide que el informe de tiempo es discreto.

Aquí debe seleccionar un cuanto de tiempo que será un múltiplo de la duración del pulso en cada canal.

T=1/(f*(2n-1)),

n – valor de bit PWM;

f – frecuencia.

El circuito puede incluir 1 contador para contar el intervalo T. Para que realice la función requerida, se deben configurar 4 configuraciones:

  1. Número de muestras de nivel superior para 1 canal PWM.
  2. Número de muestras de nivel superior para el segundo canal PWM.
  3. Número de muestras de nivel superior para el tercer canal PWM.
  4. Duración total del pulso.

Otras operaciones del contador de software (conmutación, reinicio, etc.) se realizan mediante interrupciones de hardware.

Este algoritmo es sólo un ejemplo de un circuito de control, cuyo funcionamiento puede diferir significativamente dependiendo del microcontrolador utilizado y también de cómo exactamente se planea utilizar los LED. Los dispositivos más potentes también pueden funcionar con tiras de LED.




Arriba