Seleccionar página

Ampliar Los Pines De Arduino

Te enseñamos cómo ampliar los pines de Arduino

En este posts vamos a analizar una forma simple de ampliar los pines de Arduino, concretamente vamos a tratar de ampliar los pines digitales, las salidas digitales. Para ello utilizaremos el 74HC595, un integrado muy común (y barato) cuya función es desplazar registros, aunque puedes utilizarlo para ampliar los pines de Arduino.

¿Y para qué quiero yo ampliar los pines de Arduino?

Muchas veces te encuentras con que el número de salidas de las que dispone tu placa no es suficiente para abarcar todos los dispositivos que quieres conectar (sobre todo si se trata de una placa pequeña tipo UNO o Nano).

Circuito Integrado 74HC595

Si quieres hacer un robot araña y tienes que manejar un montón de servos o simplemente buscas encender más leds (por ejemplo para controlar una matriz) de los que te permiten las salidas de tu Arduino una solución puede ser el 74HC595. Con este dispositivo conseguirás 8 salidas digitales utilizando 3 de tu placa (ganas 5). Además es posible conectar varios 74HC595 para aumentar aun más las salidas (siempre que tengas cuidado con la corriente total que está gestionando tu placa porque si te pasas enganchando cosas te la puedes cargar).

Sí, sí… ¡Todo esto muy bonito pero vamos al lío! ¿Cómo lo hago?

Procedimiento.

 

Aquí tienes una imagen esquemática donde puedes ver cómo conectar el 74HC595 a tu placa (para el ejemplo hemos utilizado el esquema de un Arduino UNO pero lo puedes hacer con cualquier otra placa que funcione a 5V). Si te fijas, ahora tienes 8 salidas digitales (llamadas: Q0, Q1,…,Q7. Sin contar Q7′ que no se va a conectar en este ejemplo) utilizando sólamente 3 de tu placa.

Circuito de conexión del 74HC595

Vale, ya lo he montado. ¿Ahora cómo lo hago funcionar?

Aunque controlar el 74HC595 es sencillo, vamos a explicar paso a paso cuál es el procedimiento que deberías seguir para que esto funcione:

  1. Ponemos a LOW el pin 8 del Arduino, es decir, ponemos un valor bajo en el pin latch (ST) con lo que conseguimos que se desactiven las salidas del 74HC595 (así evitamos que el dispositivo nos esté mostrando valores antes de haberle dicho qué es lo que queremos que muestre).
  2. Establecemos el valor que queremos enviar con el pin 11 de la placa, esto es, mandamos HIGH o LOW al pin DS del integrado.
  3. Provocamos un cambio en el flanco de reloj con el pin 12 para que se envíe el dato*.
  4. Volvemos a poner el pin 8 en HIGH para que se muestren los cambios en el 74HC595.

*El 74HC595 es un dispositivo síncrono, lo que quiere decir que los valores no se aplican directamente una vez se los hemos mandado desde el Arduino, sino que esperan al siguiente ciclo del reloj antes de ser ejecutados.

Bueno y… ¿El código para que lo pegue en mi programa dónde está?

Con los datos que ya conoces tú mismo podrías jugar con el 74HC595 a tu gusto, aun así existen ya códigos elaborados para que te ahorres el trabajo. Aquí tienes el enlace a un sketch que activa una a una las salidas del integrado.

Una vez más espero tu opinión, dudas e ideas. Si te ha gustado el post te animo a suscribirte al blog y a seguir esta y muchas más novedades en tus redes sociales favoritas.

Actualmente me dedico, entre otras cosas, a crear contenidos sobre Arduino y otros dispositivos eléctricos. Me encanta todo lo relacionado con el “Universo Maker”.

Siempre estoy activo en los comentarios. Si tienes cualquier pregunta, no dudes en dejármela en los comentarios. Intentaré responderte lo antes posible… Un abrazo smile

Enrique Romero,

Autor del post.

¿No quieres perderte nada? ¡Suscríbete!

