ModelleisenbahN

Accueil > La conception > Le TCO > L’architecture électronique du cadre tactile

Le TCO

L’architecture électronique du cadre tactile

publié par Jean-Luc, le samedi 26 octobre 2013

Tags tco

La commande des 32 LED IR du TCO et la lecture des 32 phototransistors IR nécessiterait 64 entrées / sorties numériques sur le micro-contrôleur de pilotage. Les entrées / sorties n’étant pas disponibles en telle quantité, il est nécessaire de disposer d’une interface. La solution la plus logique est d’utiliser une séries de registres à décalage (RàD), à la fois pour commander les LED IR et pour lire les phototransistors.

Les RàD sont des circuits intégrés de 16 à 20 broches selon les modèles. Il s’agit généralement de registres 8 bits. Ils ont généralement un sens d’écriture et de lecture. C’est à dire que ce sont soit des registres que l’on va écrire en série [1] et dont le contenu sera mis à disposition sur 8 des broches en parallèle ; soit des registres qui vont échantillonner 8 valeurs en parallèle sur 8 des broches et que l’on va vider en série.

On peut les cascader, c’est à dire que la sortie série d’un registre peut être branchée sur l’entrée série d’un autre. De cette manière, il est possible de constituer un très long registre à décalage de plusieurs dizaines de bits.

Pour rythmer, la progression des bits dans le registres, il faut faire bagotter une horloge. Le front montant, c’est à dire une transition de l’état bas (0) à l’état haut (1) de l’horloge provoque le décalage des bits du registres et l’entrée, ou la sortie, d’un nouveau bit.

Dans les RàD entrée série/sortie parallèle, les bits que l’on va entrer en série ne sont pas disponible directement sur les sorties parallèle afin d’éviter d’avoir des valeurs indésirable sur les sorties parallèles lorsque l’on remplit le registre. Les bits sont entrés en série dans le RàD puis, en faisant bagotter un signal, les bits du RàD sont recopiés dans un second registre en parallèle. Ce n’est qu’alors que les bits chargés dans le RàD sont disponibles sur les 8 broches de sortie.

Les registres à décalage de pilotage des LED IR

Les RàD de pilotage des LED sont du type entrée série / sortie parallèle. Il s’agit du Texas Instruments TPIC6B595 qui m’avait été signalé par Marc-Henry. Le gros avantage de ce circuit intégré est de conduire des courants relativement forts : 150mA en permanence et 500mA en impulsion. Il est donc tout à fait adapté au pilotage des LED IR par impulsion avec un courant de 200mA. Le TPIC6B595 possède 8 broches DRAINx qui sont tirées à la masse via un transistor MOS si le bit correspondant du registre parallèle est à 1. Une entrée SER IN permet de fournir les bits en série, une sortie SER OUT permet de les récupérer en série à l’autre bout. Pour cascader deux RàD, il suffit de connecter le SER IN du second RàD au SER OUT du premier. Les signaux d’horloge et de contrôle sont :

  • SRCK : horloge série, les bits progressent dans le RàD sur le front montant de cette horloge ;
  • RCK : horloge parallèle, les bits sont copiées du RàD au registre de sortie sur le front montant de cette horloge ;
  • /G : si à 0, les sorties DRAINx ne sont pas tirées à la masse. Si à 1, les sorties DRAINx sont tirées à la masse selon le contenu du registre parallèle.
  • /SRCLR : si à 0, tous les bits du RàD sont mis à 0. Le registre parallèle n’est pas affecté.

Comme une seule des LED IR est allumée à un instant, il n’y a qu’un seul 1 dans le RàD et le jeu consiste à l’y faire progresser à raison d’une position toutes les 600µs, 32 fois de suite puis de recommencer. Le fonctionnement est donc assez simple. Au démarrage de la séquence :

  • Mise à 0 puis à 1 de /SRCLR pour initialiser le RàD à 0 ;
  • Positionnement d’un 1 sur SER IN ;
  • Mise à 1 puis à 0 de SRCK pour faire entrer le 1 à la première position du registre ;
  • Positionnement d’un 0 sur SER IN ;

Ce qui correspond au chronogramme suivant

PNG - 11 ko
Initialisation du TPIC
Mise à 0 du RàD et chargement d’un bit à 1.

On va ensuite répéter 32 fois :

  • Mise à 1 puis à 0 de RCK pour copier le RàD dans le registre parallèle ;
  • Mise à 1 puis à 0 de SRCK pour faire progresser le 1.
  • Mise à 1 de /G ;
  • attendre 600µs ;
  • Mise à 0 de /G.
PNG - 12.1 ko
Décalage d’un bit et allumage de la LED IR

