Vous êtes sur la page 1sur 35

Como hacer un cartel de led

Avisos por Yahoo!

Productos para enmascaramiento MOCAP


Cintas de polister y kapton, utilizadas para pintura. Catlogo.
www.mocap.com.mx

Liquidaciones Juguetes
Precios Hasta 90% De Descuento Pormayor. Excelente Para Vendedores.
www.CloseoutsOutlet.com

tratamiento de aire Destaco Mxico


500 Modelos, excelentes precios, los tratamiento de aire manuales son sujetadores.
www.cesehsa.com.mx

Una guia bastante completa y esta muy buena para hacerla.

Introduccin
La gran mayora de los aficionados a la electrnica, tarde o temprano, se propone la construccin de un cartel basado en una matriz de diodos LEDs. El propsito de este artculo es explicar, de forma clara y sencilla, la forma de hacerlo.

A lo largo de estos parrafos veremos la forma de abordar el problema, y el principio de funcionamiento de una matriz de LEDs de un tamao cualquiera. No construiremos ni programaremos una, pero si veremos como se debe hacer. Si el lector necesita un proyecto de este tipo listo para usar, puede consultar los que se listan al final de este artculo.

Utilidad de un cartel de LEDs


Un cartel formado por varias filas y columnas de LEDs, convenientemente programado, puede servir para pasar mensajes publicitarios, decorar nuestra habitacin, ordenador o lo que se nos ocurra. No solo se trata de un proyecto ms que interesante para llevarlo a cabo como hobbysta, sino que puede resultar interesante como un producto comercializable. Es que estas matrices, que en algunos pases se las conoce como cartel de LEDs o Publik , son un recurso muy frecuentemente utilizado con fines publicitarios o inf ormativos.

El Hardware
Desde el punto de vista del hardware, bsicamente consiste en una matriz de pxeles similar a los de la pantalla de un ordenador, generalmente de un solo color (la mayora de las veces rojos), aunque con el descenso de los preci os de los LEDs individuales o en paneles, es cada vez ms frecuentes ver carteles bicolores o incluso multicolores , aprovechando la ventaja del los LEDs RGB, que pueden mostrar cualquier color.

Matriz de LEDs RGB de 8x8 puntos.

Como es de suponer, el desarrollo, construccin y programacin de un cartel e este tipo es una tarea bastante compleja, pero perfectamente posible para cualquiera que tenga conocimientos bsicos de electrnica y programacin. Este artculo puede ser utilizado como una gua paso a paso del proceso de creacin de un cartel de este tipo. Y aunque no construyas uno, leyndolo aprenders algn tru co til que podrs emplear en otro proyecto.

Para mantener el nivel de la explicacin dentro de lo razonable, y para no gastar una fortuna en nuestro cartel, lo disearemos monocromtico, utilizando LEDs de color rojo nicamente. Las dimensiones de la matriz utilizada para mostrar los textos la decidir cada uno de los lectores, pudiendo ser tan pequea (7 filas y 5 columnas) o tan grande como se desee. Un tamao razonable y muy empleado es el de 7 filas por 80 columnas, que permite escribir unas 14 o 16 letras de 7 pixeles de altura. A pesar de no ser demasiado grande, ya habrs sacado la cuenta de que se necesitan 560 LEDs individuales para armar el cartel.

Encendiendo un LED
En el nmero 2 de la Revista uControl, en el artculo llamado PICs y LEDs: una pareja perfecta vimos como encender un LED desde un microcontrolador. Y de hecho es algo muy simple: conectamos el nodo del LED al PIC, el ctodo a un resistor y el extremo de este a +V. Cuando el pin del microcontrolador est en 1 , el LED enciende. Pero lamentablemente este esquema no sirve para la construccin de un cartel matricial como este, ya que al utilizar cientos de LEDs necesitaramos tener un microcontrolador que tenga como mnimo ese nmero de pines de salida (y por supuesto, no existe).

Multiplexado
El secreto, por supuesto, est en el multiplexado. Esta tcnica permite 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 bsicamente 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 podramos encender los LEDs por turnos, rpidamente 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 como los analizados en el nmero 1 de la Revista uControl. Y de hecho, es de esta forma cmo vamos a disear nuestro cartel. Como vimos en esa oportunidad, 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.

Para desarrollar nuestro ejemplo utilizaremos el circuito integrado 74HC164N, que es un registro de desplazamiento de 8 bits. Es decir, con el se puede armar una fila de 8 personas . Para construir un cartel de 80 columnas, necesitaramos utiliza r 10 de estos integrados, uno a continuacin del otro. Afortunadamente, este integrado cuesta solo centavos.

En la figura 1 podemos ver la funcin de cada uno de los pines del 74HC164N y en la figura 2 de que forma podemos conectar uno a continuacin del otro para obtener un registro de desplazamiento de cualquier longitud.

Figura 1.

Figura 2.

Filas y columnas
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 estarn encendidos. Si queremos encender uno por 01 . Por supuesto, cuando lleguemos a la parte de la

medio, escribiremos 10101

programacin veremos cmo se ingresan uno a uno los 0 y 1 en el registro.

En este punto puede ser necesario analizar el tema de las filas. Si tenemos, por ejemplo, un cartel con 7 filas, y lo explic ado recin sirve para manejar solo una de ellas debemos utilizar un registro de desplazamiento para cada una de las filas restantes? Afortunadamente, la respuesta es no.

