lunes, 30 de abril de 2012

Registros de desplazamiento utilizando Arduino

Para nuestro proyecto de Arduino, es necesario aprender a utilizar y como poder manejar muy pocas entradas del Arduino para controlar más salidas, por lo que para esta entrada hablaré del registro de desplazamiento que vamos a utilizar en el cubo de leds, en donde mostraré un ejemplo en donde tenemos con solamente 4 salidas del arduino, controlar 16 Leds.

Un registro de desplazamiento se puede utilizar para controlar 8 salidas simultaneas usando unos pocos pines del microcontrolador, incluso es posible conectar dos demultiplexores y sacar 16 salidas, que es lo que hicimos para esta entrada.

El integrado 74HC595, lo compramos en AG electronica y este integrado es un registro de desplazamiento de 8 bits con entrada serie, salida serie o paralelo con latch (o sea, bloqueos), de 3 estados.

¿Cómo funciona?

Este integrado funciona de la siguiente manera, utiliza comunicación serie sincrona, en donde tu puedes transmitir un byte enviando pulsos altos y bajos por un pin y otro pin, viene siendo el clock o reloj en donde va enviando pulsos constantes para ir diferenciando los bits enviados por el pin que envia los pulsos diferentes, por lo que este es muy diferente a una comunicación serial asicrona ya que utilizando la función Serial.begin() el emisor y el receptor fijan la forma de una velocidad de tranferencia, por lo que a diferencia, este una vez que le enviamos el byte completo al registro, los valores ya sean los altos o los bajos, se lo asignan a cada pin de salida, provocando una salida en paralelo.

La salida en serie de este integrado es el agregr un pin extra que retransmite la información que le estamos mandando del arduino sin cambios, por lo que podemos como comunicar dos de estos integrados y tener la capacidad de transmitir 16 bits donde los primeros 8 bits atraviesen al primero y después se almacenen en el segundo, esto es lo que hicimos como ejemplo.

Bueno este es la información de los pines del integrado que utilizamos, tomado de aquí

PINS 1-7, 15 Q0 " Q7 Pins de salida
PIN 8 GND Ground, Vss
PIN 9 Q7" Salida Serie
PIN 10 MR Master Reset, activo = low
PIN 11 SH_CP Pin Clock
PIN 12 ST_CP Pin Latch
PIN 13 OE Salida disponible, activo = low
PIN 14 DS Entrada Serie
PIN 16 Vcc Voltaje

Para checar como funciona, es preferible hacer un programa que nos ayude a probar los integrados y de las conexiones, por lo que utilizamos este diagrama de circuito, con 16 LEDs, 16 resistencias de 220 Ohm, dos integrados demultiplexores 595 y un condensador 0.1 uf o 100 nF.

Este es el diagrama.




Para verlo mejor o más grafico, estas son las conexiones utilizando 3 protoboards.

Y este es el código que realizamos para verificar su funcionamiento.


En donde podemos ver que tenemos un arreglo con los leds que queremos prender y este los va leyendo y pasando la información a los integrados para que realicen su función.

En esta liga aquí vienen algunos ejemplos, pero nos dimos cuenta que algunos no funcionaban, por lo que nos dimos la tarea de realizar un programa por nosotro mismos, en base a los ejemplos.

Estos fueron los resultados.










2 comentarios:

  1. hola, he montado un arreglo de 8 leds, pero luego de que pasa el 128 (decimal, pues estoy contando hasta el 255) se me queda pulsando los leds muy tenues, y no logro solucionar el problema, ve que en este ejemplo esta usando un capacitor en el reloj de salida, ¿que funcion tiene?... pudiera ser eso el problema que tengo?

    ResponderEliminar
  2. Excelente articulo, estoy diseñando un sistema de medicion de temperatura que cada digito controlo con el 74hc595, comparto la info por si a alguien le resulta de interes

    74HC595

    te hago una consulta, por que veo que conectas el Q7 del primer driver al DS' del segundo, esto por que lo haces?

    saludos!

    ResponderEliminar