LED RGB y Arduino. Conexión y control de tira de LED a arduino

Este esquema sirve para iluminar eficazmente un objeto, por ejemplo, un acuario, y también puede ser una adición a la modificación de la computadora. Este dispositivo controla LED de tres colores (RGB) y muestra los colores en un orden completamente aleatorio.

El principio de funcionamiento general del controlador se muestra en la Figura 1. Los dos generadores generan pulsos rectangulares con una tasa de llenado del 50%, pero difieren ligeramente en la frecuencia (hasta decenas de Hz).

En la salida del elemento lógico EX-OR (OR exclusivo), aparecerá un nivel alto solo cuando aparezca 1 o 0 en ambas salidas de los generadores simultáneamente.

El diagrama de las señales en las salidas de los generadores se muestra en la Figura 2. Como se puede observar, en la salida del elemento lógico EX-OR aparece una onda cuadrada con un llenado variable de 0...100%. Este llenado cambiará tanto más lentamente cuanto menor sea la diferencia de frecuencias de ambos generadores.

El chip CD4060 es un contador binario de 14 bits con un oscilador. El inductor miniatura L1, los condensadores C1 y C2 y las puertas lógicas CD4060 forman un oscilador de alta frecuencia que funciona a aproximadamente 700 kHz. Esta frecuencia se divide por 212 en este contador.

La señal del generador también se envía a las entradas CLK de los contadores binarios de 12 bits en el CD4040, que cuentan los pulsos del generador.

Cuando el conteo llega al punto donde aparece uno lógico en la salida Q11 (pin 15), la salida del elemento NOT será baja, lo que provocará el bloqueo del conteo de pulsos durante una fracción de segundo (el tiempo depende de la capacitancia C3 y la resistencia total de R2 y PR1).

Y esto sucede cada vez que aparece un nivel alto en la salida Q11 CD4040, es decir, como se puede ver, cada vez que cambia el estado en la salida Q12 CD4040. Esto lleva al hecho de que la frecuencia en la salida Q12 CD4060 es ligeramente mayor que la frecuencia en la salida Q12 CD4040 (la diferencia depende de C3, R y cuanto mayor sea el valor, mayor será la diferencia).

Gracias a esta mínima diferencia, en los elementos EX-OR aparece un meandro de tiempo de llenado variable. Esto, a su vez, conduce al hecho de que el LED conectado a la salida de este circuito se encenderá y apagará suavemente.

Se pueden utilizar resistencias variables para regular la velocidad de cambio de llenado (la velocidad de encendido y apagado de los LED). También en el circuito se ha añadido un fotosensor en los elementos T4, T5 y R14, de modo que el circuito se enciende automáticamente sólo en la oscuridad. La resistencia de la resistencia R14 determina con qué brillo seguirá funcionando el circuito.

(233,6 Kb, descargas: 422)

O retroiluminación con posibilidad de cambiar de color, por lo que el tema de los controladores LED es muy relevante. El circuito propuesto para dicho dispositivo controla los LED RGB a través de MOSFET de canal H, que permiten controlar matrices o lámparas de LED de hasta 5 amperios por canal sin el uso de disipadores de calor.

Esquema eléctrico y descripción.

Durante las pruebas, el controlador se conectó a bombillas halógenas de 50 W y 12 V, una para cada canal. La temperatura de los transistores MOSFET después de un funcionamiento de 5 minutos fue ligeramente superior a 50 °C. En teoría, la carga total para los tres canales RGB no debería exceder los 15 amperios.

El transistor especificado STP36NF06L funciona con un voltaje de puerta bajo. Puede utilizar otros FET de canal N estándar que funcionarán bien con corrientes de carga de hasta 5 amperios y no requerirán demasiada señal de entrada para encenderse por completo.

La conexión de cables a la placa de circuito impreso también debe corresponder a la corriente que pasarán por ellos. Los LED, tiras de LED y módulos conectados al controlador deben tener un ánodo común, como se muestra en el diagrama anterior.

Aquí hay una implementación que utiliza 20 LED Piranha RGB. La lámpara se monta en una caja de aluminio de 25 x 50 x 1000 mm. Posteriormente se adaptó a un estante de pared para iluminar la mesa. La luz es muy brillante y proporciona una iluminación buena y uniforme sin ningún difusor adicional.

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 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 suave de LED RGB 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

pinMode(AZUL, SALIDA);