Si bien podramos 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 rpidamente, de forma que todo el cartel parezca estar encendido a la vez. Si, se trata de un sistema similar al empleado en el cine o en la televisin.

Si seguimos pensando en un cartel de 7 filas y 80 columnas, sin utilizar registro s de desplazamiento necesitaramos 560 pines de entrada/salida. Con el esquema propuesto solo necesitamos 7 de ellos para seleccionar la fila a escribir, y tres para manejar el registro de desplazamiento. Es decir, un PIC de 3 euros y 18 pines servira perfectamente para realizar el proyecto.

Cmo funciona la matriz?


Como dijimos antes, la pantalla est formada por una serie de filas y columnas. La interseccin entre ambas contiene un LED. Para que este encienda, tiene que recibir simultneamente un 0 en la fila, y un 1 en la columna. Cuando se dan estas condiciones, la electrnica de la placa se encarga del encendido del LED en cuestin. 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 pri mer columna.

3) Encenderla primer fila, esperar un tiempo, y volver a apagarla.

4) Repetir los pasos 2 y 3 para las filas restantes.

El tiempo de la demora debe ser tal que permita una visualizacin 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 tambin aumentar el parpadeo. La forma de transformar este algoritmo en un programa funcional depende de cada progra mador, y puede ser ms o menos complejo segn se permitan diferentes tipos de caracteres, animaciones, etc.

El brillo de los LEDs


Un punto a tener en cuenta es la intensidad del brillo que puede proporcionar el tipo de LED que utilicemos. Un LED, util izado en aplicaciones normales , se alimenta con unos 3V y requiere unos 15mA (varia ligeramente de un modelo a otro) para brillar con una buena intensidad. En caso de un tpico cartel de 7 filas, a pesar de que las veremos encendidas al mismo tiempo, cada LED solo estar encendido la sptima parte del tiempo, por lo que su brillo ser siete veces inferior al normal, y nuestro cartel apenas ser visible.

Afortunadamente esto tambin tiene solucin: dado que los tiempos que permanecer encendido cada LED no superar los 20 o 30 milisegundos, podremos hacerles circular una corriente mayor a la nominal sin que lleguen a daarse, con lo que brillarn mucho ms 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 (segn el modelo), estando ya interconectados en forma de matriz. Quizs sea esta la mejor alternativa.

El circuito de ejemplo
Dado que nuestro hipottico cartel tiene fines meramente educativos, y la intencin mantener su costo lo ms bajo posible para que cada lector pueda construirlo, por lo

que intentaremos realizarlo en base a un microcontrolador pequeo, como el PIC16F628A. Si el lector necesita un cartel de mayor tamao o con capacidad para almacenar textos o imgenes ms extensos, deber utilizar algn micro con mayor capacidad y velocidad.

La utilizacin de una memoria EEPROM externa de un tamao bastante grande, como la 24C256, nos brinda la posibilidad de almacenar mucho texto en ella. Por supuesto, esto tambin puede ser ampliado con mucha facilidad.

Dividiremos el esquema electrnico del cartel en dos partes: en primer lugar veremos toda la lgica de control, y en segundo, la pantalla con el registro de desplazamiento. A la hora de llevarlo a la prctica se puede incluso hacer dos circuitos impresos por separado. Esto le permitira al lector experimentar con otros controladores sin necesidad de volver a montar la placa de los displays, o viceversa.

El circuito controlador
Este es el cerebro de nuestro cartel. Ser el encargado de gestionar el encendido de cada LED mediante rdenes enviadas a las columnas mediante el registro de desplazamiento y a las filas.

Como una fila tendr muchos LEDs (80, por ejemplo)y existe la posibilidad que en algn momento puedan estar todos encendidos, no podemos conectarlas directamente a pines de E/S del PIC, porque la corriente que demandaran hara que el puerto del microcontrolador pase a mejor vida. Para evitar esto, utilizaremos en medio un transistor capaz de manejar la corriente requerida.

Controlador del cartel.

Analicemos el circuito de la figura anterior. El centro de todo es el microcontrolador PIC16F628A, que tiene su pin de RESET conectado a un pulsador y un resistor de 10K. Este pulsador permite reiniciar el cartel cuando lo necesitemos. Tambin se ha implementado un circuito de reloj externo, basado en un cristal de 4 MHz y dos condensadores de 22 nF. Esto le permite al PIC ejecutar un milln de instrucciones por segundo, ms que suficientes para este proyecto.

Los pines 1 y 2, correspondientes a los terminales A2 y A3 del microcontrolador, se han utilizado para acceder a una memoria EEPROM del tipo 24C256. Esta m emoria es de acceso serial (por eso necesitamos solo dos pines del PIC para usarla) mediante el protocolo I2C, y tiene capacidad para almacenar 32.768 Bytes. Si nuestro programa hace uso de ella, podemos guardar all 32.768 caracteres (con el display en modo texto) o ms de 450 pantallas de 7x80 pxeles en modo grfico. Si resultara insuficiente, puede ponerse una memoria de mayor capacidad, siempre consultando la hoja de datos de la misma para asegurarnos su compatibilidad con la del ejemplo.

Todo el puerto B del PIC est dedicado a controlar las filas del cartel. Como ya habrn notado, tenemos 8 salidas para filas, y nuestro cartel tiene solo 7 filas. Efectivamente, la fila 8 no se utilizar si nuestra pantalla est construida con mdulos LED de 7x5, p ero el circuito de control est preparado para el uso (en caso de que alguien los prefiera) de mdulos de 8x8 o bien para crear un cartel de 8 filas mediante el uso de LEDs sueltos. Quienes utilicen mdulos de 7x5 pueden ahorrarse el transistor de la fila 8.

