Ampliar los pines de salida digital con los que se dispone en una Placa programable ó microcontrolador, es uno de los problemas con los que en algún momento nos encontraremos, para ello existen múltiples IC's, en general todos basados en flip-flop tipo D y varias configuraciones de ellos.
Uno de los más comunes y utilizados es el integrado 74HC595. Este integrado se define como un "registro de desplazamiento de 8 bits con entrada serie, salida serie o paralelo con latch ("Registro guardado") de 3 estados.".Entonces puede usarse para controlar 8 salidas simultaneas usando unos pocos pines del microcontrolador (SERIAL). Se pueden colocar varios integrados de manera que ampliamos el numero de salidas hasta las necesitadas.
Antes de ver el IC en cuestión analicemos unos de sus componentes principales.
El Flip-Flop tipo D
Este arreglo lógico (llamado también biestable) resulta muy útil cuando se necesita almacenar un único bit de datos ("$1quot; ó "$0quot;).
El dispositivo de almacenamiento temporal es de dos estados (alto "$1quot; y bajo "$0quot;), cuya salida Q adquiere el valor de la entrada D (data) cuando se activa la entrada de sincronismo, C (clock).
La ecuación característica del biestable D que describe su comportamiento es:
Qsiguiente=D
Veamos un vídeo de una simulación de su funcionamiento.
Bien, entonces son muy interesantes los flip-flop tipo D, pero no me interesa XD...
este vídeo solo es para mostrar el funcionamiento de 74595 y poder utilizarlo convenientemente.
Este es el Pinout del 74595

Este es el diagrama aproximado de configuración interna de un 74595.

Como podemos observar tiene varios de los conceptos explicados en el vídeo anterior, convierte serial a paralelo, y tiene un latch de 8 bits

