Está en la página 1de 9

PRINCIPAL DOCUMENTOS PROYECTOS PRODUCTOS LINKS CONTACTO

*LO NUEVO*

Estamos mudando uControl. La pgina que estas viendo en breve va a ser dada de baja, d migrada al nuevo sitio.

Te invitamos a que descubras el nuevo ucontrol, y que cambies los links desde tu pagina Perdon por las disculpas, y nos vemos en el nuevo ucontrol.

[Has click aqui para ir a la nueva pgina]


Sugerencias, preguntas o dudas? Escribe a arielpalazzesi @ gmail.com

Matriz de diodos LEDs de 7x32 pixel


LINKS: [Esquema elctrico] [PCB1] [PCB2] [PCB3] [HEX] [PDF]

Ultima actualizacin:

Display de diodos LED.

INTRODUCCIN: En este documento veremos como disear y construir diodos leds, que nos servir de pantalla para exhibir t fijas o animadas. Los usos son varios, desde un sofisti nuestro gabinete hasta su empleo como medio para e publicidad. Por supuesto, sus dimensiones pueden res para algunos usos, pero es fcilmente expandible. En lo que respecta a las entradas y salidas (E/S), cada microcontrolador, al igual que cualquier computadora, numero finito de ellas, y en general, se trata de un nu demasiado elevado.

Por ejemplo, un PIC16F876A de 28 pines dispone de 22 dedicados a funciones de E/S, y su herman PIC16F877A que cuenta con un total de 40 pines dedica 33 a estos menesteres. Habitualmente, con de pines de control es posible resolver correctamente casi cualquier situacin que se nos plantee, ya normalmente en el diseo de un circuito de control basta con leer unos pocos pulsadores o sensores realizar internamente algn proceso con esas seales, se actan (o no) unas pocas cargas conectad generalmente mediante reles o interfaces de algn tipo. Sin embargo, hay caso concretos en que ningn PIC (o microcontrolador de otras familias) puede ap suficientes de E/S que permitan controlar todas las cargas conectadas a el, y se deben recurrir a cir comandados mediante seales de control y utilizando un bus de datos. Uno de esos casos es el que este articulo. NDICE: > Introduccin > Houston, tenemos un problema > Multiplexado > Tres placas > El cable plano > Lista de componentes > Programacin > El registro de desplazamiento > Cdigo fuente > Conexin con la PC > El 74LS164N > Ideas, ideas y ms ideas

> Houston, tenemos un problema

Esta claro que si queremos formar una imagen mediante pixeles compuestos por LEDs individuales, 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 ilusin 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 7 filas de alto, y si queremos que el display muestre unos 10 o 12 caracteres simultneamente, necesitaremos unas 100 columnas. Si multiplicamos el numero de filas por las columnas, tendremos el numero de LEDs que hay presente en un display de este tipo. Con los valores que mencionbamos recin, vemos que se necesitan 700 LEDs para un display no muy complejo, y de un solo color. Si nos limitramos a los medios tradicionales para encender o apagar cada LED 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 700 pines, algo que debemos descartar de plano por que no existe. Una solucin 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 programacin compleja y un costo elevado, ya que se necesitan unos 3 PICs por carcter, lo que econmicamente no es viable. La 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 representacin en paralelo. [ Volver al NDICE ]

Detalle del 74LS1 registro de desp

> Multiplexado

El termino multiplexar hace referencia a una tcnica que permite aprovechar unas pocas lneas de diferentes tareas, cambiando la funcin que cumplen a lo largo del tiempo. Un ejemplo podra ser u control de temperaturas de varios ambientes. Dado que la velocidad no es crucial, ya que en trmin milisegundos (o microsegundos) la temperatura casi no vara debido a la inercia trmica, se puede u circuito que lea alternativamente cada sensor de temperatura. Esto evita la duplicacin de circuitos el problema con una fraccin de los recursos (pines I/O) disponibles. En el caso de este proyecto, la construiremos esta formada por una matriz de 224 diodos LEDs distribuidos una matriz de 32 colum Estos valores se eligieron por ser casi los mnimos para lograr un display til, ya que un carcter pa necesita tener una altura de 5 o 7 pxeles, y un ancho como mnimo de 5. Con estas dimensiones, lo un texto de unos 5 o 6 caracteres, que opcionalmente puede irse desplazando por la matriz. [ Volver al NDICE ]

