Cómo conectar y programar una Tira led WS2812B con Arduino

Categorías: ,
Etiquetas: ,

En este post vamos a aprender a conectar y programar una tira led WS2812B con Arduino.

Así vamos a conseguir diferentes efectos de luces y colores en la tira led.

Mediante un botón vamos a poder saltar de efecto en efecto o lo que es lo mismo, de programa en programa.

Veremos programas para efectos de luces sencillos y otros para efectos más complejos.

tira led inputmakers
Kit Control de la Tira Led de InputMakers

Para ello:

  • Puedes repasar cómo montar un botón mediante el montaje PULL-UP en este post dedicado a ello.
  • Estudiaremos en detalle la tira led WS2812B (neopixel).
  • Veremos el montaje o esquema del circuito.
  • Aprenderemos la programación de diferentes secuencias de luces.

LA TIRA LED WS2812B:

Es una tira formada por una sucesión de leds (Led5050) que tiene la característica de que podemos modificar el color de cada led de manera independiente.

Dicho modelo es del tipo “individual addressable” esto significa que podemos acceder a cada led de forma individual gracias al integrado que lleva cada led.

Los datos se envían en serie ya que los leds están conectados en cadena, de tal forma que cada led almacena el dato que lleva su dirección y hace de transmisor para el led siguiente. Esto permite dividir o sumar más leds y el resultado seguirá funcionando. Esta transmisión no será perceptible al ojo humano ya que se realiza a altas velocidades (400 Hz).

Cada led tiene incorporado un pequeño circuito integrado. Dicho integrado es capaz de almacenar 3 bytes (8 bits por byte). Cada byte corresponderá a un color RGB por lo que cada color puede tener 28= 256 niveles y por tanto el led podrá dar un total de 2563 colores.

El modelo de tira led WS2812B también llamado NeoPixel y tiene las siguientes características:

Longitud1 m
Densidad de leds60 leds/m
Ingress Protectión (IP)IP30*
*Protegido contra el ingreso de objetos sólidos de más de 2,5 mm de diámetro y sin protección contra el ingreso de agua.

Conexionado de la tira led WS2812B:

La tira led se conecta a través de tres cables que corresponden a:

NegativoGND
DinPin digital de la placa (la conectaremos al pin 6)
Positivo+5V

¿Podemos alimentar la tira led directamente desde la placa compatible con arduino?

Veamos, el caso más desfavorable es que todos los leds de la tira estén iluminando en blanco intenso. Esto requeriría un consumo de unos 60 mA por cada led. (Cada led de la tira está formado por tres pequeños leds que consumen 20mA cada uno, esto es: 20+20+20=60 mA).

En nuestro caso para los 60 led de que consta nuestra tira supondrían:

lo que es inasumible para una placa compatible Arduino porque recordemos que cada pin puede dar un máximo de 40 mA (valor recomendado 20 mA) con la resticción de que como máximo el conjunto de todas las salidas debe ser menor de 300 mA (siempre que no superen 150 mA por puerto).

Por lo tanto, NO PODEMOS ALIMENTAR LA TIRA LED DIRECTAMENTE DESDE LA PLACA.

Entonces debemos alimentar por un lado la tira led y por otro independiente la placa.

Lo ideal es alimentarla con una fuente de alimentación de 5V y 2A para alimentar la tira led. Pero ¿es suficiente con la potencia que nos suministra esta fuente?

Veamos: la potencia máxima que nos puede dar la fuente será:

Si sabemos que por lo general, la corriente real para un diseño colorido es aproximadamente 1/3 a 1/2 de la corriente máxima, esto corresponderá a unos valores de potencia de:

Por tanto, la fuente de alimentación cumple con la condición de potencia.

Respecto a la placa compatible con Arduino, no podemos alimentarla desde la fuente de alimentación de 5V porque lo deberíamos hacer mediante el pin de 5V y si por un descuido o desconocimiento intentáramos alimentar el proyecto por el usb o el conector DC de la placa (y no mediante la fuente) podríamos romper la placa ya que esta intentaría suministrar intensidad por el pin de 5V hacia la tira led y como hemos dicho, la tira led requiere mucho más potencia de la que la placa puede dar.

