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.
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)
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!
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.
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
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
Víctor Ventura
Hola, Diego.
¿Has visto mi artículo «Librería Arduino para controlar un display LED de dígitos de 7 segmentos con TM1637»? En él explico un poco cómo manejar el TM1637. Creo que con esa información puedes salir del paso (aunque no lo uses con Arduino) aún sin tener la datasheet en castellano o inglés (que por cierto yo tampoco he encontrado)
Espero que te sirva.
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,
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
Víctor Ventura
Hola, Eladio.
Ya me gustaría, pero no conozco Proton IDE 🙁
Saludos y suerte con tu proyecto.
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.
carlos tejada
Hola Victor.
Muchas gracias por tu articulo.
Todo funciona pero cómo usar las k1 k2 para pulsadores o teclados?
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.
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!
Luis Rodriguez Zuñiga
Como puedo encontrar el circuito integrado para usarlo en un display gigante
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.
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.