Está en la página 1de 8

MULTIPLEXADO DE LED CON PIC 16F628A

(Parte 1)

¡Tengo una idea para un proyecto! , pero hay alguna manera de obtener una
entrada para el microcontrolador y de alguna manera mostrar la información.
Vamos a empezar echando un vistazo de como conectar LEDS a un
microcontrolador y configurar los pines de un PIC en salidas.

A veces sólo se utilizan los pines de un microcontrolador para iluminar un indicador


y dar una idea de lo que está ocurriendo. En otras ocasiones se para mostrar varios
números en condición binaria, o incluso palabras. Empezaremos con una simple luz,
subir a los números, y tal vez la próxima vez, las palabras.

El indicador más común en estos días es el diodo emisor de luz o LED. Ahora están
en todo, debido a su bajo costo, larga vida, bajo los requisitos actuales y la
personalidad de colores en general.

Los LEDs vienen en rojo, naranja, amarillo, verde y azul, incluso a precios
razonables. En general, se requieren alrededor de 2 voltios para hacerlos funcionar,
aunque algunos se han incorporado a los reguladores a correr a partir de 5 voltios,
y algunos incluso tienen circuitos incorporados. Podemos obtener un único LED para
un indicador luminoso, o comprar varios paquetes para todos realizar una matriz
de puntos o segmentos numéricos.

Dado que los LEDs se iluminan en cerca de 2 voltios, no se puede meter 5 voltios a
través de ellos. Se necesita una resistencia en serie para absorber parte de la
tensión y limitar la corriente que el LED puede aguantar. Podemos verificar las
especificaciones de un LED en particular para calcular el valor de una resistencia
exacta. Por supuesto, rara vez se pueden encontrar las especificaciones de los
productos genéricos como el LED.

Si lo Tenemos en casa y deseamos ponerlo a operar, tendremos que utilizar


especificaciones genéricas: 2 voltios a 10 miliamperios (mA) de corriente. Eligiendo
más o menos corriente en función de cómo desea que brille el LED (hasta cierto
punto) y qué tan eficientemente (con sólo 1 mA más de corriente.)

Así que si empezamos con 5 voltios y el LED a 2 voltios, en la resistencia en serie


debe caer el resto (3 voltios). Usando la ecuación V = IR; V es de 3 voltios, que es
de 10mA (.010 amperios), podemos despejar R: R = V / I = 3/.010 = 300 Ohms.

Por supuesto, encontrar una resistencia de 300 ohms podría ser un dolor. Las más
comunes para la aplicación, son de 270 ohms y 330 ohms. Yo voy a elegir 270
ohmios que aumentará nuestra tensión un poco, haciendo ver el LED ligeramente
más brillante. Reorganización de la ecuación, una vez más: I = V / R = 3 / 270 =
.0111 amperios o 11 mA.

Los LEDs tienen un sentido único de conducción, un lado es positivo, el ánodo, y el


otro es negativo, el cátodo. Si se conecta al revés, puede dañar el LED, pero por lo
general simplemente no se enciende. La mayoría de los LEDs tienen un conductor
más largo que el otro, más el lado positivo (ánodo).Si se han cortado las terminales
de conexión del LED, usted puede encontrar que el encapsulado es plano en un
lugar (cátodo)
Después de todo esto, finalmente podemos conectar el LED como se muestra:

Figura 1

Como se puede ver en la Figura 1, que en realidad no importa de que lado del LED
este conectada la resistencia en serie. Sé que esto puede ser demasiado básico
para algunos lectores, pero no, nos pondremos de cabeza al final de este artículo.

Hasta el momento tenemos un LED que se ilumina al momento de aplicar la


potencia, pero ¿cómo controlarlo? Tenemos una opción de conectar un extremo a
tierra, o conectar un extremo a 5V con el fin de encender y apagar el LED.

Figura 2

Dependiendo de la aplicación, una forma u otra podrían ser apropiadas. En muchos


