Matriz Led, Led Matrix, Shift Register, registro de desplazamiento, proyecto arduino, tutorial arduino, ejemplo arduino,

# Matriz LED 8x8 Bicolor + 74CH595

Hola amig@s!

Os presento uno de los tutoriales que posteo en mi web http://www.arduinoacademy.com y que a partir de ahora iré posteando aquí también.

Parte 1: ¿Que vamos a hacer?

En este proyecto arduino, vamos a aprender a conectar una matriz de LED 8x8 bicolor a través de unos registros de desplazamiento (Shift register) que nos van a permitir ahorrar muchos pines en nuestra placa, obteniendo un resultado tan espectacular como se puede ver en este video:

 

Hilo oficial del foro en Arduino Academy AQUI

Material necesario para este tutorial:

  • 1 x Arduino Uno
  • 1 x Protoboard (o 2 si son pequeñas)
  • 1 x Matriz LED Bicolor
  • 2 x Registros de desplazamiento (Shift Register 74CH595)
  • 16 x Resistencias 220Ω
  • 1 x Juego de Cables

 

 

Parte 2: Diseñando el Hardware...

 

En este circuito, no reside demasiada complejidad a la hora de diseñarlo, pues ya conocemos perfectamente que es un diodo LED, como se conecta y cual es la resistencia que debemos colocar en función de sus características técnicas, y una matriz, como veremos, no es más que un montón de led en un mismo encapsulado, si no lo recordáis, podéis echar un vistazo a los siguientes post:


 

A la hora de pensar en el diseño del circuito, es simplemente seguir las instrucciones de cada fabricante para conectar tanto las matrices, como los registros de desplazamiento, así que nos centraremos en entender al máximo posible estos elementos para que podáis desarrollar por vosotros mismos, ya que las matrices no suelen tener nada que ver unas con otras y es probable que la que yo use aquí, no sea como la vuestra, pero si aprendemos a identificarlas correctamente, no habrá mayor problema!!

 


¿Qué es una matriz de diodos LED?

 


Una matriz de diodos LED, no es más que un montón de diodos LED dentro de un mismo encapsulado en el que distribuimos los ánodos en 8 columnas de 8 diodos unidos entre sí y los cátodos en 8 filas de 8 diodos (o viceversa, hay muchos modelos) formando, como su nombre indica, una matriz de "pixeles", siendo cada pixel la intersección de una fila con una columna.

 

Cuando nos hablan de una matriz 8x8 o 7x5, se refieren a la cantidad de filas x columnas que posee, por lo que una matriz de 8x8 es una matriz de 64 diodosLED, veamos el diagrama de conexión de una matriz de un solo color 8x8 con cátodos en filas y ánodos en columnas.

 


"Diagrama matrid led 8x8", "Arduino led matrix", "led matrix"

 

En primer lugar, debemos diferenciar entre la numeración de los PINES, con la numeración de las filas y columnas, donde el número de pin será aquella patilla física que conectaremos a nuestro Arduino, y la fila y columna,  la referencia que tomaremos para encontrar un LED determinado, al más estilo de hundir la flota, fila 2 - columna 3 = Hundido.. digo.. encendido..

 

Debéis siempre mirar vuestra hoja de características de la matriz, porque puede ser que difieran las conexiones internas de una marca a otra, o incluso en la misma marca, es decir, que en esta matriz, por ejemplo, la fila uno se corresponde con el pin 9, pero puede darse el caso que en otro modelo sea diferente, o que incluso las filas sean ánodos.

 

Una vez entendido esto, veamos como hacer que se encienda un diodo de la matriz.

 

Como antes comentaba, es muy similar al viejo juego de hundir la flota, una fila "i" con una columna "j" nos va a dar una coordenada única, y para encender ese diodo, tan solo tendremos que tener la fila conectada a masa y la fila a positivo.

 

Si tenemos varias filas conectadas a masa, por ejemplo la 1 la 3 y la 5, al introducir una tensión positiva por la columna 1, se encenderán los diodos correspondientes a F1 - C1, F3-C1 y F5 - C1, siendo F = Fila y C = Columna.

 

Pero claro, a nosotros nos interesa crear ciertas formas o letras en la matriz, y si quisiéramos "dibujar" dos filas diferentes entre si, no podríamos, ya que si tenemos la fila 1 y 2 conectadas a masa, y en la primera fila queremos encender el led de la primera columna, y en la segunda fila, el de la segunda columna, al tener constantemente alimentadas a positivo las dos columnas y a negativo las filas, se van a encender siempre los cuatro led de la esquina superior izquierda, intentar entenderlo, es importante.

 

Para solucionar esto, lo que se hace es sincronizar instantes, es decir, seguir el siguiente algoritmo:


  • Conecto a masa la fila uno y a positivo la columna 1
  • Quito masa de la fila uno y positivo de la columna 1.
  • Conecto a masa fila 2 y a positivo la columna 2.
  • Quito masa de la fila 2 y positivo de la columna 2.
  • .........


Y esto lo repetimos tan rápidamente, que al ojo humano, nos parece que están encendido los dos diodos constantemente, observar esta animación para entender como se dibuja la letra W en una matriz haciendo coincidir ciertas columnas con determinadas filas de una manera muy rápida.




