TM1637 driver para display LED de 6 dígitos de 7 segmentos y teclado de 16 pulsadores

publicado en: Portada | 18

Manejar desde microcontroladores grupos de pulsadores (teclas) y matrices de LED (frecuentemente formando dígitos de 7 segmentos) es una tarea trivial, tanto a nivel electrónico como de software, incluso desde las series de dispositivos de menores prestaciones. El inconveniente que puede surgir radica en la necesidad dedicar un número alto de pines incluso con técnicas de barrido que tratan, agrupados formando una rejilla o matriz, ambos tipos de componentes.

Entre otros de finalidad similar, el integrado TM1637 es una solución muy económica y popular de resolver el problema haciendo de interfaz entre el microcontrolador y los teclados y display de LED de 7 segmentos. Además de presentarse en formatos SOP20, de superficie y DIP20, de inserción, muy práctico para pruebas; existen multitud de módulos que lo integran, por lo que es muy habitual utilizarlo sobre todo en pequeños montajes y pruebas.

módulo con integrado TM1637 y display con 4 dígitos de 7 segmentos para reloj

Características del TM1637

Como decía más arriba, el TM1637 se presenta en encapsulados de 20 pines en formato SOP (superficie) o DIP (inserción) de los que dedica 2 al control del teclado y 6 al de los dígitos LED de 7 segmentos. De los restantes, como puede verse en el gráfico de abajo, 8 se utilizan alternativamente para controlar los 7 segmentos (8, contando el separador decimal u horario) de cada dígito del display o las 8 columnas del teclado.

El TM1637 utiliza comunicaciones serie de dos hilos (conocidas genéricamente como TWI o TWSI por las siglas de Two-Wire Serial Interface) para manejar hasta 6 dígitos LED de 7 segmentos (8, contando el punto decimal o el separador horario) y 16 pulsadores (teclas) o cualquier otro tipo de sensor que cierre, habitualmente por un instante, un circuito.

El pin DIO del TM1637 se utiliza para enviar y recibir los datos y el CLK como referencia de reloj que debe operar, como máximo, a 250 KHz. El integrado dispone de un oscilador interno de 450 KHz con una tolerancia del 5% con el que gestiona su funcionamiento sin necesidad de añadir un cristal al montaje.

Dispone de un ajuste de brillo de 8 niveles para los LED, sin incluir el apagado de los mismos, que puede modificarse sin necesidad de volver a escribir el valor mostrado por el display, por lo que se puede implementar un mando que lo modifique independiente del funcionamiento de fondo del dispositivo (como marcar la hora o mostrar un valor)

Para su montaje sólo hay que considerar que se alimenta con una tensión de 5 V, que tiene un consumo de hasta 200 mA dependiendo del modo de funcionamiento, por ejemplo, de la cantidad de LED encendidos y su nivel de brillo y que las comunicaciones requieren resistencias de 10 KΩ tanto en la línea de reloj como en la de datos, lo convencional en este tipo de comunicaciones. Por lo demás, sólo advertir que el fabricante requiere filtrar la alimentación aunque, en mis pruebas, ha funcionado de forma muy estable sin hacerlo.

El funcionamiento a nivel de software del TM1637 es muy sencillo, tanto por las comunicaciones TWSI como por el interfaz: unos pocos comandos para establecer el modo, leer y escribir. Como ocurre frecuentemente con las comunicaciones de dos hilos, se envía una señal de inicio y parada enmarcando las órdenes y los datos así como un código de verificación, de respuesta en este caso como se explica en el artículo sobre la librería con la que manejar el TM1637 desde Arduino.

En los siguientes esquemas se muestran los montajes típicos del TM1637 para ser usado como interfaz para un teclado y para un display LED de dígitos de 7 segmentos.

Aunque en el diagrama pueden verse separados (para entenderlos más fácilmente) es posible utilizar ambos en un circuito utilizándolos alternativamente escribiendo un valor para los LED o leyendo la actividad o el estado de los pulsadores (teclas) conectados al integrado.

En la parte derecha de ambos esquemas se muestra la comunicación serie de dos hilos y la alimentación y en la izquierda la conexión al teclado (el primer diagrama) y al display de LED de 7 segmentos (el segundo diagrama)