Por ltimo, los pines 17 y 18, correspondientes a los terminales A0 y A1 del microcontrolador se encargan de la gestin del registro de desplazamiento. El programa deber generar los pulsos de reloj necesarios por el pin 18, y meter los datos en el registro por el pin 17.

No hemos incluido una fuente de alimentacin. Cualquier fuente comercial (o construida en casa) que sea capaz de entregar 5V y 2A ser suficiente. Esos 5V deben estar bien regulados, y por supuesto, el software deber estar escrito correctamente, es decir, no encender varias filas al mismo tiempo, ya que el consumo de todo el cartel encendido sera de unos 80 x 70 x 20mA = 11.2 A, lo que podra destruir la fuente en caso de que no cuente con protecciones adecuadas.

El display
Esta es la parte del proyecto que todo el mundo va a mirar, as que debemos ser prolijos al montarlo. Como puede verse en el esquema elctrico de la figura 4, hemos utilizado un total de 10 circuitos integrados 74HC164N para construir el registro de desplazamiento de 80 bits de largo, uno para cada columna. Como explicamos, si alguien quiere hacer un cartel ms largo o ms corto, deber poner ms o menos integrados.

De esta forma se conectan los LEDs en filas y columnas.

Si miramos el esquema del display, veremos que en la parte superior se muestra

como est conectado cada LED dentro de la matriz de 5x7. Esto es importante tenerlo en cuenta a la hora de comprar los mdulos, ya que hay una gran cantidad de modelos, y algunos de ellos tienen los LEDs c onectados en el sentido inverso.

Cada display tambin difiere en la funcin de cada terminal, por lo que se debe estar a atentos a la hoja de datos para disear el circuito impreso apropiado, y conectarlos como corresponda.

En el dibujo del circuito no hemos representado los 16 mdulos ni los 10 circuitos integrados, por una cuestin de espacio, pero es fcil darse cuenta de qu forma se conectan las filas y columnas de los dems displays a cada 74HC164N.

No utilizaremos el pin de RESET de los 74HC164 N. En lugar de ser controlados desde el microcontrolador, cada RESET est puesto a +5V, de forma que el integrado funcione continuamente. Si por algn motivo se desea borrar la pantalla, basta con enviar 80 0 s al registro de desplazamiento y listo. El tiempo empleado para esa tarea es despreciable, ya que el microcontrolador estar ejecutando 1 milln de instrucciones por segundo. El utilizar una lnea de control menos nos permitir tener una placa de circuito impreso ligeramente ms sencilla.

Cada salida de los 74HC164N, como dijimos, se conecta a una columna de la serie de displays. Esta conexin se efecta mediante un resistor de 1/8 de Watt, que en el esquema se ha dibujado con un valor de 330 ohm. Ese fue el valor adecuado para el tipo de mdulos qu e conseguimos para hacer el prototipo, pero su valor variar de un modulo a otro. Se puede montar solo un display con resistores de 330 ohms, y ver como es el brillo de los LEDs. Si es escaso, se puede bajar el valor a 220 o 100 ohms. Con eso debera ser suficiente

Video YouTube: http://www.youtube.com/watch?v=xz9BTzbF7JY

El software
Ahora nos toca abordar la programacin del hardware propuesto. El cartel del LEDs que estamos construyendo puede adoptar diferentes tamaos de acuerdo a las necesidades o componentes que cada uno consiga. Esto hace que sea imposible

proporcionar un programa especfico que funcione en cualquier versin de cartel que se haya construido, pero sin embargo po demos hacer algo mucho mejor: ver de qu manera se escribe un programa de este tipo en BASIC (del PIC SIMULATOR IDE) para que cada uno lo adecue a su proyecto.

Debemos pensar en un programa que nos permita mostrar pxeles individuales representados sobre la pantalla de nuestro cartel. Sigamos con el ejemplo del cartel de 80 columnas y 7 filas de altura, recordando que todo lo que expliquemos puede ser adecuado para carteles de otro tamao.

Lo primero que necesitamos saber es que el barrido del cartel debe hacerse por filas. Es decir, mostraremos el contenido de la primera fila, esperamos un tiempo determinado (unos pocos milisegundos), mostramos el de la segunda fila, esperamos nuevamente, y as hasta llegar a la ltima fila, tal como se expresa en el algoritmo visto mas arriba.

El motivo de no emplear las columnas para realizar el barrido es que como son ms numerosas, el tiempo total que se necesita para escribir por filas es mucho menor que el necesario para escribir por columnas, y en la prctic a eso significa que el brillo de nuestro cartel ser mucho mayor si lo hacemos por filas, ya que cada LED permanecer encendido 1/7 del tiempo. Si lo hicisemos por columnas, cada LED estara (en este ejemplo) encendido solo 1/80 del tiempo, por lo que su brillo seria unas 10 veces menor.

Ahora bien, el primer problema a resolver es Cmo escribo los datos de una fila del cartel? Esto tiene una solucin ms que simple: solo debemos introducir en el registro de desplazamiento los 0 y 1 necesarios para que los LEDs que queremos estn encendidos en esa fila tengan +V en sus nodos. Por supuesto, mientras hacemos esto todos los pines del microcontrolador que controlan las filas debern estar apagadas, para que no se perciba una dbil luminosidad en todos l os LEDs de la fila que estamos escribiendo a medida que pasan los datos a travs del registro.