¿Qué es un registro de desplazamiento?

 

El CI (circuito integrado) 74CH595 es un chip con 8 salidas digitales las cuales vamos a poder controlar de una manera muy sencilla con solo tres pines de nuestro Arduino, además, se pueden conectar en cascada ilimitadamente en detrimento, eso sí, de la velocidad con la que queramos actuar en una salida determinada, siendo más baja, cuantos más integrados usemos.

 

¿Cómo lo consigue?

 

Nosotros le mandamos palabras de 8 bit (desde 00000000 hasta 11111111) por una salida digital y él las interpreta de tal manera que el primer 0 o 1 empezando por la derecha, establece el estado (0 o 1) de la primera salida del chip, el segundo 0 o 1, el de la segunda salida de chip, y así sucesivamente...

 

Recomiendo familiarizarse con el sistema binario, y sobre como pasar de binario a decimal para comprender mejor este tutorial, podéis hacerlo desde ESTE ENLACE A WIKIPEDIA.Para seguir explicando de una manera más técnica, veamos el esquema de patinaje de este chip:

 


"Desplazamiento de registro", "Matriz Led" "Led matrix", Arduino

 

Donde:


  • Q0 - Q 7: Salidas en paralelo a las que conectaremos los ánodos de nuestra matriz.
  • Gnd: Masa de alimentación del chip.
  • Q7': Salida serie donde conectaremos otro chip si nos hicieran falta más salidas digitales, de manera que la primera palabra de 8 bit pasaría de largo del primer chip y se derivaría por esta patilla al segundo.
  • MR: Master reset, el cual tendremos conectado a +Vcc.
  • SH_CP: Pin para el reloj que controlaremos desde Arduino y que marcará la frecuencia de desplazamiento del registro a modo de un pulso por bit, si tenemos un solo registro de desplazamiento, el tren de pulsos se vería como en la siguiente imagen:

 

"tren de impulsos" "Shift register" tiempo, Arduino, osciloscopio,

  • ST_CP: Pin para el latch, este pin deberemos ponerlo a "0" desde arduino cuando queramos enviar un dato para que el chip nos "escuche" y a "1" cuando hayamos terminado, hasta que nos se pone a "1", no se escriben las salidas de ningún chip. Si observamos parpadeos o inestabilidades, se le debe colocar un condensador de 100nf (Nano Faradios, los cuales ya veremos más adelante). Aquí os dejo unas imágenes de la señal de latch sin condensador en la primera y con condensador en la segunda:

 

 

"proyecto Arduino" "tutorial arduino" Arduino, tutorial, proyectohttp://www.arduinoacademy.com/wp-content/uploads/2012/02/latch.bmp

 

 

"Señal de Latch con condesador" "desplazamiento de registro" "Shift register" Arduino

 

  • /OE: Ouput enable negado, o salida disponible negada, la cual llevaremos a masa.
  • DS: Datos en serie que enviaremos desde nuestro Arduino para que los reparta por las salidas.
  • Vcc: Alimentación +5v del chip

 

Para identificar las patillas en vuestro chip, debéis colocarlo de manera que la muesca del extremo del chip, quede como en la imagen, así podréis saber cual es cada patilla sin lugar a dudas.


Con todo esto, ya debemos tener algo más claro el funcionamiento de estos nuevos componentes, así que veamos el circuito a montar y empecemos a programar!

Como comenté al principio, el circuito en sí es muy sencillo, simplemente se debe tener claro las características técnicas de la matriz y como funciona un registro de desplazamiento.

El esquema interno de una matriz bicolor, se corresponde al de la siguiente imagen:

"LED Matrix" "matrix led" "8x8" "bicolor" Arduino, tutoriales, proyectos, ejemplos,

De manera que lo único de debéis hacer es conectar las salidas de un registro a las columnas de un color, y las salidas de otro a las del otro color.

En cuanto a la conexión de los registros de desplazamiento, es muy sencilla, un pin para el latch, uno para el clock y otro para los datos.

La manera de encadenarlos es conectando Q7' del primero a DS del segundo.

Veamos la distribución en protoboard para que quede todo más claro!

He decidido no enlazar los cables a la matriz para que así, cada uno simplemente busque en el datasheet (características técnicas) de su matriz, el pin correspondiente a cada fila y columna de cada color. Fácil, no? Haz click en la imagen para agrandarla.

"LED MATRIX" ARDUINO, ELECTRONICA, 8X8, PROTOBARD

Aquí de nuevo no he colocado las conexiones a la matriz, de esta manera es menos lioso y así os hago trabajar un poco!! Simplemente tendréis que unir de Q0 a Q7 con cada ánodo columna de la 1 a la 8 respectivamente en vuestros desplazamientos de registros.

"tutoriales arduino" "ejemplos Arduino" "Proyectos arduino" "74 595" "led matrix" "shift register"

Una vez que tenemos todo conectado.. empecemos a programar!

Parte 3: Programando...

Si queréis toda la información del programa de este tutorial, lo tenéis en este enlace:

http://wp.me/p1Yl1U-Jd

Es algo farragoso publicarlo aquí, se descuadra todo.

Un saludo a td@s!

Hasta pronto desde Arduino Academy!!