Menu
in

Microcontroladores: Display de LED

Los microcontroladores aplicados en procesos domésticos o industriales, siempre tienen algo para mostrarnos. Hay oportunidades en que un LCD alfanumérico es una opción desmedida cuando sólo intentamos representar un número de pocas cifras, o bien, esa alternativa se torna ineficiente cuando la intención es visualizar indicaciones de gran tamaño y a una distancia de varios metros. La elección de un display de LED puede ser la más acertada pero: ¿cómo implementarla de la manera más eficiente? En este artículo podremos discutir sobre los circuitos multiplexados o los manejados con latch (enclavamiento) y decidiremos cuál nos conviene para nuestro próximo indicador visual. Una aplicación con un contador ascendente / descendente que puedes utilizar en cualquier proyecto, es un buen ejemplo.

Al momento de decidir cómo implementar un indicador luminoso de dígitos, automáticamente se nos vienen a la mente los populares display de siete segmentos que los podemos encontrar en el mercado con la cantidad de dígitos que se nos ocurra, con una variedad de colores muy amplia y con dos configuraciones constructivas muy definidas y que debemos atender a no equivocarnos para evitar un arrepentimiento posterior. Las configuraciones citadas son: de cátodo común y de ánodo común. Esto significa que los LEDs que forman cada segmento del dígito, se unen en un terminal común para su conexión y puede hacerse uniendo todos lo ánodos o todos los cátodos, según el modelo que el fabricante decida. El punto decimal que habitualmente acompaña a cada dígito, se conecta de manera individual, tal como puedes ver en la siguiente imagen.

Cuando se trabaja con estos indicadores, debes tener presente que necesitarás disponer para su activación de ocho terminales de un microcontrolador. Es decir, un puerto completo de ocho bits y cuando los recursos constructivos son acotados, destinar un puerto completo para manejar un solo dígito puede ser una elección poco apropiada. Si además sumamos a la situación, que la cuenta debe realizarse con números que superan las unidades, debemos apelar a otros pines de otros puertos para resolver la construcción del indicador deseado. En los casos en que se requiere obtener un número de varios dígitos la conexión es sencilla reduciéndose a conectar todos los segmentos de los dígitos en paralelo y habilitando la entrega de datos mediante el terminal común de cada display. Observa la próxima imagen.

Es decir, al bus de datos formado por los terminales a, b, c, d, e, f, y g se envían todos los dígitos necesarios para mostrar, y la visualización se realizará en la medida que los transistores conectados a los respectivos cátodos (según la imagen), sean habilitados en el momento preciso. Esto es: si deseamos visualizar el número 396, primero enviamos el número 6 a todos los dígitos y sólo activamos T1, luego enviamos al bus el número 9 y sólo energizamos T2. Por último enviamos el número 3 y mediante la conducción de T3, este número se verá solamente en el dígito de las centenas.

La acción rápida y repetitiva de esta secuencia descripta, sumada a la persistencia en la visión que poseemos los humanos, nos hará percibir que los tres dígitos están encendidos en todo momento y en simultáneo siendo que en realidad, se encienden en forma ordenada, secuencial y de uno por vez. La velocidad de activación y la lentitud de nuestra visión en percibir el cambio, hacen el resto. A esta modalidad de funcionamiento se la llama multiplexión o multiplexación. Esta palabra adquiere otras conjugaciones dentro de la dialéctica particular de los diseñadores y la más habitual que podemos encontrar en los textos es que estamos ante un circuito “multiplexado” de activación de dígitos.

A pesar de disminuir la cantidad de conexiones requeridas gracias a la conexión en paralelo de los segmentos de los dígitos, no tenemos opción de salvarnos de tener que utilizar al menos 10 pines de un microcontrolador. Peor sería el escenario si agregamos el empleo de los puntos decimales. Serían tres pines más que elevarían la cantidad a 13 I/O del microcontrolador. Todo un desperdicio.

Los circuitos integrados al rescate