// Usa Pin11 para salida

) bucle vacío () ( analogWrite (RED, 50);

Una placa Arduino es un dispositivo en el que se instala un microcontrolador programable. Se le conectan varios sensores, controles o codificadores y, según un esquema (programa) determinado, la placa controla motores, LED y otros actuadores, incluidas otras placas Arduino a través del protocolo SPI. El dispositivo se puede controlar mediante un mando a distancia, módulo Bluetooth, HC-06, Wi-Fi, ESP o internet y botones. Algunas de las placas más populares son Arduino Nano y Arduino Uno, así como Arduino Pro Mini, un dispositivo basado en el microcontrolador ATmega 328.


Aspecto del Arduino Pro Mini
Aparición de Arduino Uno
Aspecto del micro Arduino

La programación se realiza en el entorno Arduino de código abierto instalado en una computadora normal. Los programas se descargan a través de USB.

El principio de control de carga a través de Arduino.


mando arduino

La placa tiene muchas salidas, tanto digitales, con dos estados: encendido y apagado, como analógicas, controladas mediante un controlador PWM con una frecuencia de 500 Hz.

Pero las salidas están diseñadas para una corriente de 20 a 40 mA con un voltaje de 5 V. Esto es suficiente para alimentar un LED indicador RGB o un módulo LED de matriz de 32x32 mm. Para una carga más potente esto no es suficiente.

Para resolver este problema en muchos proyectos es necesario conectar dispositivos adicionales:

  • Relé. Además de los relés individuales con una tensión de alimentación de 5 V, existen conjuntos completos con diferente número de contactos, así como con arrancadores integrados.
  • Amplificadores basados ​​en transistores bipolares. La potencia de dichos dispositivos está limitada por la corriente de control, pero puede ensamblar un circuito a partir de varios elementos o usar un conjunto de transistores.
  • Transistores de efecto de campo o MOSFET. Pueden controlar cargas con corrientes de varios amperios y voltajes de hasta 40 - 50 V. Al conectar el Mosfet a PWM y un motor eléctrico u otra carga inductiva, se necesita un diodo protector. Cuando se conecta a LED o lámparas LED, esto no es necesario.
  • Tarjetas de expansión.

Conexión de tira de LED a Arduino


conectar tira de LED a Arduino

Opinión de expertos

Alexei Bartosh

Especialista en reparación y mantenimiento de equipos eléctricos y electrónica industrial.

Hazle una pregunta a un experto

Arduino Nanos puede controlar más que solo motores eléctricos. También se utilizan para tiras de LED. Pero como la corriente de salida y el voltaje de la placa no son suficientes para conectarle directamente una tira con LED, se deben instalar dispositivos adicionales entre el controlador y la tira de LED.

A través de relevo


Conexión mediante relé

El relé está conectado al dispositivo a través de una salida digital. La tira controlada con él tiene solo dos estados: encendido y apagado. Para controlar la cinta roja, azul y verde, se necesitan tres relés. La corriente que puede controlar un dispositivo de este tipo está limitada por la potencia de la bobina (una bobina de baja potencia no puede cerrar contactos grandes). Para conectar más energía, se utilizan conjuntos de relés.

Usando un transistor bipolar


Conexión mediante un transistor.

Se puede utilizar un transistor bipolar para amplificar la corriente y el voltaje de salida. Se selecciona en función de la corriente y el voltaje de la carga. La corriente de control no debe ser superior a 20 mA, por lo que se suministra a través de una resistencia limitadora de corriente de 1 a 10 kOhm.

Es mejor usar un transistor. npn con un emisor común. Para una mayor ganancia, se utiliza un circuito con varios elementos o un conjunto de transistores (microcircuito amplificador).

Usando un transistor de efecto de campo

Además de los bipolares, se utilizan transistores de efecto de campo para controlar las tiras. Otro nombre para estos dispositivos es MOS o transistor MOSFET.

Un elemento de este tipo, a diferencia de uno bipolar, no está controlado por corriente, sino por voltaje en la puerta. Esto permite que la baja corriente de compuerta impulse grandes corrientes de carga, hasta decenas de amperios.

El elemento está conectado a través de una resistencia limitadora de corriente. Además, es sensible al ruido, por lo que la salida del controlador debe conectarse a tierra con una resistencia de 10 kOhm.

Usando tarjetas de expansión


Conexión de Arduino mediante placas de expansión

Además de relés y transistores, se utilizan bloques y placas de expansión prefabricados.

Podría ser Wi-Fi o Bluetooth, un controlador de control de motor como el módulo L298N o un ecualizador. Están diseñados para controlar cargas de diferente potencia y voltaje. Dichos dispositivos son de un solo canal (solo pueden controlar una tira monocromática y multicanal) diseñados para dispositivos RGB y RGBW, así como tiras con LED WS 2812.

Programa de ejemplo


Arduino y tira de LED

Las placas Arduino son capaces de controlar estructuras LED según programas predefinidos. Puede descargar sus bibliotecas desde el sitio web oficial, encontrarlas en Internet o escribir un nuevo boceto (código) usted mismo. Puedes montar un dispositivo de este tipo con tus propias manos.

A continuación se muestran algunas opciones para utilizar dichos sistemas:

  • Control de iluminación. Mediante un sensor de luz, la luz de la habitación se enciende inmediatamente y aumenta gradualmente a medida que se pone el sol. El encendido también se puede realizar vía wifi, con integración en el sistema “smart home” o conexión telefónica.
  • Encender la luz en las escaleras o en un pasillo largo. La iluminación LED de cada escalón por separado se ve muy bien. Cuando se conecta un sensor de movimiento al tablero, su activación provocará un encendido secuencial y retardado en el tiempo de la iluminación de la escalera o pasillo, y el apagado de este elemento provocará el proceso inverso.
  • Música en colores. Aplicando una señal de audio a las entradas analógicas a través de filtros, la salida será una instalación de color y música.
  • Modificación de computadoras. Con la ayuda de sensores y programas adecuados, el color de los LED puede depender de la temperatura o la carga del procesador o la RAM. Este dispositivo funciona utilizando el protocolo dmx 512.
  • Controlar la velocidad de las luces de circulación mediante un codificador. Se ensamblan instalaciones similares en los microcircuitos WS 2811, WS 2812 y WS 2812B.

Instrucciones en vídeo

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.

Hagamos que nuestro LED realice una transición entre los colores del arco iris no de manera 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); delay(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.



Arriba