casos, los extremos de conexión de GND/VDD a los pines de control aguantan más
corriente de la que pueden. En otras palabras, los pilotos que ponen a tierra son
más poderosos que los conductores que suministran 5 voltios. Así que sería mejor
conectar el LED directamente a 5 voltios y encender y apagar con respecto a tierra
el otro extremo. Esto confunde a algunas personas, así que siéntase libre para
conectar un extremo a tierra y encender y apagar a 5 voltios. Una consideración
final es que en caso de un microcontrolador asegurarse de que el pin I/O a utilizar
realmente puede alcanzar los 11 mA de corriente necesaria. En el caso un PIC, nos
puede conducir más allá de esa cantidad insignificante

Ahora vamos a conectar 2 LEDs. Debe ser tan simple como conectar uno solo,
además, necesitamos una resistencia límite. Bueno, no exactamente. Echar un
vistazo a la Figura 3. En el circuito de la izquierda, se puede ver 2 LED conectado a
2 I / O, 2 líneas con resistencias en serie. Eso es lo que se suele hacer. Considere
el circuito de la derecha. Se debe hacer lo mismo con sólo una resistencia límite
actual si sólo se enciende un LED a la vez, lo que realmente funciona bien.

Figura 3

Pero mira lo que sucede cuando se enciende ambos LEDs, al mismo tiempo. La
resistencia seguirá siendo la ley de Ohm, como se describe arriba, descenso de 3
voltios y limitar la corriente a 11 mA. Sin embargo, ahora que la actual tiene que
ser compartida por 2 LEDs. Si tienes suerte, cada LED obtendrá 5.5mA. Pero lo más
probable es que el reparto será desigual y uno utilizara más corriente que el otro.
En cualquier caso, los LED iluminaran un poco más débil; que si cada uno tenga su
propia asignación de 11mA.
El final normal de esta historia sería la siguiente: utilizar 2 resistencias. Pero
tenemos un microcontrolador de servicio. Tal vez el mayor beneficio de un
microcontrolador es su capacidad para el diseño de hardware a través de un
software programado. Recuerde que hemos dicho que mientras no activemos a
ambos LEDs, al mismo tiempo, las cosas saldrán bien con una sola resistencia.

Qué podemos hacer con un microcontrolador? Es el tiempo multiplexado de LEDS,


de modo que sólo uno está encendido a la vez. Por la rápida activación y
desactivación cada LED en secuencia, aparecerá como si ambos están en el mismo
tiempo. Tiene algo que ver con la forma en que nuestros ojos y cerebros la
persisten la visión. Es similar a la forma en las obras de televisión, podemos ver
una imagen estable a pesar deque esta en movimiento.

Vamos a organizar 7 LEDs en la forma de una figura 8 de esta manera:

Figura 4

Con este tipo de configuración podemos construir los números 0 a 9, e incluso


algunas letras. Me patente esta idea. De todos modos, una pantalla de 7 segmentos
consta de 7 LEDs individuales con un extremo de cada LED conectados entre sí. Si
todos los extremos están conectados entre sí, se le llama ánodo común. Si todos
los extremos están conectados entre sí, se llama cátodo común.

Ya sea que elija ánodo común o cátodo común, depende de la forma que quieras
conectar las cosas. Yo voy a elegir ánodo común con todos los extremos conectados
entre sí por razones que veremos en breve. La figura 5 muestra una manera de
conectar el DISPLAY a un PIC. Las 7 líneas de cátodo están conectadas a las líneas
7 de PORTB de l PIC 16f628A a través de resistencias en serie. También he
conectado la línea de ánodo común a 5 voltios.

Figura 5
Podríamos utilizar la técnica descrita anteriormente y colocar una resistencia límite
actual en la línea común a 5 voltios. Sin embargo, tendríamos que iluminar cada
segmento de un en un y otra vez con el fin de mostrar un carácter completo.
Tendríamos que hacer esto por lo menos 100 veces por segundo (1000 veces por
segundo es mejor) para reducir el parpadeo. Si sólo se dispone de un DISPLAY de 7
segmentos para un proyecto, esto podría ser viable. Pero vamos a añadir más.

Para agregar otro DISPLAY, se podría utilizar más I / O, y conectar el nuevo