El primer valor que se debe meter en el registro de desplazamiento es el que corresponder a la ltima columna. A medida que vamos ingresando los siguientes, se van desplazando hacia el final del cartel. Cuando hayamos introducido el valor nmero 80 (que corresponder a la primera columna) el primer valor que metimos habr llegado a su posicin. En ese momento tenemos todo el registro escrito, y ya

podemos activar la salida del PIC que corresponde a esa fila en particular.

El tiempo que debe estar encendida la fila se puede determinar empricamente, pero por lo generan unos 10 milisegundos es suficiente. Si tenemos 7 filas, 10 milisegundos de demora permitiran escribir todo el cartel en unos 70 milisegundos, por lo que obtendramos un mximo de 1000/70 = 14 frames por segundo. Este es un muy buen valor para una pantalla de este tipo, ya que solo estamos mostrando un texto y no un video.

En los clculos anteriores no tuvimos en cuenta el tiempo que se demora en escribir los 80 valores en el registro de desplazamiento. Veamos porque: cada valor ingresado en el registro de desplazamiento demora unos 2 microsegundos. Es decir, demoramos 2 x 80 = 160 millonsim as de segundo en escribir toda la fila. Si multiplicamos este valor por 7 tendremos en tiempo que necesitamos para escribir las 7 filas del cartel, lo que nos da 1136 millonsimas de segundo, es decir, poco ms de 1 milsima. Este es un tiempo despreciable frente a las 70 milsimas que nos tomamos para mostrar la imagen completa, y podemos despreciarla.

Ahora vamos a ver, en BASIC, como hacer para escribir un valor en el registro de desplazamiento. Recordemos que el dato ingresa al registro en el momento que se produce la transicin de 0 a 1 del pulso de CLOCK, por lo que se debern seguir los siguientes pasos para ingresar cada uno de los 80 valores correspondientes a cada fila:

1) Fijar el valor del dato a escribir (si DATA es 1, hacer PORTA.0 = 1 , si no PORTA.0 = 0)

2) Poner la lnea de CLOCK en estado bajo (PORTA.1 = 0).

3) Esperar un 1 microsegundo (WaitUs 1)

4) Poner la lnea de CLOCK en estado alto (PORTA.1 = 1). En este punto el dato entra efectivamente en el registro de desplazamiento.

5) Esperar un 1 microsegundo (WaitUs 1)

6) Fin

En BASIC, si hemos declarado que

Symbol clock = PORTA.1 Symbol data = PORTA.0

Un 0 se escribira as:

data = 0 clock = 0 WaitUs 1 clock = 1 WaitUs 1

Y un 1 de la siguiente manera:

data = 1 clock = 0 WaitUs 1 clock = 1 WaitUs 1

Para escribir los 80 valores de la fila necesitamos hacer una subrutina que, tomando 10 bytes de la memoria EEPROM (10 bytes x 8 bits = 80 bits, es decir, una fila completa) los vuelque al registro de desplazamiento.

Si repetimos 7 veces este procedimiento, tendramos una pantalla de 7x80 completa. Eso significa que en la EEPROM cada pantalla va a necesitar de 70 bytes (10 bytes por fila, 7 filas) para almacenar el mapa de bits correspondiente.

Veamos un ejemplo de cmo podra ser la subrutina encargada de escribir un byte tomado de la EEPROM en el registro de desplazamiento, a la que hemos llamado escriboByte:

escriboByte: For columna = 1 To 8 If dato.7 = 0 Then data = 0 clock = 0 WaitUs 1 clock = 1 WaitUs 1 Else data = 1 clock = 0 WaitUs 1 clock = 1 WaitUs 1 Endif aux = ShiftLeft(dato, 1) Next columna Return

Esta funcin debe ser llamada 10 veces para escribir la fila completa, con el valor a escribir guardado en la variable dato . El motivo por el cual el bucle FOR -NEXT toma los bits del byte desde el 7 hasta el 0 se debe a que justamente el ltimo bit es el que debe ingresar primero al registro de desplazamiento, tal como explicamos antes.

Debemos partir de la base de que la informacin de la EEPROM la vamos a grabar desde un ordenador, y que seguramente crearemos un programa que permita, a partir de un texto determinado, generar los bits individuales que componen el bitmap de cada pantalla del cartel. Esto simplifica muchsimo la programacin del microcontrolador, ya que solo debe dedicarse a leer la EEPROM y volcar su contenido al registro de desplazamiento, sin tener que dibujar las letras a partir de una tabla ni nada por el estilo.

Textos animados

   2 !              &  %      "  (    &    & $  !    1 % 


d ga a a d ad s p p aa a sq a aas d d st d a ta IC a a s a t (p sta t p t a s a a paga q a q t t a d d sd p ) s p a s t a spa d s g s dat s t ad a d d yq st a s a a IC s a a g a d s t a ta

          $ #      %   $ " #    0     ( $ #     % &  % )  $ #      (         '   % &                   %  $ #    "         "  !           