Entonces para su empleo como "expansión de salidas" se necesitan al menos tres pines de comunicación serial.
- Datos (DS).
- Clock (SH_CP).
- Latch ó Almacenamiento(ST_ST).
Los pines de MR y OE Realizan la función que describen, pone en cero todas la salidas de la comunicación serial (Master Reset) y coloca en alta impedancia las salidas de IC (Output enable).
Existe incorporado una función de arduino para un modulo de SPI (Serial Peripheral Interface) que si bien esta diseñado para ser mucho más potente que solo enviar datos seriales, nos evita la tarea de tener que programar la rutina que haga esto.
Para mas información sobre SIP ver >>aqui.
La función shiftOut de Advanced I/O de arduino, es una extensión de la librería SPI donde, en esta librería se pueden utilizar los pines dedicados para esta función en el arduino pero esta función permite utilizar otros por supuesto con las limitaciones de velocidad. A continuación veremos la sintaxis y parámetros de ella.
Existe incorporado una función de arduino para un modulo de SPI (Serial Peripheral Interface) que si bien esta diseñado para ser mucho más potente que solo enviar datos seriales, nos evita la tarea de tener que programar la rutina que haga esto.
Para mas información sobre SIP ver >>aqui.
La función shiftOut de Advanced I/O de arduino, es una extensión de la librería SPI donde, en esta librería se pueden utilizar los pines dedicados para esta función en el arduino pero esta función permite utilizar otros por supuesto con las limitaciones de velocidad. A continuación veremos la sintaxis y parámetros de ella.
Sintaxis
shiftOut(pinDatos, pinReloj, ordenBits, valor)
Parametros
valor: los datos que rotar. (byte)
pinDatos: el pin en el cual extraer cada bit (int)
pinReloj: el pin que hay que conmutar cada vez que a un pinDatos le ha sido enviado el valor correcto (int)
ordenBits: en qué orden desplazar los bits; si hacia el MSBFIRST (bit más significante primero) o hacia el LSBFIRST (bit menos significante primero).
Entonces esta función envía los datos, maneja el reloj y se encarga de ordenarlos para la transmisión, solo queda la función de latch por controlar.
Veamos el programa base para la comunicación.
//Pin conectado a SH_CP del 74HC595
int clockPin = 11;
//Pin conectado a DS del 74HC595
int dataPin = 10;
//Pin conectado a ST_CP del 74HC595
int latchPin = 9;
void setup() {
//Configurar pines para controlar el Shift(register)
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
}
void loop() {
// Cuenta de 0 a 255 y muestra la salida en los leds
for (int numeroamostrar = 0; numeroamostrar < 256; numeroamostrar++) {
// Coloca el latchPin en bajo "0" para que los LEDs no cambien
// mientras se está enviando en bits:
digitalWrite(latchPin, LOW);
// cambiar los bits:
shiftOut(dataPin, clockPin, MSBFIRST, numeroamostrar);
// Coloca el latchPin en Alto "1" para que los LEDs cambien
digitalWrite(latchPin, HIGH);
// Retardo Antes del siguiente valor
delay(500);
}
}
Este es el programa utilizado en arduino para la comunicación de un 74595.en el se toma un dato de 8 bits y se envía de forma serial cada 500ms
Los pines utilizados son:
- Clock 11
- Datos 10
- Latch 9
Ahora veamos la simulación de un 74595 de forma manual y finalmente la integración con arduino.
Espero les sea util, hasta la próxima...
sera que puedas dejar un link para descargar el circuito gracias
ResponderEliminarSaludos David, primero gracias por leernos, imagino que es el archivo de la simulación, aquí te dejo el link con todos los archivos.
ResponderEliminarhttps://drive.google.com/file/d/0B8Wo5H73NB9bN01KV3dLeGZpalk/edit?usp=sharing
Saludos
AngeleX
saludos estimados amigos, me gustaria saber como controlar el mismo 595 pero con un pic16f877A
ResponderEliminarHola Edgar, Primero gracias por leernos, desafortunadamente no tenemos una solucion practica con el 74595 y PIC, deberas hacer tus propias librerias, te dejo una hoja tecnica de aplicación de microchip para SPI, que te sirva como base para el diseño.
EliminarSaludos
AngelX
http://ww1.microchip.com/downloads/en/devicedoc/spi.pdf
hola amigo muy interesante tu proyecto, estoy realizando un spokepov led rgb, por los momentos solo he diseñado un programa en visual basic que me convierte la imagen a radianes y a la vez me da la composicion de los rgb, ahora bien no tengo experiencia en arduino pero ya me estoy estudiando un libro, como puedo enviar esos datos al 74595?
ResponderEliminarBuenisimo me despejaste algunas dudas amigo.
ResponderEliminarEste comentario ha sido eliminado por el autor.
ResponderEliminarHola:
ResponderEliminarMuy bien explicado el tema del 74HC595 como salidas digitales.
¿Harás algo similar con las entradas digitales como el 74HC165?
Saludos.
Este comentario ha sido eliminado por un administrador del blog.
ResponderEliminarSaludos, Muy Bien la explicación, puedo conectar 8 CI 74595 en cascada, o existe algun circuito o CI de mas salidas. tiene algun limite la conexión en cascada, Agradezco tu colaboración
ResponderEliminarHola,buen Blog!!,
ResponderEliminarPodes conectar en cascada con otro registro teniendo en cuenta su clk de uno conectado al otro,Lo podes encontrar como ejemplo en web como: registro de desplazamiento en matriz"
Saludos
Cordial saludo, primero que gracias por la explicación, me despejaron la duda sobre el funcionmiento del IC. Una consulta, me podrian hacer el favor y decirme que software emplean para la simulación. Gracias
ResponderEliminarHola Jeferson, gracias por leernos, si efectivamente es Proteus 8.1 de Labcenter Electronics.
EliminarHola, pareciera "Proteus"
ResponderEliminarMuy bien explicado todo. Gracias
ResponderEliminarhola, muy bueno el tutorial, me gustaria saber si me colaboraria o tienes un codigo para ir aprendiendo a controlar una matriz con arduino y el 595, me gustaria mostrar figuras y no letras, como una flecha...muchas gracias
ResponderEliminarhola, alguien me ayudaria???..una matriz y los anodos van a arduino, los catodos al 595, pongo en alto las salidas de arduino o una sola...y toda la fila se enciende; como envio la orden al 595 para que solo encienda uno en especifico...me enseñan por favor???
ResponderEliminaralguien por aki?
ResponderEliminarAun en 2017 es util. Grcias por toda la informacion. Fuieste claro y el tema me quedo entendido.
ResponderEliminarHola a todos. Yo conocí este chip 74HC595D en un reproductor de música mp3 el cual tiene 4 de estos integrados y 8 mini tiras de Led RGB, con 6 funciones de efectos diferentes. Por ende me intereso el funcionamiento para poder armar uno de mayor dimensión sin tener que estropear el reproductor Mp3. Excelentes efectos y muy potente su iluminación audioritmica de los Led RGB. Por lo que e estado leyendo acá no es muy fácil llevar acabo el proyecto del que les hablo. Si bien trabajo en electrónica pero no estoy muy familiarizado con lo digital. Pero algo he podido lograr en otros proyectos. Si alguien tiene algun diagrama de lo que comente aquí, bien venido sea. Saludos
ResponderEliminar