Afortunadamente existen circuitos integrados que pueden ayudarnos a reducir drásticamente la cantidad de conexiones empleadas en el microcontrolador y también a disminuir la cantidad de código necesario para obtener un correcto funcionamiento de varios dígitos. Un ejemplo de esto sería la utilización del circuito integrado TTL, 7447 en cualquiera de sus versiones según nuestra conveniencia (AS, LS, ALS, S, etc.). La utilización de este componente nos permitirá reducir a cuatro la cantidad de pines necesarios para enviar hacia el/los dígitos la información numérica que deseamos mostrar. La gran ventaja que agregan estos dispositivos es la posibilidad de ingresar a ellos con un número binario sencillo y el mismo circuito integrado se encargará de transformarlo en un número comprensible y útil en la presentación visual. Agregando beneficios a las prestaciones que estos componentes pueden ofrecernos, encontramos acceso a pines que pueden ser de gran utilidad para el apagado total, y a veces necesario, del dígito o para la verificación del buen funcionamiento de todos los segmentos con solo cambiar el estado lógico de un pin.

Con la aplicación de estos componentes tenemos que con sólo cuatro pines podemos controlar todos los segmentos de los dígitos. Luego, con las cuatro salidas restantes del puerto, podemos activar cuatro transistores para multiplexar cuatro dígitos. Puedes observar que hemos saltado de un dígito a cuatro con el agregado de un solo IC que vale apenas unos pocos centavos. Por último, yendo un poco más allá en la optimización de posibilidades, en lugar de manipular cuatro transistores individuales, podemos conectar un “demultiplexor” como es el 74154 que nos permitirá ingresar con cuatro bits (los que nos sobraban del puerto) y obtener al final de este IC 16 salidas decimales para poder lograr de este modo un display de 16 dígitos con un solo puerto. O sea, ingresamos al 74154 con cuatro bits y a su salida tenemos el barrido de 16 salidas que multiplexarán esta cantidad de dígitos.

Hasta aquí el multiplexado parece ser la solución a todos nuestros problemas con los display numéricos pero debemos resolver la situación que se plantea al momento en que el microcontrolador debe realizar otros trabajos. Digamos, medir una temperatura, atender la operación de un teclado o de un sensor que se encargue de contar impulsos de entrada, por citar unos pocos ejemplos. Llegados a este punto, tenemos dos opciones muy definidas: apelamos a una mayor velocidad de proceso de datos o utilizamos los dispositivos que incorporan un LATCH. Para poder manejar un circuito multiplexado sin parpadeos, flikers, ni cortes en la presentación cuando trabajamos en circuitos de proceso que involucran una complejidad relativa, debemos recurrir a un minucioso y muy atendido programa que mientras estamos en faz experimental o de aprendizaje, puede resultarnos muy tedioso y hasta en ocasiones una experiencia frustrante.

¿Qué es un LATCH?
En electrónica se conoce a estos elementos como dispositivos capaces de almacenar un bit de información. Algo similar a una memoria rudimentaria. Para nuestra aplicación la “magia” resultará en que utilizaremos un sistema exactamente igual al antes explicado, con multiplexado de los dígitos, pero con el siguiente agregado: los circuitos integrados que operan cada dígito grabarán la información suministrada y la presentarán de manera constante a pesar que dejemos de enviarles información. Es decir, en una secuencia de acciones sucedería lo siguiente:

  • Enviamos al bus el dígito a mostrar
  • Activamos el IC correspondiente al lugar donde queremos ubicar el dígito enviado
  • Enviamos la señal al LATCH del IC que comanda el dígito iluminado
  • Continuamos con el dígito siguiente
  • El/los dígito/s quedará/n encendido/s y podremos utilizar el puerto para otras aplicaciones como puede ser la entrada de un teclado o de un sensor óptico, magnético o inductivo
  • El programa dentro del microcontrolador puede atender otras operaciones importantes sin detenerse a pensar en que debe mantener activo el display

No podemos negar que la ventaja de utilizar un circuito con Latch nos favorecerá en nuestros primeros trabajos con display, permitiéndonos focalizar nuestros esfuerzos de aprendizaje en otros factores más críticos dentro de un programa. En nuestro ejemplo de hoy, el circuito integrado elegido es el CD4511B