17 Comentarios

  1. Hola de nuevo Enrique, estoy con un proyecto pero….a veces Google te lía mas……he mirado otro tutorial tuyo donde explicas como usar la led RGB de ánodo común con transistores 2N2222, hasta ahí…..bien, pero necesito ampliar los pines del arduino mega……lo puedo hacer con el integrado 74HC595 pero este solo trabaja con el cátodo común……..he visto que con el TLC5916 se puede hacer con las leds RGB ánodo común ayudado de una libreria ShiftPWM…….(se supone que no tendría que ponerle resistencias a las leds) pero no estoy seguro de entenderlo……tengo que conectar unas 200 leds RGB…..es para hacer una noria……..podrías ayudarme con los registros de desplazamiento 74HC595 y TLC5916 …….no se cual de los dos poner!!………

    Responder
    • Buenas Gusito,

      No me sé de cabeza el funcionamiento de esos chips pero te intentaré orientar con todas las dudas puntuales que te puedan ir surgiendo.

      Un saludo, Enrique.

      Responder
  2. saludos , de antemano agradeciendo por tan buen material,, te hago una consulta,, quiero encender alrededor de 70 leds con arduino, los cuales estan en intermitencia, la cuestion es que quiero que estos enciendan intermitentemente por un periodo de tiempo dado… sin dejar que estos pierdan su intermitencia.. mil gracias

    Responder
    • Buenas Diego,

      No termino de entender del todo qué es lo que intentas hacer. Si lo que intentas es simplemente encenderlos y apagarlos a un ritmo concreto, puedes activar y desactivar las salidas digitales de Arduino y controlar los tiempo mediante Delay().

      Un saludo, Enrique.

      Responder
  3. Hola, quisiera saber si con la ampliación de pines con el integrado 74HC595 habría alguno PWM ???
    gracias

    Responder
    • Buenas Gusito,

      Me temo que no. sad

      Un saludo.

      Responder
  4. Que tal Enrique, muy buenos articulos en tu pagina. Te felicito.

    Encontre el integrado 74HC154, el cual es un demultiplexor de 4 bits, por lo que usarias 4 bits de entrada (binario) y tendrias de salida 16 bits (decimal). Por ejemplo para el arduino Uno, que tiene 16 salidas digitales mas las 4 que se pueden utilizar usando las entradas analogicas, se tienen 20 salidas digitales. Usando el 74HC154 se pueden expandir las salidas hasta 80. Solo que viendo la hoja tecnica de este integrado, las salidas son negadas, por lo que siempre son HIGH y la salida que activas con los 4 bits de entrada cambia a LOW. Lo que se puede arreglar facilmente poniendo una punta del elemento a activar en voltaje y la otra a la salida. Aunque la programacion se extenderia por el hecho de tener que escribir 4 variables para tener una salida. De todos modos es una buena opcion.

    Saludos!

    Responder
  5. Hola Enrique!
    Muy agradecido por tus post, son muy interesantes y claros,
    Y si no es mucha molestia para ti, tengo un problema a resolver para un proyecto mio, y me gustaria me ayudaras con la sig pregunta.
    De la forma que arriba describes, podria conectar un modulo de 8 rele del tipo que sugieres en otro post “Relé Arduino – Cómo Controlar Tu Casa con Arduino” ?
    o hay peligro de cargar mucho el 74HC595 ?.
    Lo que necesito es ampliar las salidas de mi arduino uno y conectar varias electroválvulas para agua, 2 bombas y 2 resistencias para calentar agua, para las resistencias usaría dos rele SSR-40 DA.
    También estuve analizando utilizar un uln2803 entre el 74HC595 y los rele, (o no hace falta?) por favor si digo alguna burrada pido disculpas ya que soy muy novato,
    Agradecere alguna opinion suya, muchas gracias.

    Responder
    • Buenas Pablo,

      Con el 74HC595 tendrías problemas de corriente para alimentar esos dispositivos. Sin embargo, sí que es una opción utilizar este dispositivo junto con los transistores que comentas.

      Un saludo, Enrique.

      Responder
      • Muchas gracias Enrique, seguiré adelante por ese camino entonces, cualquier otra duda por aquí estaré, ja ja
        Saludos
        Pablo

  6. Hola Enrique, he estado checando tu web y es genial, me está enseñando bastante de estas plaquitas, pero tengo un problema, mi proyecto para motorizar mi telescopio utiliza una arduino Due, por la velocidad, y aún no sé cuántos pines termine usando, así que me gustaría saber si hay una forma, no muy complicada, de poder usar estos chips con la Due.

    Responder
    • Buenas Lalo,

      Aunque no te podría decir el nombre, seguro que puedes encontrar versiones de estos chips para 3.3V sin ningún tipo de problema.

      Un saludo, Enrique.

      Responder
      • Gracias, los buscaré en breve por Banggood, que es en el único lugar que he encontrado todo y sin que me pidan un ojo de la cara a cambio, gracias.

  7. Excelente!
    Tengo una pregunta, ¿estos pines “extra” servirían como entradas? Es decir como digitalRead().

    Responder
    • Buenas Sergio,

      Únicamente servirían como salidas. La idea es que utilices este componente para dejar en la placa pines que puedas utilizar como entradas.

      Un saludo, Enrique.

      Responder
  8. Excelentes tutoriales, muy buen blog.
    Gracias!!

    Responder
    • Me alegro de que te haya gustado Ricardo.

      Un saludo, Enrique.

      Responder

Enviar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Ampliar los Pines de Arduino was last modified: Diciembre 16th, 2016 by Enrique

¿Me ayudas?

Hey! Espero que te esté gustando el artículo. ¿Me ayudarías compartiéndolo con tus amigos? Un pequeño paso para ti, un gran paso para EducaChip. :) ¡Gracias!