miércoles, 22 de junio de 2016

Panel luminoso de Matrices LED 8x8 con driver MAX7219


En este tutorial aprenderemos a controlar las matrices LED de 8×8 con Arduino, en concreto vamos a usar los módulos que llevan el driver MAX7219, y para controlarlos utilizaremos la librería “MaxMatrix.h”, que nos facilitarán enormemente el trabajo. Lo que haremos en cuestión, será mostrar un mensaje en forma de texto que se va a desplazar de derecha a izquierda (Scroll horizontal) a través de las 4 matrices LED 8x8 que conectaremos en cascada, repitiéndose constantemente. 

La Matriz LED de 8×8, está compuesta por 64 LED de 3mm, en color rojo. Internamente los LED, están montados con cátodo común dentro de un encapsulado sólido de fibra de vidrio para protegerles. Algunas de las principales características de las matrices LED 8x8 se describen a continuación: 

·         Voltaje de Trabajo: 4.7 -5.3 V
·         Tensión típica: 5 V
·         Consumo de corriente: 320mA
·         Corriente de trabajo máxima: 2A
·         Temperatura: 0 -50 °C
·         Temperatura de trabajo: 25 

El driver MAX7219 (de Maxim) que contiene cada módulo,  sirven para implementar una interfaz  SPI (Serial Peripheral Interface, que es básicamente un bus de comunicación a nivel de circuitos integrados en el que la transmisión de datos se realiza en serie, es decir un bit después de otro) en cada uno de ellos,  para que se puedan comunicar con nuestro Arduino exclusivamente por medio de 3 pines digitales de salida (DIN, CS y CLK), además de dos pines para la alimentación (+5V) y la masa (GND). A continuación se detallan sus principales características: 

·        Entrada y salida en serie, para necesitar menos pines.
·        Controla displays de 7 segmentos de hasta 8 dígitos, Bar graph displays (Barras de LED) y Matrices de 8×8 o de hasta 64 LED individuales.
·        Solo requiere una resistencia externa para los 64 LED.
·        Incluye decodificador BCD (No hay necesidad de dibujar matrices de caracteres, las lleva incluidas. Mayúsculas, minúsculas y hasta números y signos).
·        Se encarga del multiplexado de los caracteres y dígitos.
·        Incluye memoria de los caracteres.
·        Es compatible con interfaz SPI y QSPI.

Para conectar en cascada las 4 matrices LED 8x8 con driver MAX7219 (aunque por este método podríamos conectar hasta 8), que nos van a hacer falta para desarrollar este proyecto, es imprescindible conectar a nuestro Arduino la matriz LED 8x8 que se encuentra más a la derecha de todas, teniendo en cuenta que el mensaje de texto se va a mover hacia la izquierda. A continuación se muestra la relación de los pines a conectar:

Correspondencia de los pines entre nuestro Arduino y el driver MAX7219

Posteriormente necesitamos conectar las salidas del módulo situado más a la derecha (CLK, CS, DOUT, GND y VCC) a las entradas del siguiente (CLK, CS, DIN, GND y VCC) y así sucesivamente con los restantes módulos, hasta llegar al que esté situado más a la izquierda, el cual no necesita que sus salidas estén conectadas. Como en las matrices LED 8x8 con driver MAX7219 viene rotulado en la parte inferior la función de cada pin y cuales son de salida y cuáles de entrada, solo necesitaremos un poco de paciencia para poder realizar correctamente las conexiones. Un pequeño detalle a tener en cuenta es que el pin “DIN” es el correspondiente a la entrada de datos y el pin “DOUT” es el correspondiente a la salida de datos, con lo que tenemos una referencia a mayores para poder distinguir que grupo de pines son de entrada y cuáles de salida.


Conexión de las 4 matrices LED 8x8 con driver MAX7219

Cabe aclarar que debido a la existencia de infinidad de fabricantes de este tipo de módulos, nos podemos encontrar con el problema de que al adquirirlos, nos vengan sin soldar o que no tengan terminales de conexión en sus pines de E/S, por lo que tendremos que ingeniárnoslas para realizar las conexiones entre los módulos mediante pequeños cablecitos, un soldador, estaño y bastante paciencia, ya que precisamente es lo que a mí me ocurrió al adquirirlos a muy bajo precio en “China”, aunque viendo los resultados obtenidos, merece la pena ahorrarse un dinero aunque tengamos que desempolvar nuestras herramientas de soldadura.

Diferentes versiones de matriz LED 8x8 con driver MAX7219

Por último os comento que dentro de la programación podremos cambiar tanto el mensaje o mensajes de texto que queráis mostrar, como el brillo de los LEDS (si alimentamos el panel luminoso a través de nuestro Arduino es recomendable que esté en el nivel 1 para evitar fallos al subir el programa), el número de módulos conectados en cascada (máximo 8) o incluso la velocidad con la que se va a desplazar el texto, aunque para poder realizar todo esto es necesario recurrir al código del programa donde deberemos modificar las líneas de código necesarias, aunque no os preocupéis porque el código está comentado al detalle. Es muy importante subir el programa a nuestro Arduino sin tener alimentado el panel luminoso (pines +5V y GND), puesto que teniendo en cuenta que cada matriz LED 8x8 tiene un consumo aproximado de 350mA tendríamos un consumo total de unos 1400mA, un consumo excesivamente elevado para la salida USB de nuestro PC, lo que hará que al intentar subir el programa a nuestro Arduino, el puerto serie se nos desconecte dándonos un error en el IDE de Arduino. Después de subir el programa conectaremos nuevamente la alimentación del panel luminoso y procederemos a resetear nuestro Arduino para que los mensajes comiencen a deslizarse de derecha a izquierda a través de las matrices LED 8x8. (Es muy recomendable alimentar el panel luminoso con una fuente de alimentación de 5VDC para que esto no suceda).