Empleando un display de dos dígitos obtenido mediante el canibalismo sobre un viejo televisor, hemos armado un circuito para mostrarte el funcionamiento de un sistema contador entre 00 y 99 que puedes utilizar en cualquier aplicación doméstica o industrial que requiera la exposición de una información como la mencionada. Un contador de envases que circulan por una cinta transportadora dentro de una fábrica de dulces, o un contador de pasaje de personas por un determinado lugar. Un contador de vehículos que cruzan frente a tu casa, o la cantidad de veces que tus hermanos se cruzan frente al TV mientras estás viendo tu serie favorita. Todo lo que requiera una cuenta automatizada y desatendida lo puedes realizar con el circuito que hoy te proponemos. Por supuesto que deberás reemplazar los pulsadores que utilizamos nosotros y adecuar los sensores o actuadores que mejor se adapten a tus necesidades de diseño, pero el circuito siempre será el mismo. Aquí tienes lo que resultará de este circuito que veremos:

Como es nuestra costumbre, utilizaremos un PIC 16F628A aunque tú puedes emplear el microcontrolador que mejor te resulte por practicidad o disponibilidad. Comprendiendo el concepto del funcionamiento del sistema, puedes trasladar la idea a cualquier arquitectura de microcontrolador. El display puede ser uno doble como hemos utilizado nosotros o dos individuales y del color que te guste, también según tus posibilidades. Pasando al funcionamiento en sí, puedes observar que es tan sencillo como colocar dos pulsadores para incrementar o decrementar la cuenta y un tercer botón para aplicar RESET o, lo que es lo mismo, una puesta a cero del contador. El circuito como puedes ver en la imagen de abajo es, como te dijimos antes, el mismo que se utiliza en el caso de una configuración de circuito multiplexado.

Las partes fundamentales del circuito están formadas por los pulsadores que ingresan a los pines 0 y 1 del puerto A, los cuatro pines del puerto B destinados a las entradas A, B , C y D de los CD4511B y las activaciones de las entradas BI y LE del CD4511B. Luego vemos una fuente tradicional de 5 Volts, el cristal de 4 Mhz empleado y el conector ICSP (In Circuit Serial Programmer) para programar el microcontrolador sin quitarlo de la placa de pruebas. BI significa Blanking Input y según la tabla de verdad del dispositivo, cuando este pin se encuentra en estado alto, la presentación se realiza normalmente pero cuando se coloca en un estado lógico bajo, el display se apaga como si se desconectara de la alimentación. Esta función es muy útil cuando se produce el envío de datos al conjunto de dígitos. A pesar de ser un intervalo muy corto de tiempo, la transición de datos se muestra visible y en ocasiones molesta sobre el display. La metodología de aplicación más elegante entonces es, mediante la manipulación de este pin, apagar los dígitos, cargar el número en el bus de datos (A, B, C y D) y luego volver a habilitar la visualización. La transición es tan rápida que no se muestra como un efecto desagradable a la vista.

Por último, LE significa Latch Enable, lo que quiere decir que mientras estemos enviando un dato al bus y este terminal se encuentre en estado bajo, los datos pasarán y cambiarán la presentación en el display. Por el contrario, al momento de pasarlo a un estado lógico alto el último dato ingresado permanecerá almacenado y exponiéndose en el display sin importar las actividad que pase a tener el bus. Por lo tanto, de esta forma podremos utilizar el PIC para otras funciones útiles sin necesidad que el mismo tenga que estar siempre atento a la presentación visual. De este modo, nuestros programas serán mucho más eficientes y ocupados en las cosas importantes, mientras la indicación numérica es atendida en forma automática por los LATCH de los CD4511B.

Aquí te dejamos el listado del programa que hemos utilizado en el ejemplo mostrado en el video donde puedes apreciar que tenemos una variable N que incrementaremos o decrementaremos de a una unidad (tú puedes variar esta condición). Esta variable es manipulada dentro de la subrutina DISPLAY donde se extrae el dígito de las unidades y se coloca en presentación y luego se hace lo mismo con el dígito de las decenas. Seguramente tu podrás mejorar y adaptar el desarrollo a tus necesidades agregando dígitos o seleccionando otro tipo de ingreso de datos. Por ejemplo, podrías utilizar un microcontrolador con entradas analógicas y construir un pequeño voltímetro o un termómetro. También puedes improvisar un sensor inductivo que al introducirle un vástago de material ferroso te devuelva una medida de distancia para aplicar en un taladro de precisión. En fin, como siempre decimos, tu imaginación es el límite. La base es la mostrada, las aplicaciones son infinitas y todas dependen de tu ingenio.

Escrito por Mario

Leave a Reply