DISPLAY junto a PORTC, por ejemplo. A pesar de que facilita la programación, esto
es un desperdicio de pines I / O del PIC. También puede agregar por separado o
incluso utilizar decodificadores por cada DISPLAY, pero una vez más, vamos a
utilizar el software en lugar de hardware.

Figura 6

Como se puede ver en la Figura 6, los cátodos de un segmento particular de cada


DISPLAY están conectados entre sí y luego conectados a las salidas de un PIC a
través de unas resistencias en serie. También se ha eliminado la conexión directa
de cada ánodo común a 5 voltios haciéndolas controlables por un pin del PIC I / O
a través de transistores PNP 3906. De esta manera, podemos establecer el valor
del segmento para un DISPLAY dado y luego brevemente a su vez en el ánodo para
que se vea. Si lo hacemos lo suficientemente rápido, vamos a ver la pantalla
entera, libre de parpadeo.

¿Recordar que elegimos ánodo común? Echemos un vistazo a las consideraciones


actuales para ver por qué. El PIC debe conducir la suficiente tensión hasta los 7
LEDs (segmentos) en por un solo puerto. Así como cada pin I/O tiene un límite a la
cantidad de corriente fuente, cada puerto tiene un límite. Para tener el menor daño,
no estamos uniendo la corriente a tierra en su lugar se abastece a 5 voltios.

También te nota en la figura que se coló en un transistor entre el PIC y el ánodo


común a cada DISPLAY. Dado que la corriente de todo el DISPLAY se ejecuta a
través de este pin, puede sobrecargar una única línea de I/O. El transistor
amplifica la capacidad de la unidad actual en la línea I/O para resolver este dilema.
Es fácil de operar, poner tierra en el pin I/O para encender el transistor y activar un
DISPLAY determinado, poner 5 voltios en el pin de apagar el transistor y el
DISPLAY.

Ahora todo lo que se necesita es el software. La primera tarea es averiguar cómo


obtener los números (e incluso algunas letras) en el DISPLAY. Todo lo que
realmente tenemos ahora son un montón de LEDs individuales conectados a pines
I/O. Para formar caracteres, tenemos que encontrar una manera de activar los
específicos, dejando otros fuera.

Veamos el caso del 8. Ocho es bastante simple. Se trata de activar todos los
testigos (excepto el punto decimal). Para mostrar el 8 tenemos que poner un
binario de 10000000 en PORTB. Esto a su vez activa todos los LEDs excepto el
punto decimal. 0 = on? Recuerde, estamos controlando el lado negativo de los
LEDs. También tenemos que poner un valor a PORTA para abordar la solicitud del
digito en los LEDs (DISPLAY), 1110. Una vez más, 0 enciende uno de los
transistores y 1 se asegurará que los demás están apagados.

El número 0 es simplemente un 8 con el segmento medio apagado, 1100 0000.


Ahora podríamos tener una subrutina para decodificar cada dígito, pero que es
larga y no me gusta el tipo (difícil de decir?) La manera más fácil de proceder es
mediante el uso de una tabla de búsqueda. Este método es especialmente eficaz
cuando se tiene un número limitado de combinaciones de los estados deseados, en
nuestro caso, 10 (0-9).

Ahora simplemente utilizando el número que desea mostrar, 0 - 9, tal como el


índice en la tabla de búsqueda, podemos fácilmente encontrar el valor adecuado
para poner en el puerto I / O. Usted puede incluso ampliar la tabla de búsqueda
para incluir algunas letras, A - F, tal vez.
En ensamblador Microchip, el código busca algo como esto:

movlw 1 ; Mostrar a 1
call bin2seg ; Convertir el número en W con el valor del segmento
movwf PORTB ; Enviar valor devuelto en W a los segmentos
movlw H'1E' ; Encienda el primer dígito
movwf PORTA
loop goto loop ; Espera aquí
;
bin2seg addwf PCL, F ; Saltar en la tabla de búsqueda
retlw H'C0' ; código de segmento de retorno para 0
retlw H'F9' ; código de segmento de retorno para 1
retlw H'A4' ; código de segmento de retorno para 2
retlw H'B0' ; código de segmento de retorno para 3
retlw H'99' ; código de segmento de retorno para 4
retlw H'92' ; código de segmento de retorno para 5
retlw H'82' ; código de segmento de retorno para 6
retlw H'F8' ; código de segmento de retorno para 7
retlw H'80' ; código de segmento de retorno para 8
retlw H'98' ; código de segmento Retorno para el 9