ds d d sp a a t d s g d q s a a aa st t a p a pa ta a) p d a t s d d sp a a y s aa a y sg s 82 a sa d q p t t a t 0 t ) y d t s g a s a ada t ap d a s st ad d g g a a s s t s t s ada td s t a ( sta d p d t st d da q a d sp ay ay d s p 79 0 s y as s a d a q d 80 0 s t a sd t (s p asd ad (1 s g p ad s t ta a ad q t s d sp a a st ad d s a g st 0 s s s 81 d p s st s a g t a a pa ta a a t sd ap t ts p t s a d t d sapa g a ad ad p ) sa q p ad a a g st a da a sq a s a a a

Matri de LE S de 7 32

Introduccin
Mat i LE S 7 filas 32 l as. iscut , comenta o consulta este tema en el foro uControl!
       #   
ada s as g q p d pa a adas ap ad da ada

En este proyecto veremos como disear y construir un display de diodos leds, que nos servir de pantalla para exhibir textos o imgenes, fijas o animadas. os usos son varios, desde un sofisticado modding en el gabienete de nuestro ordenador hasta su empleo como medio para exhibir mensajes o publicidad. Por supuesto, sus dimensiones pueden resultar insuficientes para algunos usos, pero es fcilmente expandible.

a gran mayora de los aficionados a la electr nica, tarde o temprano, se propone la

construcci n de un cartel basado en una matriz de diodos EDs. El prop sito de este artculo es explicar, de forma clara y sencilla, la forma de hacerlo.

Un cartel formado por varias filas y columnas de EDs, convenientemente programado, puede servir para pasar mensajes publicitarios, decorar nuestra habitaci n, ordenador o lo que se nos ocurra. No solo se trata de un proyecto ms que interesante para llevarlo a cabo como hobbysta, sino que puede resultar interesante como un producto comercializable. Es que estas matrices, que en algunos pases se las conoce como cartel de LEDs o Publik, son un recurso muy frecuentemente utilizado con fines publicitarios o informativos.
Tabla de contenidos
[esconder]

1 Introducci n Descripci n del proyecto .1 Houston, tenemos un problema . Multiplexado

El hardware .1 Tres Placas . El cable plano . ista de componentes

.4 PCBs

4 El Software 4.1 Programaci n 4. El registro de desplazamiento 4. C digo fuente 5 Downloads

8 8

8 @ 9

@ A@@ 9@ @

99 9

6 Algunas ideas 6.1 Conexi n con la PC 6. Ms y ms ideas Temas relacionados 8 Autor

Descripci n del proyecto


Houston, tenemos un problema
Por ejemplo, un PIC16F8 6A de 8 pines dispone de hermano mayor, el PIC16F8 A que cuenta con un total de 40 pines dedica

menesteres. Habitualmente, con un nmero as de pines de control es posible resolver correctamente casi cualquier situaci n que se nos plantee, ya que normalmente en el diseo de un circuito de control basta con leer unos pocos pulsadores o sensores, y luego de realizar internamente algn proceso con esas seales, se actan (o no) unas pocas cargas conectadas a sus salidas, generalmente mediante reles o interfaces de algn tipo. Sin embargo, hay caso concretos en que ningn PIC (o microcontrolador de otras familias) puede aportar en numero suficientes de E/S que permitan controlar todas las cargas conectadas a el, y se deben recurrir a circuitos de apoyo comandados mediante seales de control y utilizando un bus de datos. Uno de esos casos es el que nos ocupa en este articulo. En lo que respecta a las entradas y salidas (E/S), cada microcontrolador, al igual que cualquier computadora, dispone de un numero finito de ellas, y en general, se trata de un numero no demasiado elevado. Esta claro que si queremos formar una imagen mediante pixeles compuestos por EDs individuales, harn falta un numero de lneas de control mucho mayor que las disponibles en cualquier microcontrolador. Nuestra pantalla ser semejante a esos displays que seguramente habrn visto en algn comercio o local de servicios, en los que un texto realiza un scroll de derecha a izquierda, a una velocidad que permite la ilusi n de un movimiento suave y continuo. Estas matrices de leds generalmente estn conformadas por un cierto nmero de filas y de columnas. Para permitir un texto legible, que represente claramente los caracteres correspondientes a las letras maysculas y minsculas hacen falta unas

filas de alto, y si queremos que el display

muestre unos 10 o 1 caracteres simultneamente, necesitaremos unas 100 columnas.

GG

FF

EE

dedicados a funciones de E/S, y su a estos

Si multiplicamos el numero de filas por las columnas, tendremos el numero de EDs que hay presente en un display de este tipo. Con los valores que mencionbamos recin, vemos que se necesitan 00 EDs para un display no muy complejo, y de un solo color. Si nos limitramos a los medios tradicionales para encender o apagar cada ED del display, es decir, conectando cada uno de ellos a un pin de salida del PIC y encenderlos mediante 0 o 1 publicados en ese bit del puerto, nos haran falta un PIC con al menos 00 pines, algo que debemos descartar de plano por que no existe.

Una soluci n posible seria utilizar varios PICs conectados entre si, de manera que cada uno maneje por ejemplo dos o tres columnas, y mediante algn protocolo se enven mensajes entre ellos para mostrar la parte del texto que le corresponde. Esta alternativa tiene ms posibilidades de xito, pero cuenta con la contra de una programaci n compleja y un costo

a respuesta a este problema viene de la mano de la multiplexacion, el empleo de buses y

circuitos de apoyo que transformen datos enviados en forma serial a una representaci n en paralelo.

Multiplexado
El termino multiplexar hace referencia a una tcnica que permite aprovechar unas pocas lneas de datos para diferentes tareas, cambiando la funci n que cumplen a lo largo del tiempo. Un ejemplo podra ser un sistema de control de temperaturas de varios ambientes. Dado que la velocidad no es crucial, ya que en trminos de milisegundos (o microsegundos) la temperatura casi no vara debido a la inercia trmica, se puede utilizar un nico circuito que lea alternativamente cada sensor de temperatura. Esto evita la duplicaci n de circuitos y permite resolver el problema con una fracci n de los recursos (pines I/O) disponibles.

ser casi los mnimos para lograr un display til, ya que un carcter para ser legible necesita

diodos EDs distribuidos una matriz de

columnas por

filas. Estos valores se eligieron por

UU

En el caso de este proyecto, la pantalla que construiremos esta formada por una matriz de

elevado, ya que se necesitan unos

PICs por carcter, lo que econ micamente no es viable.

R R

tener una altura de 5 o

lograremos ubicar un texto de unos 5 o 6 caracteres, que opcionalmente puede irse desplazando por la matriz.

El hardware
Tres Placas
Por razones de comodidad, el proyecto se distribuyo sobre tres placas de circuito impreso diferentes. a primera de ellas, encargada de la alimentaci n, control l gico y la comunicaci n con la PC es la que incluye el PIC, coraz n del proyecto. Adems, en ella se encuentra la etapa de alimentaci n, excepto el transformador, llave y fusible que debern alojarse en el gabinete que contenga esta placa. a alimentaci n esta basada en un regulador de voltaje M 805, capaz de entregar 500mA sin

disipador, y hasta 1A si lo refrigeramos convenientemente. Si sacamos algunas cuentas, veremos que gracias al multiplexado nunca debera haber ms de una fila encendida al mismo

= 480mA, si esto sumamos el consumo del resto de la electr nica, el consumo total ronda

los 600mA. El M 805 de mi prototipo apenas se entibia sin utilizar disipador.

bb

15 miliamperes (5V /

0 ohms = 0.015A), por lo que el consumo de la pantalla es de 0.015 x

cb

tiempo, que en el caso ms desfavorable tendra

leds encendidos. Cada ED consume unos

pxeles, y un ancho como mnimo de 5. Con estas dimensiones,

cb

El PIC se encarga de generar los pulsos de C OCK y DATOs (pines 1 y 18) que son enviados a la placa de video que es la que tiene los 4HC164N que forman un registro de

adelante) y controla los drivers que proveen la corriente que alimenta cada fila del display. Como la corriente es muy elevada para ser entregada directamente por el PIC, se incluyeron transistores BC

para esta tarea. nF para generar los pulsos de reloj del

micro en lugar del reloj interno, para lograr una mejor estabilidad con la temperatura, ya que en

a segunda de las placas, que se conecta mediante un cable plano a la primera, es la

encargada de controlar el display. Recoge los pulsos de C OCK y los datos provenientes de la placa controladora va el cable plano, y energiza las columnas que correspondan. os

(o incluso menores), pero asegurndose que el tiempo de encendido de los leds no pase de unos milisegundos por vez para evitar su envejecimiento prematuro. Tambin hay que prestar

BC640, capaces de manejar corrientes mas elevadas.

Por ultimo, la placa mas sencilla, pero a la vez mas laboriosa desde el punto de vista

Esta placa recibe las seales de control provenientes de la placa de video mediante pines de bronce que le otorgan soporte mecnico y elctrico simultneamente, y mediante cables que son los encargados de seleccionar la fila que vamos a iluminar.

pequeos

NOTA IMPORTANTE: En el esquema no figura la conexi n del PIN 9 (RESET) del 4HC164N

ff

constructivo es la pantalla propiamente dicha, ya que esta formada por

4 diodos EDs.

fg

atenci n al consumo de corriente total, y posiblemente cambiar los transistores BC

ff

Si se quiere aumenta el brillo de los EDS, pueden reemplazarse por resistencias de

gg

4HC164N se conectan a cada columna a travs de una resistencia de

0 o 90 ohms. 0 ohms

fgf

caso se utilizar la conexi n RS-

la velocidad es un tema delicado.

ff

Se utilizo un cristal de 4MHz y dos capacitores de

por

fgf

desplazamiento. Tambin tiene la posibilidad de conectarse a una PC va RS-

(ver mas

fg e

d e

a +V, aunque si est contemplado en el diseo del PCB. Ese pin DEBE estar a +V para que el circuito funcione.

El cable plano
Para enviar los datos desde la placa de control a la placa de video se utilizo un cable plano de 10 vas, con fichas en los extremos muy parecidas a las empleadas para conectar unidades de CD-ROM dentro de la PC, pero ms pequeas. Hay que tener cuidado que al armar el cable las fichas no queden invertidas, y las seales de un extremo terminen siendo un espejo de las aplicadas en el otro. Dado que los conductores de este cable son muy delgados, para evitar problemas se utilizaron dos cables de ms secci n para llevar los 5V de alimentaci n hasta esta placa. Hay que tener en cuenta de conectarlos con la polaridad correcta para evitar destruir algn componente.

ista de componentes
1 porta fusible y fusible de 1 A. 1 transformador de

0V a 6V, 1 A.

1 puente de diodos de 1 A 1 regulador M 805 capacitores cermicos de 100 nF capacitores cermicos de

pF

1 capacitor electroltico de

0uF/16V

1 diodo 1N4148 1 transistor BC54 B

transistores BC

1 dip-switch de 4 interruptores en formato DI

pp pp

pp

ps r

r q

p p r

1 cristal de 4 MHz. 1 resistencia de

1 resistencia de K

4 resistencias de 10K

resistencias de 1K5 resistencias de

4 leds rojos de mm

1 microcontrolador PIC 16F6 8A 4 Registros de desplazamiento 4HC164N

0 cm. de cable plano de 10 vas y dos fichas borneras de

contactos, para circuito impreso

Varios: z calos para los integrados, pines de bronce, circuito impreso virgen de una sola cara.

PCBs
Son necesarias tres placas de circuito impreso para este proyecto, cuyos diseos son los siguientes:

Placa de control.(Descargar en PDF)

t tt

u u tt

uu ut v t u

0 ohms

Placa de "video".(Descargar en PDF)

Placa del display.(Descargar en PDF)

El Software
Programaci n
Si bien la construcci n de este proyecto es un poco mas compleja que otros encarados antes, la parte del software es la que seguramente nos costara mas trabajo, pero los resultados bien valen la pena. Hemos adjuntado el listado correspondiente al programa que genera el texto POWER para que sirva de ejemplo, pero la idea es que cada uno realice su propio software utilizando como punto de partida las ideas y datos que expondremos a continuaci n. Como dijimos antes, la pantalla esta formada por una serie de filas y columnas. a intersecci n entre ambas contiene un ED. Para que este encienda, tiene que recibir simultneamente un 0 en la fila, y un 0 en la columna. Cuando se dan estas condiciones, la electr nica de la placa de video se encarga del encendido.

a forma de generar un mensaje sobre el display es relativamente sencilla, si nos atenemos al

siguiente algoritmo: 1) Apagar todas las filas, escribiendo un 1 en PORTB.0 y PORTB. al

) Escribir los valores correspondientes a la primer fila en el registro de desplazamiento,

