TM1637 - Contrôleur d'affichage de LED et scanner clavier

Le TM1637 est un contrôleur permettant le pilotage de six afficheurs 7 segments (48 LEDs) et le scan d'un clavier de 16 touches (2 x 8). Le contrôle, le rafraichissement de l'affichage et la gestion du courant dans les LED sont entièrement pris en charge par ce circuit simplement par deux broches de commande.

Caractéristiques

Les principales caractéristiques du TM1637 sont les suivantes :

  • contrôleur pour six afficheurs à 7 segments (anode commune) ;
  • luminosité réglable par 8 niveaux de PWM ;
  • effacement automatique ;
  • scan pour 2 x 8 touches ;
  • interface synchrone, 2 fils (données + horloge) ;
  • alimentation 5V (certains Datasheet préconisent 3,3V mais cette tension est inférieure à celle nécessaire pour allumer des LED bleues ou blanches).

Communication avec le TM1637

La fiche technique de ce composant n'est pas très explicite, mais il est tout de même possible de retracer son fonctionnement :

  • l'interface avec le microcontrôleur est de type série bifilaire, données et horloge (appelées DIO et CLK) ;
  • la communication démarre par un "START" : DIO passe à l'état bas avec CLK à un niveau haut ;
  • une commande de 8 bits est envoyée, synchronisée avec l'horloge (la fiche technique spécifie qu'elle doit être inférieure à 250kHz) ;
  • le circuit répond en passant la ligne DIO à l'état bas (ce qui correspond à un "ACK" = acquittement) qui est effacé par le neuvième coup d'horloge ;
  • Si la commande n'entraîne pas de sortie de données, la communication se termine par un "STOP" (CLK passe à l'état haut avec DIO à l'état bas) ;
  • une communication ultérieure est relancée avec un "START". Si la commande nécessite plus d'une donnée, elle est envoyée en séquence, tandis que le circuit répond "ACK" comme indiqué ci-dessous ;
  • Un "STOP" et un "START" ultérieur permettent d'envoyer d'autres données/commandes.
Exemple de trame de commande du TM1637 sur les broches CLK et DIO

Compatibilité I2C ?

La fiche technique concernant le protocole de communication indique, "ne correspond pas totalement au protocole de bus I2C car il n'y a pas d'adresse esclave" :

  • Cette raison indique clairement que le fabricant ne fait pas partie du consortium I2C qui nécessite le paiement d'une redevance pour obtenir des adresses valides.
  • En outre, les broches de communication s'appellent DIO et CLK et non SDA et SCL.

L'absence d'adresse esclave empêche le contrôleur d'être branché sur un bus I2C avec d'autres périphériques, même si l'on pourrait penser qu'il peut être utilisé seul, puisque le protocole peut être considéré comme "pas totalement" compatible.

Malheureusement, le dispositif n'a pas grand-chose à voir avec l'I2C ; en fait, il y a d'autres problèmes :

  • premièrement, les bits de poids faible sont envoyés en premier, alors qu'en I2C c'est l'inverse.
  • deuxièmement, la réponse ACK du circuit suit un timing différent.

Tout cela signifie que le TM1637 ne peut pas être utilisé comme n'importe quel élément I2C et qu'un pilote approprié doit être utilisé.

Utilisation du TM1637 dans le cadre du modélisme ferroviaire

Bien que ce composant ne soit pas compatible I2C, il offre de nombreux avantages :

  • gestion de 48 LEDs dans un espace réduit (résistances de limitation de courant intégrées au circuit) ;
  • gestion de 8 niveaux de PWM permettant de modifier l'intensité d'éclairage des LED ;
  • utilisation de seulement 2 broches du microcontrôleur pour le piloter ;
  • possibilité de gérer plusieurs TM1637 avec un même microcontrôleur ;
  • un très faible coût.

Sur le schéma proposé par le fabricant, les lignes de communication disposent chacune d'une résistance de pull-up de 10K ainsi qu'un condensateur de pull-down de 100pF. Les condensateurs ont été supprimés sur le schéma ci-dessus car leur impact sur la forme du signal était trop visible (transitions trop arrondies).

Rédaction en cours...