Por tanto debemos utilizar un conector DC para alimentar la tira mediante la fuente de alimentación y una pila de 9V para alimentar la placa de manera independiente a la tira led.

Destacar que la tierra (GND) de la placa ha de ser común a la de la tira led.

También habrá que montar una resistencia de 470 Ohm entre el pin de salida digital y el Din de la tira led, esto evitará posibles daños en los primeros leds.

Por último, para reducir riesgo de quemado de la WS2812B se recomienda añadir un condensador de 1000uF entre 5V y GND.

MONTAJE O ESQUEMA DEL CIRCUITO:

Para hacerlo más fácil vamos a verlo por partes:

  1. Primero mostraremos el esquema para el montaje del botón (PULL-UP).
  2. Segundo mostraremos el esquema para montar la tira led WS2812B (Neopixel).
  3. Tercero y último mostraremos los dos anteriores juntos, es decir el montaje final.

Esquema para el montaje del botón PULL-UP:

Utilizamos dos placas protoboard mini porque queremos hacer accesible el botón desde fuera de una caja donde guardamos todo el montaje. (Puedes ver nuestro Kit Control de tira led).

Si simplemente vas a hacer el montaje a modo de práctica puedes montarlo sobre una única placa protoboard más grande.

Como se indica en el post dedicado a cómo usar o conectar un pulsador con Arduino que mencionamos al principio de este post, es posible conectar el pulsador sin la resistencia de 4k7 ohms activando la resistencia PULL-UP interna de Arduino con el comando pinMode(pin, INPUT_PULLUP); pero en este caso hemos decidido realizar el montaje con dicha resistencia ya que hay espacio suficiente y también para que sirva como práctica.

Esquema para el montaje o conexión de la tira led WS2812B (Neopixel):

Como puedes observar montamos sobre una fila todos los negativos (cables de color negro):

  • Del conector de alimentación.
  • De la tira WS2812B (Neopixel).
  • El negativo del condesador.
  • El negativo de la placa compatible con Arduino.

(Recordar que hay que hacer el negativo común).

Y sobre otra fila todos los positivos (cables de color rojo):

  • Del conector de alimentación.
  • De la tira WS2812B (Neopixel).

Después también hay que tener en cuenta que hemos de conectar una resistencia de 470 Ohm entre el pin de salida digital y el Din de la tira led.

Esquema final de todo el conjunto:

montaje tira led inputmakers
Montaje real del circuito.

PROGRAMACIÓN TIRA LED WS2812B (Neopixel):

A continuación vamos a estudiar cómo programar diferentes programas de luces para la tira led WS2812B (neopixel) que serán activados de forma secuencial con el botón.

Podrás comprobar que este es el proyecto más complicado hasta la fecha que hemos realizado en cuanto a programación.

A poco que sepas de programación no te será complicado entenderlo y te resultará un reto asumible para así dar un paso más en el aprendizaje de programación.

Si realmente es la primera vez que intentas programar te aconsejamos que visites otras entradas al blog mucho más sencillas.

Lo primero es añadir la librería Adafruit_NeoPixel.h para la tira led.

Esto nos permitirá hacer funcionar la tira led WS2812B correctamente.

¿Cómo las instalamos? Vamos a

Herramientas > Administar bibliotecas

Aparecerá el gestor de Librerías. Escribimos en la búsqueda “Adafruit Neo Pixel”. La buscamos y la instalamos. 

Ahora sí, vamos con el programa:

Esperamos que te haya gustado este post y que hayas disfrutado descifrando la programación :))

En nuestra página encontraréis el proyecto del “CONTROL DE TIRA LED” en el que encontrarás más programas de luces y con el que podrás ampliar tus conocimientos sobre programación.

¡También puedes intentar programar la tira led con tu color favorito modificando el código!

IMPORTANTE: OFRECEMOS GRANDES DESCUENTOS PARA CENTROS EDUCATIVOS! SI ERES UN CENTRO EDUCATIVO PIDE PRESUPUESTO PERSONALIZADO AQUÍ

[product_page id=”246″]

Comparte si te ha gustado 🙂

Saludos del equipo de InputMakers y ¡Sigue siempre aprendiendo!

Twitter
Facebook
WhatsApp

Deja un comentario