> Tres placas

Por razones de como se distribuyo sobre tr circuito impreso difer de ellas, encargada d control lgico y la com PC es la que incluye proyecto. Adems, en encuentra la etapa de excepto el transforma fusible que debern a gabinete que conteng El proyecto completo consta de tres placas de circuito impreso.

La alimentacin esta basada en un regulador de voltaje LM7805, capaz de entregar 500mA sin disip si lo refrigeramos convenientemente. Si sacamos algunas cuentas, veremos que gracias al multiplex debera haber ms de una fila encendida al mismo tiempo, que en el caso ms desfavorable tendra encendidos. Cada LED consume unos 15 miliamperes (5V / 330 ohms = 0.015A), por lo que el cons pantalla es de 0.015 x 32 = 480mA, si esto sumamos el consumo del resto de la electrnica, el co ronda los 600mA. El LM7805 de mi prototipo apenas se entibia sin utilizar disipador. El PIC se encarga de generar los pulsos de CLOCK y DATOs (pines 17 y 18) que son enviados a la p que es la que tiene los conversores serie-paralelo 74LS167N. Tambin tiene la posibilidad de conect RS-232 (ver mas adelante) y controla los drivers que proveen la corriente que alimenta cada fila de corriente es muy elevada para ser entregada directamente por el PIC, se incluyeron 7 transistores B tarea. Se utilizo un cristal de 4MHz y dos capacitores de 22 nF para generar los pulsos de reloj del micro e interno, para lograr una mejor estabilidad con la temperatura, ya que en caso se utilizar la conexin velocidad es un tema delicado. La segunda de las placas, que se conecta mediante un cable plano a la primera, es la encargada de display. Recoge los pulsos de CLOCK y los datos provenientes de la placa controladora va el cable p las columnas que correspondan. Los 74LS164N se conectan a cada columna a travs de una resiste ohms. Si se quiere aumenta el brillo de los LEDS, pueden reemplazarse por resistencias de 220 ohm menores), pero asegurndose que el tiempo de encendido de los leds no pase de unos milisegundos evitar su envejecimiento prematuro. Tambin hay que prestar atencin al consumo de corriente tota cambiar los transistores BC327 por BC640, capaces de manejar corrientes mas elevadas. Por ultimo, la placa mas sencilla, pero a la vez mas laboriosa desde el punto de vista constructivo e propiamente dicha, ya que esta formada por 224 diodos LEDs. Esta placa recibe las seales de cont de la placa de video mediante pines de bronce que le ot organ soporte mecnico y elctrico simult mediante 7 pequeos cables que son los encargados de seleccionar la fila que vamos a iluminar. [ Volver al NDICE ]

> El cable plano

Para enviar los datos desde la placa de control a la placa de video se utilizo un cable plano de 10 v los extremos muy parecidas a las empleadas para conectar unidades de CD-ROM dentro de la PC, p pequeas. Hay que tener cuidado que al armar el cable las fichas no queden invertidas, y las seale 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 c seccin para llevar los 5V de alimentacin hasta esta placa. Hay que tener en cuenta de conectarlos

correcta para evitar destruir algn componente. [ Volver al NDICE ] > Lista de componentes

1 porta fusible y fusible de 1 A. 1 transformador de 220V a 6V, 1 A. 1 puente de diodos de 1 A 1 regulador LM7805 2 capacitores cermicos de 100 nF 2 capacitores cermicos de 22 pF 1 capacitor electroltico de 220uF/16V 1 dip-switch de 4 interruptores en formato DIL 1 diodo 1N4148 1 transistor BC547B 7 transistores BC327 1 cristal de 4 MHz. 1 resistencia de 33K 1 resistencia de 2K2 4 resistencias de 10K 7 resistencias de 1K5 32 resistencias de 330 ohms 224 leds rojos de 3mm 1 microcontrolador PIC 16F628A 4 MHz. 4 integrados 74LS164N 20 cm. de cable plano de 10 vas y dos fichas 3 borneras de 2 contactos, para circuito impreso Varios: zcalos para los integrados, pines de bronce, circuito impreso virgen de una sola cara.

Placa controladora d componentes

[ Volver al NDICE ]

> Programacin

