| 7sd - Display 7 segmentos |
|
|
| Escrito por Maxi Padulo |
| Jueves 07 de Mayo de 2009 16:56 |
ResumenEn este proyecto explica el diseño y el funcionamiento de un display de 15 caracteres con dígitos LED de 7 segmentos, que permite mostrar mensajes provenientes desde un PIC o desde la PC. IntroduccionHace un tiempo que venía buscando algún diagrama para construir un HitCounter (contador de visitas) con LEDs de 7 segmentos. Desafortunadamente no encontré ninguno que tuviera lo que yo quería asi que decidí diseñarlo yo mismo.
Mi idea era armar un array con un puñado de estos bichitos uno al lado del otro, y transmitirles algún mensaje desde la PC para poder mostrar estadísticas del servidor web y no tener que dejar el monitor prendido todo el tiempo. Otra cosa que no quería era mutliplexar los dígitos, que es lo que hacen la mayoría de los displays y que bajo ciertas circunstancias parece como si los digitos temblaran o saltaran uno al lado del otro dándole un mal aspecto al display. Diseño.El 7sd tiene un diseño modular, que permite ir encastrando varios módulos para lograr la cantidad y la disposición de dígitos deseada. Cada módulo consiste en 15 dígitos de 7 segmentos manejados directamente por registros de desplazamiento (shift register), los cuales estan encadenados entre sí. Los displays que usé son: BC56-11 EWA (eran los más baratos) y los registros de desplazamiento son los conocidos CD4094. Algo que deben tener en cuenta si piensan fabricarlo es conseguir todos los 4094 de la misma marca ya que entre una marca y otra las características electricas pueden variar haciendo que algunos dígitos brillen más que otros. El circuito se alimenta con 5 voltios, los cuales se obtienen fácilmente de la fuente del PC (cables Rojo (+5v) y Negro (GND)). Los datos se transmiten por un puerto serie, o por puerto USB usando el adaptador correspondiente. La adaptación de voltaje RS-232 (-15v = 1, +15v = 0) la realicé simplemente con un diodo y una resistencia que actua como pull-down. Lo que hay que tener en cuenta es que de esta forma obtenemos los datos en lógica negativa mientras que los registros de desplazamiento trabajan con lógica positiva. Para socavar esto desde el software debemos simplemente aplicarle una función XOR con máscara OxFF a todos los bytes de salida para invertir la lógica. Construcción.La placa es un rectángulo de 19cm x 5,4cm, posee 526 agujeros y 5,76 metros de pistas. Para fabricar la placa usé una placa de epoxi doble fáz con el método de transferencia térmica. Realmente la fabricación y el montaje de la placa terminó siendo bastante complicado ya que circuito tiene una densidad de pistas y componentes muy alta para la fabricación casera. Funcionamiento.El puerto serie de la PC esta controlado por un chip que se llama UART (Universal Asynchronous Receiver/Transmitter). Este circuito integrado (generalmente el 16550 originalmente fabricado por National Semiconductor) se encarga de transmitir los bytes que le enviamos desde el PC a través de la línea de transmisión (RS-232 u otra).
Podemos configurar la UART para que no use bit de parada, pero el bit de arranque es estrictamente necesario para una comunicación serial asincrónica por lo cual no lo podemos quitar. Los registros de desplazamiento funcionan de forma síncrona. Necesitan una señal (llamada reloj o clock) que les indica que tienen un bit listo para leer en la línea de datos.Si quisieramos mandarle datos de forma asincrónica a los registros de desplazamiento no entenderían nada ya que obviamente no tienen ni idea de lo que es un bit de arranque y menos un bit de parada, y tampoco tendríamos una señal de reloj que estuviera en sincronismo con los datos. Para convertir una comunicación asincrónica en sincrónica necesitamos algun dispositivo intermediario. Podría implementarse por ejemplo con un microcontrolador. Pero aquí viene la parte más interesante. Para no tener que usar un microcontrolador (para que el diseño fuese lo mas económico y sencillo posible) la idea es utilizar dos de las líneas de control (DTR - Data Terminal Ready y RTS - Ready To Send) disponibles en la UART para transmitir datos en una y la señal de reloj en la otra. Irónicamente la idea la descubrí haciendo reverse a un programador de microcontroladores PIC el cual funciona de forma similar a lo que acabo de describir. Como son líneas de control podemos modificar su estado a nuestro antojo. De esta forma implementé la comunicación sincrónica. Tambíen se le dió uso a la línea de datos asincrónico (Tx) para enviar un pulso a la línea de strobe del CD4094 luego de finalizar la transmision de los datos. Para poder mostrar letras en los 7 segmentos usé una codificación binaria de la fuente que diseño Harvey Twyman, específicamente diseñada con 7 segmentos (curiosamente el autor dice poseer 2 records Guinness con esa fuente). El software que controla el display consiste en un demonio que corre en linux, y se encarga de realizar los efectos visuales al mostar los mensajes. Para diseñar e implementar el programa le pedí a Julian que me diera una mano y al final lo desarrollo él casi en forma íntegra y le incorporó tambien algunas ideas propias. Hizo muy buen trabajo. Fin de la historia.El display que fabriqué como prototipo lo uso constantemente para mostrar estadísticas del servidor que tengo en casa. Uno de estos displays se colocó en la cartelera del LINSI (UTN-FRLP) para pasar mensajes e información de último momento a travéz de internet. Si tuviera un poco mas de tiempo y dinero haría un par más de éstos porque me encantan. Descargas.Circuito listo para transferir PDF (Tamaño A4). Código fuente del driver Linux (contactar a Julian Perelli - Ver información de contacto). |
| Última actualización el Viernes 25 de Septiembre de 2009 01:47 |