Montaje del TM1637 como interfaz de teclado

TM1637 driver display LED 7 segmentos y teclado

Montaje del TM1637 como interfaz de display de LED de 7 segmentos

conexión 6 dígitos LED de 7 segmentos TM1637

Víctor Ventura

Desarrollando aplicaciones para la web conocí el potencial de internet de las cosas, encontré la excusa perfecta para satisfacer la inquietud de aprender electrónica que había tenido desde siempre. Ahora puedo darme el gusto de programar las cosas que yo mismo diseño y fabrico.

Más entradas - Página web

Sígueme:
TwitterLinkedIn

Seguir Víctor Ventura:

Programador multimedia y web + IoT. Mejor con software libre.

Desarrollando aplicaciones para la web conocí el potencial de internet de las cosas, encontré la excusa perfecta para satisfacer la inquietud de aprender electrónica que había tenido desde siempre. Ahora puedo darme el gusto de programar las cosas que yo mismo diseño y fabrico.

18 Respuestas

  1. Daniel Emmanuel Esquivel Fuentes

    Saludos, Su articulo se me hizo muy interesante, para mi es prácticamente nuevo este modulo con el TM1637, soy aun estudiante de electrónica, sin embargo tengo algunas dudas, espero me pueda ayudar a disipar algunas, este modulo obviamente es compatible con arduino, y su modulo pra ser programado, mi pregunta es, se es posible programar el tM, y una vez programado alimentarlo de manera externa y que realice la función programada, sin necesidad de que este conectado directamente a la placa de arduino, digamos si quisiera realizar un reloj a baterías, saludos, y espero me pueda ayudar.

    • Víctor Ventura

      Hola, Daniel.

      En realidad, el TM1637 no se programa y sigue funcionando como creo entender de tu pregunta. Necesita que se le vaya ordenando qué representar en el display (o se vayan leyendo las teclas que se han pulsado) así que necesitarás algo como un microcontrolador para hacerlo funcionar, aunque no necesariamente el de Arduino.

      Por cierto, también necesitarás un reloj en tiempo real y un sistema de alimentación por batería/s (pueden/suelen ser diferentes las del reloj y la del resto del montaje)

      Me temo que, sólo con el TM1637, no es tan sencillo como planteas. Sí que existen otros integrados que controlan funciones más propias del objetivo que planteas (hacer un reloj, si he entendido bien) como el SC8560, por orientarte con una referencia; pero es un concepto completamente diferente al que planteo en este artículo.

      Espero haber ayudado un poco 🙂

      ¡Gracias por visitar la web y suerte con tu proyecto!

  2. David

    Hola buenos dias,primero gracias compartir sus conocimientos con todos.
    Queria saber como puedo usar el modulo TM1637 con el modulo reloj DS3231, utilizar el moduloo reloj con una pantalla lcd ya lo he hecho,y he modificado algun parametro para separar los digitod o no mostras segundos,pero me gustaria hacerlo en el modulo TM1637,que en los digitos izquierdos mostrara la hora y en los dos derechos los minutos.
    Me gustaria hacer un pqueño reloj asi.
    Gracias.

    • Víctor Ventura

      Hola, David.

      Sin algo que gestione ambos componentes (como un microcontrolador) no se me ocurre cómo hacerlo.
      Si te sirve hacer tu reloj usando un Arduino, en el blog puedes encontrar información para usar todo (Arduino, reloj, driver y display)
      No tengas inconveniente en preguntar más si no he acertado con lo que buscas.

      Saludos.

  3. David

    Gracias por tu rápida respuesta.
    Disculpa que me explicara tan mal en el anterior mensaje,si que pretendía usar Arduino con los dos módulos que te mencionaba,el de reloj y el de los cuatro dígitos.
    Por cierto vaya blog mas bien creado,felicidades.
    Encontré un proyecto en tu blog que me venia muy bien a lo que pretendía hacer,pero me da algun error.
    He dejado el comentario en esa entrada del blog.
    Gracias. Un saludo

  4. diego

    Hola, quiero usar el TM1620, pero solo encuentro su datasheet en chino simplificado, podes pasarme las instrucciones de uso en ingles o castellano?
    Y también me gustaría saber si alguien tiene experiencia con este bicho y que tramas hay que mandarle para que se muestre algo mas que oscuridad.
    gracias

  5. Gonzalo

    Hola mi nombre es Gonzalo Godiño, antes que todoagradecerle por la información. Soy estudiante de I.tecnológico, estoy intentando controlar un display de 7 segmento y dos digitos para usarlo como contador tanto set o reset que sea capas de contar para delante como para atras pero para esto no encontrado el componente adecuado que cumpla con las conbinaciones de estados para formar cada numero, si podria darme alguna idea le agradeseria, muchas gracias,

  6. ELADIO DIAZ

    Soy ELADIO DIAZ, quiero usar el TM1637 programando un pic con «proton ide» pues no tengo ni se lenguaje arduino.seria tan amable y me diera un ejemplo para configurarlo, gracias

  7. Oscar

    Hola, estuve leyendo su articulo porque estoy interezado en usar el modulo del tm1637 de arduino pero con el programador Niple de integrados microchip. Mi duda me surge porque quisiera saber si este integrado tm1637 usa como protocolo I2c que me permitiria crear un modulo para su manejo. Me surgio la duda porque al investigar en su datasheet (lamentablemente solo lo encontre en idioma chino), aparecia el clock y en vez de data lo reemplazaba por dio. No puede distinguir si es lo mismo o no. Agradeceria tu respuesta porque de esto depende que compre o no la actualizacion. Por cierto muchas gracias por compartir tu conocimiento respecto al tema.

  8. carlos tejada

    Hola Victor.

    Muchas gracias por tu articulo.
    Todo funciona pero cómo usar las k1 k2 para pulsadores o teclados?

  9. Eduardo

    oscar escribió el 17/10/17 y no tuvo respuesta.
    Hola, estuve leyendo su articulo porque estoy interezado en usar el modulo del tm1637 de arduino pero con el programador Niple de integrados microchip. Mi duda me surge porque quisiera saber si este integrado tm1637 usa como protocolo I2c que me permitiria crear un modulo para su manejo. Me surgio la duda porque al investigar en su datasheet (lamentablemente solo lo encontre en idioma chino), aparecia el clock y en vez de data lo reemplazaba por dio. No puede distinguir si es lo mismo o no. Agradeceria tu respuesta porque de esto depende que compre o no la actualizacion. Por cierto muchas gracias por compartir tu conocimiento respecto al tema.

    • Víctor Ventura

      Hola, Eduardo.

      Si la pregunta es ¿Utiliza el TM1637 el protocolo I2C estándar? la respuesta es no.

      Si la pregunta es ¿Las comunicaciones que utiliza el TM1637 son similares a I2C? la respuesta es sí.

      Quizá utilizando unas librerías I2C muy configurables (MUY configurables) puedas utilizarlo aunque no sea estándar pero precisamente escribí este artículo porque las comunicaciones no son exactamente iguales y la datasheet es una pesadilla.

      Gracias por participar en el blog.

  10. Pablo

    Hola Victor!
    Tenés algun esquema para usar teclado y displays al mismo tiempo (usando un Arduino como microcontrolador)? Podre conectar directamente sin circuiteria extra?.
    Desde ya gracias!

  11. Luis Rodriguez Zuñiga

    Como puedo encontrar el circuito integrado para usarlo en un display gigante

  12. Gabriel Puebla

    Hola, soy un ñofito en la materia para aclarar antes y mis disculpas. Tengo un ventilador(dejo de funcionar) que tien una placa, y en la misma tiene un TM 1650…Al parecer es este chip… Porque tiene un display de 2 dígitos de 7 seg y solo se prenden dos segmentos tenues… Creo q el problema radica ahí en el chip. Este se puede cambiar por otro? Se programan antes? O si se puede reiniciar este mismo chip?… Gracias. Saludos.

  13. Carlos Montenegro

    Buenas, se me hizo muy interesante tu artículo. Llevo buscando una solución para crear mi propio Joystick y me preguntaba si es posible utilizar el TM1637 independiente para hacerlo funcionar con pulsadores como los botones de un control.

Deja un comentario

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