Si bien la construccin de este proyecto es un poco mas compleja que otros encarados antes, la par 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 sirv pero la idea es que cada uno realice su propio software utilizando como punto de partida las ideas y expondremos a continuacin. Como dijimos antes, la pantalla esta formada por una serie de filas y columnas. La interseccin entr un LED. Para que este encienda, tiene que recibir simultneamente un 0 en la fila, y un 0 en la c se dan estas condiciones, la electrnica de la placa de video se encarga del encendido. La forma de generar un mensaje sobre el display es relativamente sencilla, si nos atenemos al sigui

1) Apagar todas las filas, escribiendo un 1 en PORTB.0 y PORTB.2 al 7 2) Escribir los valores correspondientes a la primer fila en el registro de desplazamiento, teniendo e primer digito binario colocado corresponde al ultimo LED de la fila, y el ultimo en poner al de la prim 3) Poner un 0 en la primer fila (PORTB.0 = 0), esperar un tiempo, y volver a apagarla con PORTB. 4) Repetir los pasos para las filas 2 a 7.

Los tiempos de demora que utilizamos en el programa de ejemplo permiten una visualizacin corre parpadeos y con los LEDS brillantes. Hay que tener en cuenta que si utilizamos tiempos mayores pa de cada fila, el brillo de los LEDS ser mayor, pero tambin aumentara el parpadeo. No utilizamos v alternativas que hubieran servido para crear un cdigo mas compacto, buscando la claridad del prog pueda servir como base a otros mas completos/complejos. [ Volver al NDICE ]

> El registro de desplazamiento

Vamos a detenernos un momento para explicar como se introducen los datos en el registro de desp primero a tener en cuenta es que los datos deben entrar de izquierda a derecha, es decir, el primer introduzcamos sera empujado por los que vienen detrs hasta llegar a la ultima columna. En segu que saber (recomendamos la lectura de la hoja de datos del 74LS164N) que el dato ingresa al regis momento que se produce la transicin de 0 a 1 del pulso de CLOCK, por lo que se debern segu pasos para ingresar cada uno de los 32 valores correspondientes a cada fila:

1) Fijar el valor del dato a escribir (si DATA es 1, hacer PORTA.1 = 1, si no PORTA.1 = 0) 2) Esperar un par de microsegundos (WaitUs 2) 3) Poner la lnea de CLOCK en estado bajo (PORTA.0 = 0). 4) Esperar un par de microsegundos (WaitUs 2) 5) Poner la lnea de CLOCK en estado alto (PORTA.0 = 1). En este punto el dato entra efectivament desplazamiento. 6) Esperar un par de microsegundos (WaitUs 2) 7) Fin

Los tiempos de demora de dos microsegundos funcionan, pero se puede experimentar un poco con segn la hoja de datos la frecuencia mxima de trabajo del 74LS164N es de 25MHz., por lo que dem deberan trabajar bien. Con estos tiempos, la escritura de los 32 bits de una lnea demora unos 350 microsegundos, tiempo aceptable. En el cdigo fuente se puede ver que por cada lnea a escribir en la pantalla se utiliza un bloque com 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 m omento, con 1 variable aux. Luego se enciende la fila escribiendo un 0 en el pin apropiado, se esperan un par de milisegundos escribiendo un 1, y se pasa a la fila siguiente. La subrutina escribo se encarga de procesar el conten ido de la variable aux, bit por bit, viendo si s escribiendo el dato correspondiente en el registro de desplazamiento. La instruccin aux = ShiftLef encarga de rotar los 16 bits de la variable a la izquierda, para tomar el bit siguiente.

Placa de LEDs lista, y soldada al registro de desplazamiento. [ Volver al NDICE ] > Cdigo fuente A continuacin, el cdigo fuente de ejemplo, en BASIC. '---------------------------'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 TRISA.0 = 0 TRISA.1 = 0 TRISA.2 = 1 TRISA.3 = 1 TRISA.4 = 1 TRISA.5 = 1 'Configuro el TRISB.0 = 0 TRISB.1 = 1 TRISB.2 = 0 TRISB.3 = 0 TRISB.4 = 0 TRISB.5 = 0 TRISB.6 = 0 TRISB.7 = 0 portA: 'Salida CLOCK 'Salida DATA 'Entrada Dip 0 'Entrada Dip 1 'Entrada Dip 2 'Entrada Dip 3 portB: 'Salida (Fila 1) 'Entrada RS-232 'Salida (Fila 2) 'Salida (Fila 3) 'Salida (Fila 4) 'Salida (Fila 5) 'Salida (Fila 6) '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 = PORTB.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 [ Volver al NDICE ]

