Beruflich Dokumente
Kultur Dokumente
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 acerlo. ! lo largo de estos parrafos "eremos la forma de abordar el problema, y el principio de funcionamiento de una matriz de LEDs de un tama#o cual$uiera. %o construiremos ni programaremos una, pero si "eremos como se debe acer. &i el lector necesita un proyecto de este tipo listo para usar, puede consultar los $ue se listan al final de este artculo.
' .
El -ard.are
Desde el punto de "ista del hardware, b*sicamente consiste en una matriz de pxeles similar a los de la pantalla de un ordenador, generalmente de un solo color /la mayora de las "eces ro)os0, aun$ue con el descenso de los precios de los LEDs indi"iduales o en paneles, es cada "ez m*s frecuentes "er carteles +bicolores, o incluso +multicolores,, apro"ec ando la "enta)a del los LEDs RGB, $ue pueden mostrar cual$uier color.
6omo es de suponer, el desarrollo, construccin y programacin de un cartel e este tipo es una tarea bastante comple)a, pero perfectamente posible para cual$uiera $ue tenga conocimientos b*sicos 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. 7 aun$ue no construyas uno, ley8ndolo aprender*s alg9n truco 9til $ue podr*s emplear en otro proyecto. :ara mantener el ni"el de la explicacin dentro de lo razonable, y para no gastar una fortuna en nuestro cartel, lo dise#aremos monocrom*tico, utilizando LEDs de color ro)o 9nicamente. Las dimensiones de la matriz utilizada para mostrar los textos la decidir* cada uno de los lectores, pudiendo ser tan pe$ue#a /; filas y < columnas0 o tan grande como se desee. (n tama#o razonable y muy empleado es el de ; filas por 5= columnas, $ue permite escribir unas '> o '? letras de ; +pixeles, de altura. ! pesar de no ser demasiado grande, ya abr*s sacado la cuenta de $ue se necesitan <?= LEDs indi"iduales para armar el cartel.
Encendiendo un LED
En el n9mero @ de la 2e"ista u6ontrol, en el artculo llamado :I6s y LEDsA una pare)a perfecta "imos como encender un LED desde un microcontrolador. 7 de ec o es algo muy simpleA conectamos el *nodo del LED al :I6, el c*todo a un resistor y el extremo de este a BC. 6uando el pin del microcontrolador est* en +',, el LED enciende. :ero lamentablemente este es$uema no sir"e para la construccin de un cartel matricial como este, ya $ue al utilizar cientos de LEDs necesitaramos tener un microcontrolador $ue tenga como mnimo ese n9mero de pines de salida /y por supuesto, no existe0.
1ultiplexado
El secreto, por supuesto, est* en el multiplexado. Esta t8cnica permite utilizar unos pocos pines de ED& del microcontrolador para mane)ar una serie de circuitos integrados $ue se encarguen de excitar los LEDs. -ay "arias maneras, y muc os modelos diferentes de circuitos para acer esto. :ueden usarse un tipo de integrado digital llamado LATCH, $ue b*sicamente es una memoria en la $ue escribimos un "alor, y lo mantiene en sus salidas asta $ue nosotros lo indi$uemos. De esta manera, usando "arios latc es podramos encender los LEDs por turnos, r*pidamente para $ue no se note el parpadeo, y de esa manera formar una palabra en el cartel. Etra forma es utilizar un registro de desplazamiento como los analizados en el n9mero ' de la 2e"ista u6ontrol. 7 de ec o, es de
esta forma cmo "amos a dise#ar nuestro cartel. 6omo "imos en esa oportunidad, un registro de desplazamiento funciona de la misma manera en $ue funciona una cola de gente $ue espera para entrar en un cine. :or un extremo de la cola "an ingresando las personas $ue llegan, y por el otro "an saliendo de la fila. En un registro de desplazamiento, en lugar de personas tenemos +=, y +',. Lo bueno de esto es $ue para +meter, datos /+=,s y +',s0 en el registro de desplazamiento solo acen falta tres pines del microcontrolador, independientemente de lo largo $ue sea. Estos pines se encargan de tres tareasA (no de ellos, al $ue denominaremos DATA es el encargado de decirle al registro de desplazamiento $ue lo $ue introduciremos es un +=, o un +',. El segundo se encarga de a"isar al registro $ue el dato ya est* listo para ser ingresado, y lo llamaremos +6LE6F,. 7 el ultimo, $ue no es indispensable, es el RESET, $ue se encarga de +"aciar, la fila escribiendo +=,s en todas las salidas del registro.
:ara desarrollar nuestro e)emplo utilizaremos el circuito integrado ;>-6'?>%, $ue es un registro de desplazamiento de 5 bits. Es decir, con el se puede armar una +fila, de 5 +personas,. :ara construir un cartel de 5= columnas, necesitaramos utilizar '= de estos integrados, uno a continuacin del otro. !fortunadamente, este integrado cuesta solo centa"os. En la figura ' podemos "er la funcin de cada uno de los pines del ;>-6'?>% y en la figura @ de $ue forma podemos conectar uno a continuacin del otro para obtener un registro de desplazamiento de cual$uier longitud.
Figura '.
Figura @.
Filas y columnas
4ien, con el es$uema explicado podemos encender los LEDs $ue $ueramos de una fila de 5= bits de largo. &i en el registro de desplazamiento introducimos +11111111,, los 5= LEDs estar*n encendidos. &i $ueremos encender uno por medio, escribiremos +1010101,. :or supuesto, cuando lleguemos a la parte de la programacin "eremos cmo se ingresan uno a uno los +=, y +', en el registro. En este punto puede ser necesario analizar el tema de las filas. &i tenemos, por e)emplo, un cartel con ; filas, y lo explicado reci8n sir"e para mane)ar solo una de ellas Gdebemos utilizar un registro de desplazamiento para cada una de las filas restantesH !fortunadamente, la respuesta es no. &i bien podramos utilizar ; registros de este tipo, la cantidad de circuitos integrados necesarios /<? de ellos0, la comple)idad del circuito impreso y el costo implicado lo acen poco aconse)able. %osotros apro"ec aremos un +defecto, del o)o umano, $ue mantiene la imagen "ista durante unos @= o I= milisegundos, para +dibu)ar, una fila a la "ez, pero muy r*pidamente, de forma $ue todo el cartel parezca estar encendido a la "ez. &i, se trata de un sistema similar al empleado en el cine o en la tele"isin. &i seguimos pensando en un cartel de ; filas y 5= columnas, sin utilizar registros de desplazamiento necesitaramos <?= pines de entradaDsalida. 6on el es$uema propuesto solo necesitamos ; de ellos para seleccionar la fila a escribir, y tres para mane)ar el registro de desplazamiento. Es decir, un :I6 de I euros y '5 pines ser"ira perfectamente para realizar el proyecto.
1) Apagar todas las filas. 2) Escribir los valores correspondientes a la primer fila en el registro de desplazamiento, teniendo en cuenta ue el primer digito
binario colocado corresponde al !ltimo "E# de la fila, $ el ultimo en poner al de la primer columna. %) Encenderla primer fila, esperar un tiempo, $ volver a apagarla. &) 'epetir los pasos 2 $ % para las filas restantes.
El tiempo de la demora debe ser tal $ue permita una "isualizacin correcta, sin molestos parpadeos y con los LED& brillantes. -ay $ue tener en cuenta $ue si utilizamos tiempos mayores para el encendido de cada fila, el brillo de los LED& ser* mayor, pero tambi8n aumentar* el parpadeo. La forma de transformar este algoritmo en un programa funcional depende de cada programador, y puede ser m*s o menos comple)o seg9n se permitan diferentes tipos de caracteres, animaciones, etc.
El circuito de e)emplo
Dado $ue nuestro ipot8tico cartel tiene fines meramente educati"os, y la intencin mantener su costo lo m*s ba)o posible para $ue cada lector pueda construirlo, por lo $ue intentaremos realizarlo en base a un microcontrolador pe$ue#o, como el :I6'?F?@5!. &i el lector necesita un cartel de mayor tama#o o con capacidad para almacenar textos o im*genes m*s extensos, deber* utilizar alg9n micro con mayor capacidad y "elocidad. La utilizacin de una memoria EE:2E1 externa de un tama#o bastante grande, como la @>6@<?, nos brinda la posibilidad de almacenar muc o texto en ella. :or supuesto, esto tambi8n puede ser ampliado con muc a facilidad. Di"idiremos el es$uema electrnico del cartel en dos partesA en primer lugar "eremos toda la lgica de control, y en segundo, la +pantalla, con el registro de desplazamiento. ! la ora de lle"arlo a la pr*ctica se puede incluso acer dos circuitos impresos por separado. Esto le permitira al lector experimentar con otros controladores sin necesidad de "ol"er a montar la placa de los displays, o "ice"ersa.
El circuito controlador
Este es el cerebro de nuestro cartel. &er* el encargado de gestionar el encendido de cada LED mediante rdenes en"iadas a las columnas mediante el registro de desplazamiento y a las filas. 6omo una fila tendr* muc os LEDs /5=, por e)emplo0y existe la posibilidad $ue en alg9n momento puedan estar todos encendidos, no
podemos conectarlas directamente a pines de ED& del :I6, por$ue la corriente $ue demandaran ara $ue el puerto del microcontrolador pase a me)or "ida. :ara e"itar esto, utilizaremos en medio un transistor capaz de mane)ar la corriente re$uerida.
!nalicemos el circuito de la figura anterior. El centro de todo es el microcontrolador :I6'?F?@5!, $ue tiene su pin de RESET conectado a un pulsador y un resistor de '=F. Este pulsador permite reiniciar el cartel cuando lo necesitemos. Tambi8n se a implementado un circuito de relo) externo, basado en un cristal de > 1-z y dos condensadores de @@ nF. Esto le permite al :I6 e)ecutar un milln de instrucciones por segundo, m*s $ue suficientes para este proyecto. Los pines ' y @, correspondientes a los terminales !@ y !I del microcontrolador, se an utilizado para acceder a una memoria EE:2E1 del tipo @>6@<?. Esta memoria es de acceso serial /por eso necesitamos solo dos pines del :I6 para usarla0 mediante el protocolo I@6, y tiene capacidad para almacenar I@.;?5 4ytes. &i nuestro programa ace uso de ella, podemos guardar all I@.;?5 caracteres /con el display en modo texto0 o m*s de ><= pantallas de ;x5= pxeles en modo gr*fico. &i resultara insuficiente, puede ponerse una memoria de mayor capacidad, siempre consultando la o)a de datos de la misma para asegurarnos su compatibilidad con la del e)emplo. Todo el puerto 4 del :I6 est* dedicado a controlar las filas del cartel. 6omo ya abr*n notado, tenemos 5 salidas para filas, y nuestro cartel tiene solo ; filas. Efecti"amente, la fila 5 no se utilizar* si nuestra +pantalla, est* construida con mdulos LED de ;x<, pero el circuito de control est* preparado para el uso /en caso de $ue alguien los prefiera0 de mdulos de 5x5 o bien para crear un cartel de 5 filas mediante el uso de LEDs sueltos. Juienes utilicen mdulos de ;x< pueden a orrarse el transistor de la fila 5. :or 9ltimo, los pines '; y '5, correspondientes a los terminales != y !' del microcontrolador se encargan de la gestin del registro de desplazamiento. El programa deber* generar los pulsos de relo) necesarios por el pin '5, y +meter, los datos en el registro por el pin ';. %o emos incluido una fuente de alimentacin. 6ual$uier fuente comercial /o construida en casa0 $ue sea capaz de entregar <C y @!
ser* suficiente. Esos <C deben estar bien regulados, y por supuesto, el soft.are deber* estar escrito correctamente, es decir, no encender "arias filas al mismo tiempo, ya $ue el consumo de todo el cartel encendido sera de unos 5= x ;= x @=m! K ''.@ !, lo $ue podra destruir la fuente en caso de $ue no cuente con protecciones adecuadas.
El dis la!
Esta es la parte del proyecto $ue todo el mundo "a a mirar, as $ue debemos ser proli)os al montarlo. 6omo puede "erse en el es$uema el8ctrico de la figura >, emos utilizado un total de '= circuitos integrados ;>-6'?>% para construir el registro de desplazamiento de 5= bits de largo, uno para cada columna. 6omo explicamos, si alguien $uiere acer un cartel m*s largo o m*s corto, deber* poner m*s o menos integrados.
&i miramos el es$uema del display, "eremos $ue en la parte superior se muestra como est* conectado cada LED dentro de la matriz de <x;. Esto es importante tenerlo en cuenta a la ora de comprar los mdulos, ya $ue ay una gran cantidad de modelos, y algunos de ellos tienen los LEDs conectados en el sentido in"erso. 6ada display tambi8n difiere en la funcin de cada terminal, por lo $ue se debe estar a atentos a la o)a de datos para dise#ar el circuito impreso apropiado, y conectarlos como corresponda. En el dibu)o del circuito no emos representado los '? mdulos ni los '= circuitos integrados, por una cuestin de espacio, pero es f*cil darse cuenta de $u8 forma se conectan las filas y columnas de los dem*s displays a cada ;>-6'?>%. %o utilizaremos el pin de RESET de los "#HC$%#&. En lugar de ser controlados desde el microcontrolador, cada 2E&ET est* puesto a B<C, de forma $ue el integrado funcione continuamente. &i por alg9n moti"o se desea borrar la pantalla, basta con en"iar 5= +=,s al registro de desplazamiento y listo. El tiempo empleado para esa tarea es despreciable, ya $ue el microcontrolador estar* e)ecutando ' milln de instrucciones por segundo. El utilizar una lnea de control menos nos permitir* tener una placa de circuito impreso ligeramente m*s sencilla.
6ada salida de los ;>-6'?>%, como di)imos, se conecta a una columna de la serie de displays. Esta conexin se efect9a mediante un resistor de 'D5 de Latt, $ue en el es$uema se a dibu)ado con un "alor de II= o m. Ese fue el "alor adecuado para el tipo de mdulos $ue conseguimos para acer el prototipo, pero su "alor "ariar* de un modulo a otro. &e puede montar solo un display con resistores de II= o ms, y "er como es el brillo de los LEDs. &i es escaso, se puede ba)ar el "alor a @@= o '== o ms. 6on eso debera ser suficiente
El soft.are
! ora nos toca abordar la programacin del ard.are propuesto. El cartel del LEDs $ue estamos construyendo puede adoptar diferentes tama#os de acuerdo a las necesidades o componentes $ue cada uno consiga. Esto ace $ue sea imposible proporcionar un programa especfico $ue funcione en cual$uier "ersin de cartel $ue se aya construido, pero sin embargo podemos acer algo muc o me)orA "er de $u8 manera se escribe un programa de este tipo en 4!&I6 /del :I6 &I1(L!TE2 IDE0 para $ue cada uno lo adecue a su proyecto. Debemos pensar en un programa $ue nos permita mostrar pxeles indi"iduales representados sobre la pantalla de nuestro cartel. &igamos con el e)emplo del cartel de 5= columnas y ; filas de altura, recordando $ue todo lo $ue expli$uemos puede ser adecuado para carteles de otro tama#o. Lo primero $ue necesitamos saber es $ue el +barrido, del cartel debe acerse por filas. Es decir, mostraremos el contenido de la primera fila, esperamos un tiempo determinado /unos pocos milisegundos0, mostramos el de la segunda fila, esperamos nue"amente, y as asta llegar a la 9ltima fila, tal como se expresa en el algoritmo "isto mas arriba. El moti"o de no emplear las columnas para realizar el barrido es $ue como son m*s numerosas, el tiempo total $ue se necesita para +escribir, por filas es muc o menor $ue el necesario para escribir por columnas, y en la pr*ctica eso significa $ue el brillo de nuestro cartel ser* muc o mayor si lo acemos por filas, ya $ue cada LED permanecer* encendido 'D; del tiempo. &i lo ici8semos por columnas, cada LED estara /en este e)emplo0 encendido solo 'D5= del tiempo, por lo $ue su brillo seria unas '= "eces menor. ! ora bien, el primer problema a resol"er es G6mo escribo los datos de una fila del cartelH Esto tiene una solucin m*s $ue simpleA solo debemos introducir en el registro de desplazamiento los +=, y +', necesarios para $ue los LEDs $ue $ueremos est8n encendidos en esa fila tengan BC en sus *nodos. :or supuesto, mientras acemos esto todos los pines del microcontrolador $ue controlan las filas deber*n estar apagadas, para $ue no se perciba una d8bil luminosidad en todos los LEDs de la fila $ue estamos escribiendo a medida $ue pasan los datos a tra"8s del registro. El primer "alor $ue se debe +meter, en el registro de desplazamiento es el $ue corresponder* a la 9ltima columna. ! medida $ue "amos ingresando los siguientes, se "an desplazando acia el final del cartel. 6uando ayamos introducido el "alor n9mero 5= /$ue corresponder* a la primera columna0 el primer "alor $ue metimos abr* llegado a su posicin. En ese momento tenemos todo el registro escrito, y ya podemos acti"ar la salida del :I6 $ue corresponde a esa fila en particular. El tiempo $ue debe estar encendida la fila se puede determinar empricamente, pero por lo generan unos '= milisegundos es suficiente. &i tenemos ; filas, '= milisegundos de demora permitiran escribir todo el cartel en unos ;= milisegundos, por lo $ue obtendramos un m*ximo de '===D;= K '> +frames, por segundo. Este es un muy buen "alor para una pantalla de este tipo, ya $ue solo estamos mostrando un texto y no un "ideo. En los c*lculos anteriores no tu"imos en cuenta el tiempo $ue se demora en escribir los 5= "alores en el registro de desplazamiento. Ceamos por$ueA cada "alor ingresado en el registro de desplazamiento demora unos @ microsegundos. Es decir, demoramos @ x 5= K
'?= millon8simas de segundo en escribir toda la fila. &i multiplicamos este "alor por ; tendremos en tiempo $ue necesitamos para escribir las ; filas del cartel, lo $ue nos da ''I? millon8simas de segundo, es decir, poco m*s de ' mil8sima. Este es un tiempo despreciable frente a las ;= mil8simas $ue nos tomamos para mostrar la imagen completa, y podemos despreciarla. ! ora "amos a "er, en 4!&I6, como acer para escribir un "alor en el registro de desplazamiento. 2ecordemos $ue el dato ingresa al registro en el momento $ue se produce la transicin de +=, a +', del pulso de 6LE6F, por lo $ue se deber*n seguir los siguientes pasos para ingresar cada uno de los 5= "alores correspondientes a cada filaA
1) (i)ar el valor del dato a escribir *si #A+A es 1, ,acer -.'+A.0 / 1, si no -.'+A.0 / 0) 2) -oner la lnea de 0".01 en estado ba)o *-.'+A.1 / 0). %) Esperar un 1 microsegundo *2ait3s 1) &) -oner la lnea de 0".01 en estado alto *-.'+A.1 / 1). En este punto el dato entra efectivamente en el registro de desplazamiento. 4) Esperar un 1 microsegundo *2ait3s 1) 5) (in
En 4!&I6, si emos declarado $ue Symbol clock = PORTA.1 Symbol data = PORTA.0 (n +=, se escribira asA data = 0 clock = 0 WaitUs 1 clock = 1 WaitUs 1 7 un +', de la siguiente maneraA data = 1 clock = 0 WaitUs 1 clock = 1 WaitUs 1 :ara escribir los 5= "alores de la fila necesitamos acer una subrutina $ue, tomando '= bytes de la memoria EE:2E1 /'= bytes x 5 bits K 5= bits, es decir, una fila completa0 los "uel$ue al registro de desplazamiento. &i repetimos ; "eces este procedimiento, tendramos una pantalla de ;x5= completa. Eso significa $ue en la EE:2E1 cada pantalla "a a necesitar de ;= bytes /'= bytes por fila, ; filas0 para almacenar el mapa de bits correspondiente. Ceamos un e)emplo de cmo podra ser la subrutina encargada de escribir un byte tomado de la EE:2E1 en el registro de
desplazamiento, a la $ue emos llamado escribo6$teA escriboByte: For colum a = 1 To ! "# dato.$ = 0 T%e data = 0 clock = 0 WaitUs 1 clock = 1 WaitUs 1 &lse data = 1 clock = 0 WaitUs 1 clock = 1 WaitUs 1 & di# au' = S%i#t(e#t)dato* 1+ ,e't colum a Retur Esta funcin debe ser llamada '= "eces para escribir la fila completa, con el "alor a escribir guardado en la "ariable +dato,. El moti"o por el cual el bucle '(R)&E*T toma los bits del byte desde el ; asta el = se debe a $ue )ustamente el 9ltimo bit es el $ue debe ingresar primero al registro de desplazamiento, tal como explicamos antes. Debemos partir de la base de $ue la informacin de la EE:2E1 la "amos a grabar desde un ordenador, y $ue seguramente crearemos un programa $ue permita, a partir de un texto determinado, generar los bits indi"iduales $ue componen el bitmap de cada pantalla del cartel. Esto simplifica muc simo la programacin del microcontrolador, ya $ue solo debe dedicarse a leer la EE:2E1 y "olcar su contenido al registro de desplazamiento, sin tener $ue +dibu)ar, las letras a partir de una tabla ni nada por el estilo.
Textos animados
:ara animar el texto mostrado en el display ay dos opciones. La primera de ella es $ue, una "ez $ue el bitmap de la EEPR(+ a sido mostrado en la pantalla, comencemos a redibu)arlo continuamente /si no lo acemos, el texto desaparecer* de la pantalla0 pero cada un tiempo determinado /' segundo por e)emplo0 escribimos un bit +=, m*s en cada fila. Es decir, escribimos 5' bits en el primer segundo, 5@ en el segundo, etc. Esto ar* $ue el texto se desplace de iz$uierda a derec a, y es la animacin m*s f*cil de implementar. &in embargo, lo normal es $ue los textos de desplacen en sentido contrario, por lo $ue nuestro programa debera acer lo siguienteA comenzar escribiendo 5= +=,s en el registro antes de en"iar la informacin de la fila, luego escribir ;M +=,s, y as sucesi"amente. De esa manera, el texto al principio no ser* "isible /estar* +dibu)ado, a la derec a, fuera del registro de desplazamiento0, y luego a medida $ue el numero de +=,s escritos "a disminuyendo, comenzara a ser "isible, entrando desde la derec a. La segunda manera es $ue el soft.are $ue escribe los datos en la EE:2E1 guarde cada +cuadro, de la animacin, uno a continuacin del otro, y $ue el :I6 se limite a escribir cada cuadro ledo durante /por e)emplo0 un segundo. Esto "uel"e a facilitar muc o la programacin del :I6, a la "ez $ue permite animaciones muc o m*s complicadas. :or supuesto, el precio a pagar es el espacio de memoria EE:2E1 re$uerido para implementar esta t8cnica.
6onclusin
6aractersticas &us caractersticas m*s rele"antes sonA '. @. I. >. <. ?. :recisin de N',<O6 /peor caso0, =.<O6 garantizados a @<O6. %o linealidad de N=,<O6 /peor caso0. 4a)a corriente de alimentacin /?=u!0. !mplio rango de funcionamiento /desde P<<O a B '<=O60. 4a)o costo. 4a)a impedancia de salida.
&u tensin de salida es proporcional ala temperatura, en la escala 6elsius. %o necesita calibracin externa y es de ba)o costo. Funciona en el rango de alimentacin comprendido entre > y I= "oltios. 6omo "enta)a adicional, el L+,- no re$uiere de circuitos adicionales para su calibracin externa cuando se desea obtener una precisin del orden de Q=.@< O6 a temperatura ambiente, y Q=.;< O6 en un rango de temperatura desde << a '<= O6. La ba)a impedancia de salida, su salida lineal y su precisa calibracin in erente ace posible una f*cil instalacin en un circuito de control. Debido a su ba)a corriente de alimentacin /?=u!0, se produce un efecto de autocalentamiento reducido, menos de =.' O6 en situacin de aire estacionario.