Los shift registers que desplazaron mi memoria
¡Aloha mi pana! ¿Sabes eso de que toda la vida has hecho algo de una manera sin preocuparte y de repente te lo cambian y no sabes por dónde salir? Pues en una de esas estoy, ahora veo la vida diferente.
Y es que toda la vida he utilizado los displays de 7 segmentos a full equip, es decir, con todos los pines digitales ahí conectados y ya está. Y si necesitaba más displays compraba unos de 4 displays que ya están preparados para ser manejados de manera sencilla y ya está.
Pero ahora me he encontrado con varios displays solitarios que quiero unir y un Arduino limitado en sus pines. Podría haber utilizado un multiplexor pero ha aparecido en mi vida el 74HC595. Y voy a utilizarlo…
74HC595, nuestro shift register elegido
El 74HC595 es un integrado de los que llaman shift registers, o para los de aquí, se traduciría como registro de desplazamiento. En este caso se trata de un registro de desplazamiento de entrada serie y salida paralelo. Pero poco uso tiene eso en estos momentos en los que necesito conectar ya mismo este amasijo de displays que tengo en mis manos.
Como siempre, ante cualquier catástrofe electrónica, lo primero es leer el datasheet. Aquí tienes el del 74HC595. Si lo abres, podrás ver que nuestro integrado en la vida real es algo tal que así:
A ver, bonito bonito no es, pero útil un montón. Como ves hay unos pines que van desde QA hasta QH. Estos pines son las 8 salidas para los 8 segmentos del display. Luego, encontramos uno llamado Vcc, que es la alimentación de 5 Voltios que hace que el integrado se encienda. Y también encontramos GND, que es masa y que hace que la corriente cierre su circuito y se encienda el integrado.
Se encuentra ahí también el pin OE que significa output enabled, es decir, que la salida está encendida. Si te fijas, aparece una línea encima de las dos letras y esto significa que el pin es de lógica negada. Esto quiere decir que cuando es 0 está activo y cuando es 1 está desactivado. Vamos, justo al revés del mundo.
Esto sirve para apagar la salida pero para ello hay que darle un 1, si no le damos ninguna señal, la salida, por defecto, estará activada.
Destripando pines…
Tenemos las salidas, ahora hay que ver por dónde metemos la entrada. Pues hay que fijarse porque tenemos cuatro entradas. la primera es SER, SER es donde está el dato. Tendremos un reloj que irá mirando cada dato que haya aquí. Si en ese momento hay un 1 guardará un 1, si hay un 0 guardará un 0.
De esta manera mira la entrada SER y apunta su valor en la salida 1, luego en el siguiente tiempo del reloj mira el dato de SER y lo apunta para la salida 2, y así hasta 8. Este reloj es rápido así que no pienses que tarda 8 segundos en generar el dato final sino que es algo muy rápido que casi no podemos apreciar.
Una vez recogida la entrada 8 lo que tenemos es un byte, que son 8 bits. Es decir tenemos un número formado por unos y ceros que corresponde a las 8 salidas que tenemos (O teníamos hace muy muy poco tiempo). De esta manera se activan ahora las 8 salidas y hemos pasado de un dato serie (Uno detrás de otro) a un dato en paralelo (Todos a la vez). Estas salidas son la QA, QB, etc…
Por otro lado, estan SRCLK que es el reloj que tiene la señal SER, sino no podemos ir cogiendo los datos al mismo tiempo que vienen y puede que se tome el valor 1 cuando era 0. Realmente se llama Shift Refgister Clock porque lo que hace es decir: YA tenemos una señal, pasa el dato al siguiente hueco y tomamos la señal que viene ahora.
Por otra parte está el RCLK que es el Register Clock (O Storage Register Clock o Latch) y lo que hace es decir: Ya puedes guardar el dato en el registro.
Es decir, el SRCLK dice la frecuencia de paso de datos y el RCLK cuando se tienen que ir guardando esos datos. Es por eso que las dos señales van descompasadas. De manera que el SRCLK se pone en HIGH y pasa al siguiente valor y RCLK guarda este siguiente valor en memoria, ya que la memoria no puede guardar los 8 bits a la vez…
Información básica sobre Proteción de datos
Responsable ➥ Sergio Luján Cuenca
Finalidad ➥ Gestionar el envío de correos electrónicos con artículos, noticias y publicidad. Todo relacionado con los temas de rufianenlared.com
Legitimación ➥ Consentimiento del interesado
Destinatarios ➥ Estos datos se comunicarán a MailRelay para gestionar el envío de los correos electrónicos
Derechos ➥ Acceder, rectificar y suprimir los datos, así como otros derechos, como se explica en la política de privacidad
Plazo de conservación de los datos ➥ Hasta que se solicite la supresión por parte del interesado
Información adicional ➥ Puedes encontrarla en la política de privacidad y el aviso legal
Cuidado con la alimentación, que quema…
Si miramos los valores máximos del componente, se dice que puede ofrecer como máximo 35mA de salida:
Esto para un led es mucho, así que lo suyo es añadirle una resistencia en serie con el led para reducir esta corriente y así no quemar nada. Si nos fijamos en la página 14 del datasheet, se nos recomienda una configuración típica y ahí añaden una resistencia de 560 Ohms por led:
Si eres de los que se fijan mucho, puede que hayas visto ya ese condensador de 0.1 uF que une la alimentación y GND. Este condensador se llama condensador de bypass y lo que hace es eliminar ruido. Toda componente AC que cree ruido se elimina de nuestra energía que viene en DC y que nos interesa que así sea. Este valor de 0.1 uF es el recomendado en la página 16 del datasheet (Sí, hay que leérselo todo bien 😛 )
Los pines del detallito final…
La verdad es que parece que ya estaría todo: Tenemos una señal SER que nos va dando los valores de cada una de las salidas. La entrada SRCLK que nos marca cada cuánto leemos la entrada SER y la entrada RCLK que es el reloj que nos marca cuándo tenemos ya la entrada leída y hay que guardarla en el componente (Pasarla a la salida correspondiente).
Pero, ¿Qué hace QH’? QH’ lo que hace es devolver la señal serie, de manera que podríamos conectar otro 74HC595 en cascada y podríamos tener repetidos los resultados.
¿Y qué hay del SRCLR? El SRCLR es un pin de entrada que sirve para limpiar el registro de manera que se ponen todos a 0. Como puedes ver tiene una barra superior indicando que para limpiar el registro hay que ponerle un cero. Es decir, todo el tiempo de uso tendremos que estar dándole tensión si queremos que funcione 😉
¿Lo has registrado todo?
Y bueno, ya hemos llegado (al fin) al final. En este caso hemos pasado de unos datos en serie a unos en paralelo, pero también se puede hacer lo contrario mediante el uso de registros (El componente 74HC595 no sirve para esto). De hecho, hay registros biestables, es decir que pueden hacer ambas cosas.
Espero que hagas el bien con esto de los registros…
Déjame un comentario que en el fondo soy buen chaval
Buenisimo Rufian, segui con este tipo de articulos, muy bueno, agrega el chip de entradas.. Siempre use la dupla CD4094 y CD4021 pero estaria bueno hacer lo mismo con la familia de los 74HC.. Abrazo Grande