> Conexin con la PC

El PIC16F628A dispone de un puerto RS-232 incorporado, con capacidad para recibir y transmitir da solo niveles TTL, por lo que se incluyeron un par de resistencias, un diodo y un transistor para adec seal proveniente del puerto de la computadora a valores digeribles por el PIC. La funcin de los 4 conectados a los pines 1,2,3 y 4 tienen como objetivo permitir asignar un numero del 0 al 15 (en bi placa. Esto permitira conectar 16 placas iguales (cada cual con su pantalla de 7x32), donde cada u el dato que esta dirigido a ella, para lograr un display total de 7x512 pixeles (aunque habra que so LEDS!) En caso de utilizar la interfaz con la PC, hay que construir un cable de conexin, un programa en Vi lenguaje que enve los datos por el puerto serie, en tramas compuestas por ejemplo por un byte de placa de las 16 corresponde el dato), y 4 bytes con el mensaje en si. Desde el lado del PIC, el softw la capacidad de discriminar los mensajes enviados a el (en funcin de la posicin de los dip-switche los caracteres en la matriz. [ Volver al NDICE ]

> El 74LS164N

Este interesante circuito integrado de la familia TTL viene en diferentes sabores, de acuerdo a la v temperatura de operacin, voltajes y corrientes soportadas, etc. Dichas caractersticas dependen de el 74 y el 164. En lo que a este proyecto respecta, cualquiera va a funcionar, de hecho, para con prototipo use cuatro integrados que rescate de mi cementerio de plaquetas. Incluso, use dos 74LS 74HC164J/B, y funcionaron perfectamente.

Desde el punto de vista tcnico, se trata de un registro de desplazamiento de 8 bits. Esto significa como un conversor serie-paralelo, en el que se introducen pulsos de reloj por un pin y datos en seri salidas van toman los estados indicados por el tren de datos de la entrada. Dispone de un pin (el funcin de poner en cero todas las salidas (clear) que a pesar de ser una interesante y til caracter circuito que presentamos hoy no la implementamos, ya que el PIC 16F628A se nos estaba quedand y preferimos la posibilidad de conectar el proyecto a una PC va RS-232, y cuando queramos limpiar imprimiremos espacios en blanco. Los pines 1 y 2 son la entrada de datos. Internamente una compuerta AND realiza el producto lgic de ambas entradas, por lo que se opto por unirlas elctricamente entre si para que se comporten co pulsos de clock entran por el pin 8, y los pines 3,4,5,6 ,10,11,12 y 13 son (en ese orden) las salidas Cada una de estas salidas alimentara una de las columnas del display, y la ultima de ellas (el pin13) tambin de transferir el dato al integrado siguiente, de manera q ue con cuatro de ellos puestos en un registro de desplazamiento de 32 bits, justo uno para cada columna del display. Si se quiere, es un display mas largo simplemente agregando etapas de 8 columnas, cada una con su 74LS164N. [ Volver al NDICE ]

> Ideas, ideas y ms ideas Por supuesto, es imposible incluir aqu la explicacin de todo lo que se puede hacer utilizando como este proyecto, pero descartamos que los lectores modificaran el software (y por que no el hard!) pa atractivas marquesinas. Lo ms obvio para atacar es la comunicacin con la PC. Esto permite una gran flexibilidad a la hora mensajes, ya que si no hay que reprogramar el PIC cada vez que queremos mostrar un mensaje nu supuesto, esto implica crear tablas con la definicin de cada carcter, recibir y analizar los mensajes el puerto RS-232, y por ultimo mostrarlos en la pantalla. Un verdadero desafo. Algo ms sencillo pero igualmente til es el implementar rutinas de scroll. Si bien el programa para se puede encarar cargando en una matriz los 0 y 1 que representan la totalidad del mensaje a m 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 2, la 2 a la 1. En lo particular, cuanto disponga de un rato de tiempo, voy a utilizar este display como pantalla de reloj/termmetro. Har una nueva placa para el PIC, cambiando los dip-switchs por pulsadores para y un sensor de temperatura one-wire DS1820. Se va a ver bien sobre el banco de trabajo. [ Volver al NDICE ]