TUTORIAL: Programación de Microcontroladores – Parte 9

Ariel Palazzesi . Vista 73766 veces
TUTORIAL: Programación de Microcontroladores – Parte 9
Hemos recibido varias consultas sobre carteles construidos mediante una matriz de LEDs, asi que hoy comenzamos la construcción de una matriz que nos servirá para pasar mensajes publicitarios, decorar nuestra habitación, ordenador o lo que se nos ocurra. ¡Manos a la obra!

  • Un “cartel de LEDs” , llamado “Publik” en algunos países, es un recurso utilizado muy frecuentemente con fines publicitarios o informativos. Básicamente, consiste en una matriz de pixeles (si, como la pantalla de tu ordenador), generalmente de un solo color (rojos), aunque con el descenso de los precios de os LEDs individuales o en paneles, es cada vez más frecuentes ver carteles “bicolores” o incluso multicolores, aprovechando la ventaja del los LEDs RGB, que pueden mostrar cualquier color.

    Como es de suponer, el desarrollo, construcción y programación de un cartel e este tipo es una tarea bastante compleja para un principiante, pero desde NeoTeo te animamos a hacerlo, ya que te guiaremos paso a paso a lo largo de todo el proceso. Y seguramente aprenderás un montón de trucos al hacerlo.

    Por motivos de simplificar el circuito y de no gastar demasiado dinero, nuestro cartel será monocromático, utilizando LEDs de color rojo únicamente. Las dimensiones de la matriz utilizada serán de 7 filas por 80 columnas, lo que permite escribir unas 14 o 16 letras de 7 “pixeles” de altura. A pesar de no ser demasiado grande, ya habrás sacado la cuenta de que se necesitan 560 LEDs para armar el cartel.

    A lo largo de este tutorial hemos visto que encender un LED desde un microcontrolador. Y de hecho es algo muy simple: conectamos el ánodo del LED al PIC, el cátodo a una resistencia y el extremo de la resistencia a +V. Cuando el pin del microcontrolador está en “1”, el LED enciende. Este esquema, lamentablemente, no sirve para la construcción de un cartel matricial como este, ya que al disponer de 560 LEDs necesitaríamos tener un microcontrolador que tenga como mínimo ese número de pines de salida y por supuesto, no existe.

    El secreto está en el multiplexado. Es decir, utilizar unos pocos pines de E/S del microcontrolador para manejar una serie de circuitos integrados que se encarguen de excitar los LEDs. Hay varias maneras, y muchos modelos diferentes de circuitos para hacer esto.

    Pueden usarse un tipo de integrado digital llamado “LATCH”, que básicamente es una memoria en la que escribimos un valor, y lo mantiene en sus salidas hasta que nosotros lo indiquemos. De esta manera, usando varios latches podríamos encender los LEDs por turnos, rápidamente para que no se note el parpadeo, y de esa manera formar una palabra en el cartel.

    Otra forma es utilizar un registro de desplazamiento. Y de hecho, es de esta forma cómo vamos a diseñar nuestro cartel. Un registro de desplazamiento funciona de la misma manera en que funciona una cola de gente que espera para entrar en un cine. Por un extremo de la cola van ingresando las personas que llegan, y por el otro van saliendo de la fila. En un registro de desplazamiento, en lugar de personas tenemos “0” y “1”. Lo bueno de esto es que para “meter” datos (“0”s y “1”s) en el registro de desplazamiento solo hacen falta tres pines del microcontrolador, independientemente de lo largo que sea.

    Estos pines se encargan de tres tareas: Uno de ellos, al que denominaremos “DATA” es el encargado de decirle al registro de desplazamiento que lo que introduciremos es un “0” o un “1”. El segundo se encarga de avisar al registro que el dato ya está listo para ser ingresado, y lo llamaremos “CLOCK”. Y el ultimo, que no es indispensable, es el “RESET”, que se encarga de “vaciar” la fila escribiendo “0”s en todas las salidas del registro.

    En este proyecto utilizaremos un modelo de circuito integrado conocido como 74HC164N, que es un registro de desplazamiento de 8 bits. Es decir, con el se puede armar una “fila” de 8 “personas”. Como nuestro cartel tiene 80 columnas, necesitaremos utilizar 10 de estos integrados, uno a continuación del otro. En NeoTeo ya hemos hablado sobre él, así que sería interesante que leas el artículo correspondiente si quieres saber más sobre su funcionamiento.

    En la figura siguiente puedes ver la función de cada pin de este integrado, y la manera de conectar uno a continuación del otro para obtener un registro de desplazamiento de cualquier longitud.

    • Función de cada pin del 74HC164N. Función de cada pin del 74HC164N.
    • Interconexión de varios 74xx164N entre sí. Interconexión de varios 74xx164N entre sí.

    Bien, con el esquema explicado podemos encender los LEDs que queramos de una fila de 80 bits de largo. Si en el registro de desplazamiento introducimos “11111…111”, los 80 LEDs estarán encendidos. Si queremos encender uno por medio, escribiremos “10101…01”. Por supuesto, cuando lleguemos a la parte de la programación veremos cómo se ingresan uno a uno los “0” y “1” en el registro.

    Ahora bien: nuestro cartel tiene 7 filas, y lo explicado solo sirve para manejar una de ellas ¿debemos utilizar un registro de desplazamiento para cada una de las filas restantes? Afortunadamente, la respuesta es no. Si bien podríamos utilizar 7 registros de este tipo, la cantidad de circuitos integrados necesarios (56 de ellos), la complejidad del circuito impreso y el costo implicado lo hacen poco aconsejable. Nosotros aprovecharemos un “defecto” del ojo humano, que mantiene la imagen vista durante unos 20 o 30 milisegundos, para “dibujar” una fila a la vez, pero muy rápidamente, de forma que todo el cartel parezca estar encendido a la vez. Si, como en la tele o el cine.

    Cuando comenzamos el articulo mencionábamos que para manejar cada LED serian necesarios 560 pines de entrada/salida. Con el esquema propuesto solo necesitamos 7 para seleccionar la fila a escribir, y tres para manejar el registro de desplazamiento. Es decir, un PIC de 3 u$s y 18 pines serviría perfectamente para realizar el proyecto. Y es lo que usaremos, un 16F628A.
    • El resultado de este proyecto es muy vistoso. El resultado de este proyecto es muy vistoso.
    • Se pueden tener diferentes tipos de letras. Se pueden tener diferentes tipos de letras.

    ¿Cómo funciona la matriz?

    Como dijimos antes, la pantalla está formada por una serie de filas y columnas. La intersección entre ambas contiene un LED. Para que este encienda, tiene que recibir simultáneamente un “0” en la fila, y un “1” en la columna. Cuando se dan estas condiciones, la electrónica de la placa se encarga del encendido. La forma de generar un mensaje sobre el display es relativamente sencilla, si nos atenemos al siguiente algoritmo:

    1) Apagar todas las filas.
    2) Escribir los valores correspondientes a la primer fila en el registro de desplazamiento, teniendo en cuenta que el primer digito binario colocado corresponde al último LED de la fila, y el ultimo en poner al de la primer columna.
    3) Encenderla primer fila, esperar un tiempo, y volver a apagarla.
    4) Repetir los pasos para las filas 2 a 7.

    Los tiempos de demora que utilizamos en el programa de ejemplo permiten una visualización correcta, sin molestos parpadeos y con los LEDS brillantes. Hay que tener en cuenta que si utilizamos tiempos mayores para el encendido de cada fila, el brillo de los LEDS será mayor, pero también aumentara el parpadeo. No utilizamos vectores ni otras alternativas que hubieran servido para crear un código más compacto, buscando la claridad del programa, para que pueda servir como base a otros más completos/complejos.

    Un punto a tener en cuenta es el brillo de los LEDs. Un LED, utilizado en aplicaciones “normales”, se alimenta con unos 3V y requiere unos 15mA (varia ligeramente de un modelo a otro9 para brillar con una buena intensidad. En nuestro caso, a pesar de que veremos las 7 filas encendidas al mismo tiempo, cada LED solo estará encendido la séptima parte del tiempo, por lo que su brillo será siete veces inferior al normal, y nuestro cartel apenas será visible.

    Afortunadamente eso tiene solución: dado que los tiempos que permanecerá encendido cada LED no superara unos pocos milisegundos, no se dañaran si hacemos circular una corriente mayor a la nominal, con brillará mucho más intensamente, dando como resultado un cartel perfectamente visible.

    Respecto de los LEDs, podremos utilizar LEDs discretos (y soldar 1120 terminales) o comprar “paneles” de 7x5 LEDs que tienen unos 14 o 16 terminales (según el modelo), estando ya interconectados en forma de matriz.

    Hemos dividido este proyecto en varias partes, ya que su complejidad impide explicarlo en un solo artículo, así que en la próxima entrega diseñaremos la totalidad del hardware necesario, y en la siguiente nos dedicaremos a programar nuestro cartel. ¡Hasta la próxima!
    • Podemos utilizar LEDs individuales. Podemos utilizar LEDs individuales.
    • Panel de 7x5 LEDs, menos para soldar. Panel de 7x5 LEDs, menos para soldar.
      Más tutoriales en NeoTeo.

¿Y tú, qué opinas?

  • #1 dago
    dago domingo, 01 de julio de 2007, 02:42

    excelente... muy bueno ke se haga un toturial de este tema paso a paso, pues somos muchos los ke keremos hacer este publik, y entenderlo realmente

    Responder >> Attention Minus Plus Votos: 0 de 0
  • #2 Isac
    Isac domingo, 01 de julio de 2007, 03:14

    Excelente tutorial para los principiantes como yo, felicidades y gracias por elaborar este material y ponerlo al alcande de nuestras manos.

    Responder >> Attention Minus Plus Votos: 1 de 1
  • #3 ArielPalazzesi
    ArielPalazzesi domingo, 01 de julio de 2007, 15:30

    Gracias! La semana proxima publicaremos la segunda parte, con el circuito del display, explicado en detalle.

    Responder >> Attention Minus Plus Votos: 1 de 1
  • #4 Dario
    Dario miércoles, 04 de julio de 2007, 22:13

    EXELENTE !!!!!!!!!!!!!!!!!! SIGAN ASI

    Responder >> Attention Minus Plus Votos: 0 de 0
  • #5 Alexander
    Alexander martes, 10 de julio de 2007, 20:26

    Buenisimo este tutorial, es una gran herrameinta para todos a quellos que queremos aprender sobre este excelente tema, espero continuen colaborandonos en este proyecto...

    Responder >> Attention Minus Plus Votos: 0 de 0
  • #6 edvin
    edvin sábado, 14 de julio de 2007, 08:41

    les agradezco por este tema es muy interesante, espero que lo que falte venga pronto.

    Responder >> Attention Minus Plus Votos: 1 de 1
  • #7 SATELITEX
    SATELITEX jueves, 19 de julio de 2007, 02:29

    Esta muy bueno porque los estudiantes tambien queremos saber lo Recontra ficho que esta esto de acá lo paso a mis cumpas.

    Responder >> Attention Minus Plus Votos: 0 de 0
  • #8 Jorge Fuente
    Jorge Fuente jueves, 19 de julio de 2007, 22:17

    Muy bueno la Info, excelente, al menos ahora tengo la idea de còmo funciona, pero no estarìa mal que publiquen la otra parte que falta. Saludos.

    Responder >> Attention Minus Plus Votos: 0 de 0
  • #9 hades
    hades viernes, 20 de julio de 2007, 21:50

    muy bueno ese tutorial seria excelente si conlocaran mas informacion acerca de los microcontroladores ya que esta area es muy extensa y provechosa, y sobre todo la programacion es fundamental, un tutorial de programacion no caeria nada mal para muchos principiantes.

    Responder >> Attention Minus Plus Votos: 0 de 0
  • #10 leon
    leon miércoles, 25 de julio de 2007, 17:48

    busque mucho por internet...............pero nada comparado con este artitucol me parece excelenticimo muchos simplemente comentan superficialmente espero que sepamos aprovechar muy bien este tipo de informacion por mi parte seguire con el desarrolo de mi proyecto de leds gracias a este articulo...cuando lo termine muy seguramente tambien aportare con lo aprendido

    Responder >> Attention Minus Plus Votos: 0 de 0
  • #11 Jorge
    Jorge jueves, 26 de julio de 2007, 03:26

    Amigos, dijeron que pondrían la otra parte pero hasta ahora nada, parece que lo hacen con la sola intención que volvamos contínuamente a su página para generar tráfico y ellos puedan vender publicidad. :(

    Responder >> Attention Minus Plus Votos: 2 de 2
  • #12 Ariel Palazzesi
    Ariel Palazzesi jueves, 26 de julio de 2007, 12:06

    Hola Jorge! Estamos haciendo los PCB y dibujando los esquemas de la segunda parte. Si vienes siguiendo la serie de tutoriales sobre microcontroladores habras notado que periodicamente publicamos notas nuevas. Te pedimos disculpas por la demora, y la semana proxima tendras la segunda parte de esta nota. Saludos!

    Responder >> Attention Minus Plus Votos: 1 de 1
  • #13 tecnico256
    tecnico256 miércoles, 01 de agosto de 2007, 02:22

    gracias por estas publicaciones que son de mucho interes y felicitaciones por acerlo.

    Responder >> Attention Minus Plus Votos: 1 de 1
  • #14 axel
    axel lunes, 06 de agosto de 2007, 03:43

    Genial este tutorial nos ayuda a entender como funciona este tablero electronico, seria aun mas genial si aumentaran la imformacion, sobre todo la parte de programacion de los microcontroladores. salu2. BYE... :D

    Responder >> Attention Minus Plus Votos: 1 de 1
  • #15 Ferney
    Ferney sábado, 11 de agosto de 2007, 21:33

    Nunca pense encontrar algo asi exelente articulo gracias por publicarlo. me gustaria saber cuando sale la proxima publicacion saludos que esten bien.

    Responder >> Attention Minus Plus Votos: 0 de 0
  • #16 aneudy castillo
    aneudy castillo viernes, 17 de agosto de 2007, 01:07

    me ha gustado mucho y me ha servido de mucho gracias y espero que sigan asi bay

    Responder >> Attention Minus Plus Votos: 0 de 0
  • #17 <a href="../../foro/member.php?u=4429" target="_self">omar1127</a>
    omar1127 martes, 28 de agosto de 2007, 06:32

    genial, es perfecto, soy nuevo y quisiera saber como enterarme cuando se publique la continuacion, gracias

    Responder >> Attention Minus Plus Votos: 0 de 0
  • #18 htwj
    htwj martes, 28 de agosto de 2007, 22:39

    ei loco donde esta las otras partes del proyecto!!

    Responder >> Attention Minus Plus Votos: 0 de 0
  • #19 Ariel Palazzesi
    Ariel Palazzesi miércoles, 29 de agosto de 2007, 00:25

    En la bandeja de salida. No dejes de darte una vuelta por aqui que va a haber sorpresas. :)

    Responder >> Attention Minus Plus Votos: 1 de 1
  • #20 German
    German viernes, 21 de septiembre de 2007, 01:34

    Hola, gracias por la Informacion pero, cuando busco las otras partes del proyecto no las encuentro, que pasa ? o no han sido publicadas ? Gracias

    Responder >> Attention Minus Plus Votos: 1 de 1
  • « «« Anterior12Siguiente »» »
    Cargando...Cargando...

  • nuevo comentario
    Nombre

    Campo obligatorio

    Email

    Escriba una dirección de correo electrónico con el formato sunombre@ejemplo.com.

    Campo obligatorio

 
Ir arriba