Lista de Materiales:

·         Arduino UNO Rev.3.

·         Cable USB tipo A-B.

·         4 Matrices LED 8x8 con driver MAX7219.

·         Soldador de 30W y estaño (en el caso de que sea necesario).

·         Fuente de alimentación de 5VDC/3000mA (opcional).

·         Protoboard.

·         Cables de conexión.



Código del programa:





Video:

19 comentarios:

  1. Tengo un problema... resulta que sale el mensaje pero de manera vertical y no horizontal :(

    ResponderEliminar
    Respuestas
    1. Posiblemente hayas realizado mal las conexiones. Verifica el montaje según sale en la imagen. Saludos

      Eliminar
  2. Hola Mariano, Mi problema es que en la matriz que llegó de china van montados las cuatro matrices en un bloque, con una sola entrada. Cada matriz es solidaria con la siguiente no pudiéndose rotar. El problema es que los caracteres me salen girados 90º a la derecha en cada matriz. Si pudiese girarlas todas asunto arreglado pero ya digo que son solidarias. ¿Hay alguna forma de arreglarlo mediante software o me toca serrar cada matriz y luego soldar?. Gracias por tu atención-

    ResponderEliminar
    Respuestas
    1. A mí me pasó lo mismo y lo que hice fue modificar el hardware soltando las matrices y soldandolas nuevamente en la posición correcta para el software que tengo. Seguramente haya por la web algún código que te funcione sin realizar modificaciones en el hardware. Saludos

      Eliminar
    2. Hola chicos.
      Yo también soy un afortunado y tengo la misma placa.
      Lo habéis solucionado?
      Gracias

      Eliminar
  3. Pues siento decirte que no hay otra que tirar de sierra y de soldador. Eso sí, después de montarlos sobre un soporte para que queden juntos va de miedo.

    ResponderEliminar
  4. Pues lo intentaremos.Muchas gracias.
    He llegado a pensar en cambiar los códigos de las letras girandolas 90°

    ResponderEliminar
  5. Los modulos estan configurados de tal manera que las columnas con las que trabaja el integrado son perpendiculares a las conexiones, tal y como vienen montadas de China. La libreria que se usa aquí dibuja y desplaza los caracteres perpendicularment a las conexiones. NO hay muchas soluciones o se usa otra libreria o se sueldan de nuevo los leds.

    http://frightanic.com/iot/max7219-library-nodemcu-making/

    ResponderEliminar
    Respuestas
    1. Hola,,,verificar el enlace,se puede rotar caracteres y redefinir algunos porque estan en ruso.
      Es decir se puede utilizar la placa como viene sin desoldarla.
      En el enlace 7 esta el ino.Saludos
      https://www.youtube.com/watch?v=GfHsCDpe6q0

      Eliminar
  6. Hola, excelente proyecto, FELICIDADES

    Compre un modulo chino que trae pegados las 4 pantallas pero vienen invertidas, sabes como podria cambiar el codigo para que que el texto aparezca correctamente?

    ResponderEliminar
  7. mi arduino se apaga cuando quiero trabajar con 5 matrices que podría hacer?

    ResponderEliminar
    Respuestas
    1. Necesitas poner una fuente de poder externa que alimente a tu circuito, se esta cayendo por la cantidad de corriente.

      Eliminar
  8. Hola,,,verificar el enlace,se puede rotar caracteres y redefinir algunos porque estan en ruso.
    Es decir se puede utilizar la placa como viene sin desoldarla.
    En el enlace 7 esta el ino.Saludos
    https://www.youtube.com/watch?v=GfHsCDpe6q0

    ResponderEliminar
    Respuestas
    1. yo tengo una pregunta
      no se si me pueda ayudar diciendome de donde descargo el codigo que dice en el video

      Eliminar
    2. Dentro del POST tienes la descarga del código, justo antes del video. Saludos

      Eliminar
  9. hola el mensaje parece que sale pero no lo puedo apreciar por que estan todo el modulo encendido ...como puedo hacer para que solo se encienda lo escrito y los demas leds queden apagados?

    ResponderEliminar
  10. hola buenas tardes.que pena pero tengo un problema .tengo arduino uno y cuando le cargo el programa me sale,error compilando para tarjeta arduino/genuino uno..de antemano muchas gracias que puedo hacer...

    ResponderEliminar
    Respuestas
    1. Instala mis librerías y solucionado. http://miarduinounotieneunblog.blogspot.com.es/2015/12/anadiendo-las-librerias.html?m=1

      Eliminar
  11. hola, mi pregunta es la sig. ¿si conecto 10 matrices en paralelo cual sera su amperaje? gracias por su atención

    ResponderEliminar