teniendo en cuenta que el primer digito binario colocado corresponde al ultimo ED de la fila, y el ultimo en poner al de la primer columna.

os tiempos de demora que utilizamos en el programa de ejemplo permiten una visualizaci n

correcta, sin molestos parpadeos y con los EDS brillantes. Hay que tener en cuenta que si

utilizamos tiempos mayores para el encendido de cada fila, el brillo de los EDS ser mayor, pero tambin aumentara el parpadeo. No utilizamos vectores ni otras alternativas que hubieran servido para crear un c digo mas compacto, buscando la claridad del programa, para que pueda servir como base a otros mas completos/complejos.

El registro de desplazamiento
Vamos a detenernos un momento para explicar como se introducen los datos en el registro de desplazamiento. o primero a tener en cuenta es que los datos deben entrar de izquierda a derecha, es decir, el primer dato que introduzcamos sera empujado por los que vienen detrs hasta llegar a la ultima columna. En segundo lugar, hay que saber (recomendamos la lectura de la hoja de datos del 4 S164N) que el dato ingresa al registro en el momento que se produce la transici n de 0 a 1 del pulso de C OCK, por lo que se debern seguir los

1) Fijar el valor del dato a escribir (si DATA es 1, hacer PORTA.1 = 1, si no PORTA.1 = 0) ) Esperar un par de microsegundos (WaitUs ) ) Poner la lnea de C OCK en estado bajo (PORTA.0 = 0).