La función de tabla de saltos de PICs es muy aplicable. En realidad no hay otra


forma de obtener datos constantes en un programa, aparte de la mudanza de
literales, por supuesto. El salto funciona así: Usted carga W con el índice del
elemento en particular que usted desea fuera del Banco. A continuación, llama a la
rutina de salto. Hay una instrucción en la parte superior de la tabla de salto. Se
dice que para añadir W al contador de programa actual. El tema en sí es una línea
que dice que devolverá el valor constante que desea en W, al cual se llama. Es
bastante rápido y sencillo, una vez que se le coja el tiro. La Tabla debe estar en una
sola página. También se necesita PCLATH preestablecido

En PICBASIC, la rutina del DISPLAY se ve algo como esto:

Loop: For B1 = 0 To 9 ' Contar de 0 a 9


B0 = B1 ' Pass the count to the conversion subroutine
Gosub bin2seg ' Ir a la rutina bin2seg
Poke PortB, B0 ' Poner en PORTB los valores para el LED
Poke PortA, $1E ' Turno del primer digito
Pause 1000 ' Esperar 1 seg.
Next B1 ' Siguiente
Goto Loop ' Bucle Infinito

‘Convertir el número binario en B0 a los segmentos de LED


bin2seg: Lookup B0,($40,$79,$24,$30,$19,$12,$02,$78,$00,$18),B0
Return

Esto consigue en activar los pines correspondientes para mostrar los dígitos. Todo
lo que queda es escribir el código que separa a un número binario en los 4 dígitos
decimales y mostrar cada dígito. Es un tipo de dolor para escribir en ensamblador,
así que aquí tienen un código más PICBASIC:

Subrutina PICBASIC para enviar el número binario (0 - 9999) en W1 para LEDs

display4: B0 = W1 / 1000 '


W1 = W1 // 1000 ' Numero en Milésimas
Gosub bin2seg ' Convertir a 7 segmentos
Poke PortB, B0 ' Enviar Número
Poke PortA, $17 ' Activar PNP cuarto digito
Pause 1 ' Esperar 1 ms
Poke PortA, $1F ' Activar PNP para evitar parpadeo
B0 = W1 / 100 '
W1 = W1 // 100 ' Numero en Centésimas
Gosub bin2seg ' Convertir a 7 segmentos
Poke PortB, B0 ' Enviar número
Poke PortA, $1B ' Activar PNP primer digito
Pause 1 ' Esperar 1 ms
Poke PortA, $1F ' Activar PNP para evitar parpadeo
B0 = W1 / 10 '
W1 = W1 // 10 ' Numero en Décimas
Gosub bin2seg ' Convertir a 7 segmentos
Poke PortB, B0 ' Enviar Número
Poke PortA, $1D ' Activar PNP segundo digito
Pause 1 ' Esperar 1 ms
Poke PortA, $1F ' Activar PNP para evitar parpadeo
B0 = W1 ' Obtener el numero
Gosub bin2seg ' Convertir a 7 segmentos
Poke PortB, B0 ' Enviar Número
Poke PortA, $1E ' Activar PNP primer digito
Pause 1 ' Esperar 1 ms
Poke PortA, $1F ' Activar PNP para evitar parpadeo
Return ' Volver

No se olvide que se debe llamar a esta rutina de forma continua, o por lo menos
tan a menudo como sea posible, para reducir la cantidad de parpadeo. Por
supuesto, este es el mayor inconveniente con el uso de LEDs: Usted tiene que
explorar continuamente los datos al DISPLAY. Si el programa no tiene nada mejor
que hacer, no es gran cosa. La próxima vez se explicara el uso de cadenas y de
decodificadores con el fin de hacer reloj con DispLay y Decodificadores.

También podría gustarte