{"id":1067,"date":"2020-01-15T01:46:41","date_gmt":"2020-01-15T01:46:41","guid":{"rendered":"http:\/\/robots-argentina.com.ar\/didactica\/?p=1067"},"modified":"2020-11-02T00:59:05","modified_gmt":"2020-11-02T00:59:05","slug":"arduino-ampliar-cantidad-de-salidas-digitales-con-74hc595","status":"publish","type":"post","link":"https:\/\/robots-argentina.com.ar\/didactica\/arduino-ampliar-cantidad-de-salidas-digitales-con-74hc595\/","title":{"rendered":"Arduino: ampliar cantidad de salidas digitales con 74HC595"},"content":{"rendered":"

A veces un Arduino queda corto de pines, y se nos presenta la necesidad de ampliar la cantidad de salidas digitales. La manera m\u00e1s usual es con un registro de desplazamiento (Shift Register, en ingl\u00e9s), que convierte los datos en serie en salidas paralelas. Esto ser\u00e1 de utilidad en aquellas placas como Arduino UNO, Nano, Micro, etc, que a veces resultan un poco limitados en este sentido.<\/p>\n

El chip 74HC595<\/a><\/strong> \u2014para algunos un misterioso integrado de 16 patas que viene incluido en muchos kits de inicio para Arduino\u2014 tiene una ventaja esencial ante otros chips del mismo tipo: tiene un registro que mantiene el dato en los pines de salida sin variaci\u00f3n mientras se desplazan los datos dentro del chip.
\n
\"\"<\/a>
\nAdicionalmente, tiene la posibilidad de desconectar las salidas de este registro de los pines de salida del chip, por medio de la entrada de control OE<\/strong> (Ouput Enable = Habilitaci\u00f3n de Salidas), dej\u00e1ndolos en un estado de alta impedancia, o tercer estado. No usaremos esta opci\u00f3n aqu\u00ed, pero en futuros art\u00edculos veremos la importancia de esta posibilidad.<\/p>\n

Otro chip opcional para este uso, aunque de 16 bits y tambi\u00e9n con registro de salida, es el circuito integrado 74LS673<\/strong><\/a>, pero es m\u00e1s dif\u00edcil de encontrar en el mercado.<\/p>\n

Al utilizar el circuito integrado 74HC595<\/strong>, ocupamos solamente 3 salidas digitales en la placa Arduino, pero obtenemos 8 salidas digitales adicionales. Este 3 x 8 en pines no parece una gran mejora (ganamos 5 salidas), pero si se agregan m\u00e1s chips, la ampliaci\u00f3n puede llegar a ser importante.
\n
\"\"<\/a>
\nPoniendo m\u00e1s chips conectados en serie se pueden obtener otras 8 salidas m\u00e1s por cada chip agregado, y la cantidad de pines ocupados en el Arduino sigue igual: solamente tres. Con tres chips tendremos 24 salidas, con 8 chips tendremos 64, y con 32 chips tendremos una ampliaci\u00f3n de 256 nuevas salidas.<\/p>\n

Para calcular la cantidad de salidas que obtendremos, hay que multiplicar la cantidad de chips por 8.<\/p>\n

En teor\u00eda, se puede poner una cantidad indefinida de chips en serie y obtener centenares de salidas adicionales. S\u00f3lo se debe tener en cuenta que los datos no se desplazan instant\u00e1neamente, debido a los tiempos de programa. Supongamos una cantidad de 32 bytes a poner en las salidas de 32 chips \u2014256 bits\u2014. Colocar todos esos datos en los registros de salida de 32 chips 74HC595<\/strong> implica un tiempo que puede ser sustancial y prohibitivo para algunas aplicaciones que requieren salidas con variaciones r\u00e1pidas, sin que importe si se cambia un \u00fanico bit en las salidas, o los 256 bits juntos. Para aplicaciones sin tiempos cr\u00edticos, como encendido de leds, artefactos a trav\u00e9s de rel\u00e9s, displays de segmentos o control de motores, no existe ning\u00fan problema de tiempos.
\n
\"\"<\/a>
\nLa mayor\u00eda de los chips de registro de desplazamiento pueden manejarse elevadas frecuencias en MHz para el desplazamiento, todos superan la m\u00e1xima velocidad de env\u00edo de datos en serie de un Atmega328P<\/strong>, ya que para hacerlo debemos usar una secuencia de instrucciones de programa. Algunas hojas de datos nos muestran frecuencias de desplazamiento de 100 MHz, 36 MHz, y similares. Un Arduino est\u00e1ndar, con cristal de 16 MHz, y a\u00fan m\u00e1s teniendo que usar una secuencia de instrucciones para enviar cada bit, no superar\u00e1 nunca esas frecuencias para el desplazamiento de los datos. De modo que no se nos presentar\u00e1n problemas de l\u00edmite de velocidad al usar estos chips.
\n


\n