4) Esperar un par de microsegundos (WaitUs ) 5) Poner la lnea de C OCK en estado alto (PORTA.0 = 1). En este punto el dato entra efectivamente en el registro de desplazamiento. 6) Esperar un par de microsegundos (WaitUs ) ) Fin

os tiempos de demora de dos microsegundos funcionan, pero se puede experimentar un poco

con ellos, dado que segn la hoja de datos la frecuencia mxima de trabajo del 4 S164N es

siguientes pasos para ingresar cada uno de los

valores correspondientes a cada fila:

4) Repetir los pasos para las filas

a .

) Poner un 0 en la primer fila (PORTB.0 = 0), esperar un tiempo, y volver a apagarla con

PORTB.0 = 1.

de 5MHz., por lo que demoras menores deberan trabajar bien. Con estos tiempos, la

aceptable. En el c digo fuente se puede ver que por cada lnea a escribir en la pantalla se utiliza un bloque como el siguiente aux = %0010001011111001 Gosub escribo aux = %0100011100000010 Gosub escribo Fila1 = 0 WaitMs 2 Fila1 = 1 Goto loop End

Bsicamente, se llama dos veces a la subrutina escribo que comentaremos en un momento, con 16 bits en la variable aux. uego se enciende la fila escribiendo un 0 en el pin apropiado, se esperan un par de

milisegundos, se apaga escribiendo un 1, y se pasa a la fila siguiente. a subrutina escribo se encarga de procesar el contenido de la variable aux, bit por bit, viendo si son 0o 1 y escribiendo el dato correspondiente en el registro de desplazamiento. a instrucci n aux = Shift eft(aux, 1) se encarga de rotar los 16 bits de la variable a la izquierda, para tomar el bit siguiente.

C digo fuente
A continuaci n, el c digo fuente de ejemplo, en BASIC del PIC SIMU ATOR IDE. '---------------------------'Programa de ejemplo display 7x32 'Texto fijo: POWER ' 'PIC: 16F628A - 4Mhz XTAL, SIN RESET ' '----- CONFIGURO PUERTOS ----PORTA = 0 CMCON = 7 'Configuro PORTA como Digital I/O ' 'Configuro el portA: TRISA.0 = 0 'Salida CLOCK TRISA.1 = 0 'Salida DATA

escritura de los

bits de una lnea demora unos 50 microsegundos, tiempo ms que

