jueves, 04 de diciembre de 2008
Ayúdanos a crecer, haz NeoTeo tu página de inicio RegistrarseIniciar sesión

TUTORIAL: Programación de Microcontroladores – Parte 9

Por: Ariel Palazzesi  @  martes, 26 de junio de 2007  Nota vista 26638 veces
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!
¿te interesa?
145 -10
155 votos

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.
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.
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.
Panel de 7x5 LEDs, menos para soldar.


Artículo Siguiente
Construye tu propia consola
Artículo Anterior
Orbit Downloader: para descargar vídeos de Megarotic y otros sitios "difíciles"
CopyRight
Prohibida su copia total con o sin fines comerciales. Copias parciales deben citar la fuente.

 

URL Trackback para esta noticia:
Votos: 0 de 0
dago
dago
dago
01/07/2007
2:42:56
#1   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 
Votos: 0 de 0
Isac
Isac
Isac
01/07/2007
3:14:32
#2   Excelente tutorial para los principiantes como yo, felicidades y gracias por elaborar este material y ponerlo al alcande de nuestras manos.
     Responder 
Votos: 1 de 1
ArielPalazzesi
ArielPalazzesi
ArielPalazzesi
01/07/2007
15:30:31
#3   Gracias! La semana proxima publicaremos la segunda parte, con el circuito del display, explicado en detalle.
     Responder 
Votos: 0 de 0
Dario
Dario
Dario
04/07/2007
22:13:27
#4   EXELENTE !!!!!!!!!!!!!!!!!! SIGAN ASI
     Responder 
Votos: 0 de 0
Alexander
Alexander
Alexander
10/07/2007
20:26:07
#5   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 
Votos: 1 de 1
edvin
edvin
edvin
14/07/2007
8:41:59
#6   les agradezco por este tema es muy interesante, espero que lo que falte venga pronto.
     Responder 
Votos: 0 de 0
SATELITEX
SATELITEX
SATELITEX
19/07/2007
2:29:36
#7   Esta muy bueno porque los estudiantes tambien queremos saber lo Recontra ficho que esta esto de acá lo paso a mis cumpas.
     Responder 
Votos: 0 de 0
Jorge Fuente
Jorge Fuente
Jorge Fuente
19/07/2007
22:17:41
#8   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 
Votos: 0 de 0
hades
hades
hades
20/07/2007
21:50:36
#9   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 
Votos: 0 de 0
leon
leon
leon
25/07/2007
17:48:12
#10   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 
Votos: 0 de 0
Jorge
Jorge
Jorge
26/07/2007
3:26:31
#11   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 
Votos: 0 de 0
Ariel Palazzesi
Ariel Palazzesi
Ariel Palazzesi
26/07/2007
12:06:06
#12   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 
Votos: 1 de 1
tecnico256
tecnico256
tecnico256
01/08/2007
2:22:30
#13   gracias por estas publicaciones que son de mucho interes y felicitaciones por acerlo.
     Responder 
Votos: 0 de 0
axel
axel
axel
06/08/2007
3:43:09
#14   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 
Votos: 0 de 0
Ferney
Ferney
Ferney
11/08/2007
21:33:31
#15   Nunca pense encontrar algo asi exelente articulo gracias por publicarlo. me gustaria saber cuando sale la proxima publicacion saludos que esten bien.
     Responder 
Votos: 0 de 0
aneudy castillo
aneudy castillo
aneudy castillo
17/08/2007
1:07:42
#16   me ha gustado mucho y me ha servido de mucho gracias y espero que sigan asi bay
     Responder 
Votos: 0 de 0
asgn1
asgn1
asgn1
28/08/2007
6:32:34
#17   genial, es perfecto, soy nuevo y quisiera saber como enterarme cuando se publique la continuacion, gracias
     Responder 
Votos: 0 de 0
htwj
htwj
htwj
28/08/2007
22:39:03
#18   ei loco donde esta las otras partes del proyecto!!
     Responder 
Votos: 0 de 0
Ariel Palazzesi
Ariel Palazzesi
Ariel Palazzesi
29/08/2007
0:25:58
#19   En la bandeja de salida. No dejes de darte una vuelta por aqui que va a haber sorpresas. :)
     Responder 
Votos: 0 de 0
German
German
German
21/09/2007
1:34:23
#20   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 
 
 
Datos  Login Registrarse
Usuario
   
Email
Website
 
Nuevo comentario:


Tags HTML permitidos: br