Il faut aussi faire attention aux contraintes temporelles du TPIC6B595. Entre le moment où on met une valeur sur SER IN et le front montant de SRCK (tsu) il faut laisser s’écouler 20ns minimum [2]. De même entre le le front montant de SRCK et le changement de valeur sur SER IN (th), il faut aussi laisser s’écouler 20ns minimum [3]. Les horloges SRCK et RCK doivent rester au minimum 40ns à l’état haut (tw). Le micro-contrôleur PIC utilisé fonctionnant à 16MHz, après division par 4 de l’horloge en interne, il a un temps de cycle de 62,5ns. Par conséquent si on change, par exemple, SER IN et SRCK dans deux instructions successives, le temps écoulé entre la nouvelle valeur de SER IN et le front montant de SRCK sera de 62,5ns, ce qui satisfait les exigences. De même le temps d’une impulsion d’horloge sera de 62,5ns [4].

5 broches de sorties numériques du micro-contrôleur sont donc utilisées pour le pilotage des LED IR.

Les registres à décalage de lecture des phototransistors IR

Les RàD de lecture des phototransistors IR sont du type entrée parallèle / sortie série. Il s’agit de circuits intégrés MOS CD4014.
La sortie Q8 sera utilisée avec l’entrée SERIAL IN pour cascader les RàD intermédiaires. La sortie Q8 du dernier RàD sera connectée à une entrée du micro-contrôleur pour récupérer les bits du RàD et donc l’état des phototransistors.

Les signaux d’horloge et de contrôle sont :

  • CLOCK : l’horloge permettant soit de décaler le registre, soit de le charger en parallèle selon le signal suivant ;
  • PARALLEL/SERIAL CONTROL ou P/S C : Si 0 le registre est décalé sur un front montant de l’horloge. Si 1 le registre est chargé en parallèle ;

Échantillonner les phototransistors revient donc à :

  • Mettre à 1 le signal P/S C ;
  • Mettre à 1 le signal CLOCK ;
  • Mettre à 0 le signal CLOCK ;
  • Mettre à 0 le signal P/S C.
PNG - 10.9 ko
Échantillonnage de l’état des phototransistors

Il suffit ensuite de répéter la séquence suivante 32 fois pour lire l’état des 32 phototransistors.

  • Lire Q8
  • Mettre à 1 le signal CLOCK ;
  • Mettre à 0 le signal CLOCK ;

2 broches de sorties numériques et une broche d’entrée numérique du micro-contrôleur sont donc utilisées pour la lecture de l’état des phototransistors.

PNG - 57.6 ko
Schéma de principe de l’électronique
Une seul LED IR étant active à la fois, une seul résistance de limitation du courant est nécessaire.

Les contraintes temporelles sont plus sévère avec un tw de 180ns et un tsu de 200ns. Il faudra donc mettre quelques instructions de temporisation ici et là. La fréquence minimum de CLOCK à 5V est de 3MHz. Comme on dispose de 600µs pour vider les 32 bits du registre à décalage, avant le prochain échantillonnage des phototransistors, il n’est pas utile de pousser le CD4014 aux limites. En effet, en fixant le cycle de CLOCK à 500ns, soit 2MHz, 16µs sont nécessaires à la lecture des 32 bits, ce qui laisse énormément de temps pour calculer les intersections touchées.

L’architecture logicielle

Comme pour la carte 6 servos, le logiciel sera séparé en deux parties :

  • La partie temps-réel qui s’exécutera sous interruption toutes les 600µs
  • La partie communication qui s’exécutera dans le programme principal et enverra les messages CAN indiquant quelle intersection est touchée.

La partie temps-réel

C’est dans cette partie que s’exécute le programme permettant le pilotage des LED et la lecture des photo-transistors tels que décrit précédemment. Un programme d’interruption exécuté toute les 600µs par un timer effectue les opérations de

  • Échantillonnage des phototransistors ;
  • Extinction des LED IR (mise à 0 de /G) ;
  • Décalage pour sélectionner la LED IR suivante ;
  • Allumage des LED IR ;
  • Récupération de l’état des phototransistors ;
  • Si le balayage est teminé :
    • Si l’état des intersections est différent de celui du balayage précédent, positionnement d’un flag pour la communication.
PNG - 40.4 ko
Exemple de fonctionnement pour les couples LED IR/phototransistor IR 0 et 1
Une interruption provoque, toutes les 600µs le passage d’un couple LED IR / phototransistor IR au suivant. Le signal CLOCK des 4014 échantillonnent l’état de tous les phototransistors. Le logiciel traite ces données dans le temps indiqué par les pavés oranges, pendant que le couple suivant est activé.

Le balayage des 32 couples LED IR / phototransistor IR prendra donc 19,2ms.

La partie communication

Par comparaison entre deux balayage successifs, la partie communication construit un message CAN correspondant aux intersections qui ont changé. Ces messages seront du type « intersection touchée » ou « intersection relâchée ».

Notes

[1C’est à dire que les bits qui sont mémorisés dans un registre sont fournis les uns après les autres, à la queue-leu-leu au rythme d’une horloge

[2C’est ce qu’on appelle le set-up time

[3C’est ce qu’on appelle le hold time

[4Par sécurité, il est préférable d’ajouter une instruction qui ne fait rien entre les deux

Répondre à cet article

Les thèmes

Archives

Informations

ModelleisenbahN | publié sous licence Creative Commons by-nc-nd 2.0 fr | généré dynamiquement par SPIP & Blog'n Glop