TRISA.2 = 1 'Entrada Dip 0 TRISA.3 = 1 'Entrada Dip 1 TRISA.4 = 1 'Entrada Dip 2 TRISA.5 = 1 'Entrada Dip 3 ' 'Configuro el portB: TRISB.0 = 0 'Salida (Fila 1) TRISB.1 = 1 'Entrada RS -232 TRISB.2 = 0 'Salida (Fila 2) TRISB.3 = 0 'Salida (Fila 3) TRISB.4 = 0 'Salida (Fila 4) TRISB.5 = 0 'Salida (Fila 5) TRISB.6 = 0 'Salida (Fila 6) TRISB.7 = 0 'Salida (Fila 7) ' 'Simbolos Symbol clock = PORTA.0 Symbol data = PORTA.1 Symbol fila1 = PORTB.0 Symbol fila2 = PORTB.2 Symbol fila3 = PORTB.3 Symbol fila4 = PORTB.4 Symbol fila5 = PORTB.5 Symbol fila6 = PORTB.6 Symbol fila7 = POR TB.7 clock = 0 data = 0 ' 'Declaracion de variables Dim col As Byte Dim aux As Word ' PORTB = 255 'Apago todas las filas antes de comenzar ' '--------- BUCLE PRINCIPAL -----------Loop: aux = %0001111011111010 Gosub escribo aux = %0010011100011110 Gosub escribo fila1 = 0 WaitMs 2 fila1 = 1 ' aux = %0010001000001010 Gosub escribo aux = %0010100010100010 Gosub escribo fila2 = 0

WaitMs 2 fila2 = 1 ' aux = %0010001000001010 Gosub escribo aux = %0010100010100010 Gosub escribo fila3 = 0 WaitMs 2 fila3 = 1 ' aux = %0001111000111010 Gosub escribo aux = %0010100010011110 Gosub escribo fila4 = 0 WaitMs 2 fila4 = 1 ' aux = %0000101000001010 Gosub escribo aux = %1010100010000010 Gosub escribo fila5 = 0 WaitMs 2 fila5 = 1 ' aux = %0001001000001001 Gosub escribo aux = %1100100010000010 Gosub escribo fila6 = 0 WaitMs 2 fila6 = 1 ' aux = %0010001011111001 Gosub escribo aux = %0100011100000010 Gosub escribo fila7 = 0 WaitMs 2 fila7 = 1 ' Goto loop ' End ' 'Subrutina que llena el registro de dezplazamiento escribo:

For col = 1 To 16 If aux.15 = 0 Then data = 1 WaitUs 2 clock = 0 WaitUs 2 clock = 1 WaitUs 2 Else data = 0 WaitUs 2 clock = 0 WaitUs 2 clock = 1 WaitUs 2 Endif aux = ShiftLeft(aux, 1) Next col Return

Downloads
Desde este link puedes bajar el archivo HEX correspondiente al c digo BASIC anterior.

Algunas ideas
Conexi n con la PC
transmitir datos, pero maneja solo niveles TT , por lo que se incluyeron un par de resistencias, un diodo y un transistor para adecuar el nivel de la seal proveniente del puerto de la computadora a valores digeribles por el PIC. a funci n de los 4 dip-switches conectados a los pines 1, , y 4 tienen como objetivo permitir asignar un numero del 0 al 15 (en binario) a

donde cada una representara el dato que esta dirigido a ella, para lograr un display total de

x51 pixeles (aunque habra que soldar. 584 EDS!)

En caso de utilizar la interfaz con la PC, hay que construir un cable de conexi n, un programa en Visual Basic u otro lenguaje que enve los datos por el puerto serie, en tramas compuestas por ejemplo por un byte de direcci n (a que placa de las 16 corresponde el dato), y 4 bytes con el mensaje en si. Desde el lado del PIC, el software debera incluir la capacidad de discriminar los mensajes enviados a el (en funci n de la posici n de los dip-switches) y representar los caracteres en la matriz.

cada placa. Esto permitira conectar 16 placas iguales (cada cual con su pantalla de x

El PIC16F6 8A dispone de un puerto RS-

incorporado, con capacidad para recibir y

),

Ms y ms ideas
Por supuesto, es imposible incluir aqu la explicaci n de todo lo que se puede hacer utilizando como punto de partida este proyecto, pero descartamos que los lectores modificaran el software (y por que no el hard!) para lograr atractivas marquesinas. o ms obvio para atacar es la comunicaci n con la PC. Esto permite una gran flexibilidad a la

hora de escribir nuevos mensajes, ya que si no hay que reprogramar el PIC cada vez que queremos mostrar un mensaje nuevo. Por supuesto, esto implica crear tablas con la definici n de cada carcter, recibir y analizar los mensajes que entren por el puerto RSmostrarlos en la pantalla. Un verdadero desafo. Algo ms sencillo pero igualmente til es el implementar rutinas de scroll. Si bien el programa para ello no es trivial, se puede encarar cargando en una matriz los 0 y 1 que representan la totalidad del mensaje a mostrar, y luego ir desplazndose por ella a medida que se muestran los datos en la pantalla. Un scroll vertical se puede hacer fcilmente rotando los datos de cada fila, el de la 1 a la , la

, y por ultimo

En lo particular, cuanto disponga de un rato de tiempo, voy a utilizar este display como pantalla de un reloj/term metro. Har una nueva placa para el PIC, cambiando los dip-switchs por pulsadores para ponerlo en hora y un sensor de temperatura one -wire DS18 0. Se va a ver bien sobre el banco de trabajo.

a la ..y la

a la 1.