Blog ENI : Toute la veille numérique !
🐠 -25€ dès 75€ 
+ 7 jours d'accès à la Bibliothèque Numérique ENI. Cliquez ici
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
  1. Livres et vidéos
  2. Arduino
  3. La position des trains
Extrait - Arduino Faites-le jouer au train (2e édition)
Extraits du livre
Arduino Faites-le jouer au train (2e édition)
6 avis
Revenir à la page d'achat du livre

La position des trains

Les yeux du réseau

1. Le principe

Détecter la position des trains sur un réseau est une étape nécessaire en vue de son automatisation. On peut faire la distinction entre deux types de détection :

  • Le détecteur de passage est situé à un point bien précis et il s’active au moment où un élément détectable passe à son niveau. Il s’agit donc d’une détection ponctuelle.

  • Le détecteur de présence surveille tout un tronçon de voie et il s’active dès qu’un élément détectable est situé n’importe où sur ce tronçon de voie. Donc, ce n’est pas une détection ponctuelle.

Les détecteurs de passage permettent de savoir quand un train quitte un canton, afin de mettre le signal au rouge et de remettre le précédent au vert. Il faut donc les placer à la limite entre deux cantons. Cependant, la locomotive doit avoir quitté le canton avant d’être détectée, sinon elle va se stopper elle-même ! Il faut donc placer le détecteur de passage environ 20 cm au-delà de la limite entre les deux cantons. Si l’on souhaite faire circuler les trains dans les deux sens, il faut en mettre un de chaque côté de la limite de canton. On se retrouve donc avec deux détecteurs par canton. On peut même envisager d’en installer un troisième vers le milieu si l’on veut gérer l’arrêt des trains avec plus de finesse.

Mais les détecteurs ne servent pas qu’à cela, on peut aussi les utiliser pour calculer la vitesse du convoi. Il suffit de mesurer le temps écoulé entre deux détecteurs distants de quelques dizaines de centimètres.

2. Les méthodes de détection

Elles sont variées, et ont toutes des avantages (signalés par un +) et des inconvénients (signalés par un -). Certains de ces systèmes peuvent même être utilisés simultanément...

Un détecteur de proximité

1. Présentation du circuit

Il a été envisagé de confier ce travail de modulation et de démodulation à un Arduino. C’est parfaitement possible, mais il faudrait se limiter au nombre d’entrées analogiques présentes sur le circuit, donc seulement six sur les huit disponibles sur un Arduino Nano, car deux entrées analogiques sont réservées pour le bus I²C. C’est un peu dommage de ne pas pouvoir en brancher plus (ce serait possible en multiplexant les signaux, mais cela se ferait au détriment de la fiabilité de la lecture), d’autant plus qu’utiliser une seule adresse I²C pour lire seulement six détecteurs de présence va vite poser problème si le réseau est un tant soit peu important.

C’est ce constat qui a mené à la conclusion suivante : le circuit détecteur doit également se charger de la modulation et de la démodulation. De cette façon l’Arduino va pouvoir lire les détecteurs directement en numérique, ce qui est bien plus rapide, et un multiplexage sera facilement réalisable.

2. Le LM324

Ce circuit est un quadruple amplificateur opérationnel. Ses caractéristiques principales sont les suivantes :

  • Alimentation : 3 à 32 V (symétrique ou asymétrique)

  • Faible consommation

  • Fréquence maximum : 1 MHz

  • Plage d’entrée de GND à V+

  • Courant de sortie : 40 mA (en source de courant)

images/11B08-LM324.png

Il a été choisi, car il peut fonctionner sous de faibles tensions d’alimentation et il ne nécessite pas une alimentation symétrique. On peut l’utiliser pour piloter des LED ou des circuits logiques. Et enfin, il comprend quatre amplificateurs opérationnels, et c’est justement la quantité nécessaire pour réaliser le circuit de détection.

3. Le TCRT5000

Il s’agit d’un détecteur de proximité à infrarouge. Il est particulièrement simple, car il ne contient qu’une LED et un photo-transistor encapsulés dans un boîtier en plastique. L’avantage d’un tel circuit, c’est que les deux éléments sont conçus pour fonctionner ensemble et ils sont correctement...

Le tachymètre

1. Présentation

Un tachymètre permet de mesurer la vitesse. Pour y parvenir, on va utiliser deux détecteurs distants de quelques dizaines de centimètres et mesurer le temps nécessaire pour parcourir la distance séparant les deux détecteurs. On peut alors calculer la vitesse au moyen de la formule v = d / t (la vitesse est égale à la distance divisée par le temps). Il faut juste tenir compte de l’échelle de réduction pour le calcul de la distance.

C’est ainsi que fonctionnent les radars tronçon.

Le circuit AT-NANO (présenté dans le chapitre Le panneau de contrôle) va être mis à contribution. Un câblage en l’air serait parfaitement possible, mais ce circuit imprimé permet de disposer de connexions fiables. Il est inutile de souder l’ensemble de composants du circuit AT-NANO si l’on souhaite ne l’utiliser que pour mesurer la vitesse des trains. Les composants nécessaires sont donc les suivants :

XA1

Arduino Nano

J6 ou J7

Connecteur HE13 mâle 6 contacts

J8, J9

Connecteur HE13 mâle 4 contacts

On peut ainsi l’utiliser aussi bien avec un afficheur I²C qu’un afficheur SPI. L’exemple présenté ici est basé sur un afficheur matriciel à LED piloté par un circuit MAX7219. Ce circuit étant adressable par un protocole proche du SPI, il faudra le brancher sur le bus SPI, donc le connecteur J7. On peut aussi piloter un écran graphique OLED ou LCD de 128 par 64 pixels avec interface I²C ou SPI. Le programme complet permet aussi d’utiliser ce type d’écran, mais cela ne sera pas détaillé ici puisque l’utilisation d’un écran OLED a déjà été effectuée dans le chapitre Les contrôleurs indépendants. 

Ce circuit n’étant pas relié aux autres éléments du réseau, il peut être alimenté directement par le port USB. Il n’y a que deux détecteurs à adresser, ils sont donc activés en permanence en reliant leur patte 4 au +5V. Le circuit imprimé AT-NANO inclut cette liaison électrique, il n’y a vraiment qu’à brancher les fils sur le circuit.

2. Le MAX7219

Ce circuit permet...

Une centrale de détection

1. Présentation

Ce circuit est destiné à centraliser sur un seul Arduino une quantité importante de capteurs. Cette optimisation est rendue possible par son organisation sous la forme d’une matrice d’entrées et de sorties.

Téléchargement depuis la page Informations générales : at-matrice.

images/11B19-MATRICE.png

Les quatre pattes A0 à A3 pilotent deux circuits 74HC238 qui permettent de générer 16 signaux de sélection. Les pattes A4 et A5 étant réservés pour le bus I²C, il reste donc D2 à D13 de disponibles, ce qui représente 12 entrées sur lesquelles peuvent être branchés les détecteurs. On va donc pouvoir, grâce au multiplexage et au matriçage, lire 16 x 12 = 192 détecteurs avec un seul Arduino Nano. Cependant, pour pouvoir utiliser l’entrée D13 en INPUT_PULLUP, il est nécessaire de retirer la LED "D" présente sur le circuit Arduino Nano, sinon il faut se limiter à 176 détecteurs. À ce stade, le problème risque plus d’être du côté du circuit d’alimentation nécessaire pour fournir assez de puissance à tous ces circuits, chaque détecteur embarquant une LED consommant 20 mA.

Les connecteurs fournissent l’alimentation et le signal d’activation pour chaque groupe de détecteurs. Le signal de retour revient sur un autre connecteur, puisque les détecteurs sont disposés suivant une matrice.

Afin de faire aisément la différence entre entrées et sorties, les sorties sont repérées par les lettres de A à P et les entrées sont repérées par les chiffres de 1 à 12. Chaque détecteur peut donc être identifié par une lettre et un chiffre comme à la bataille navale.

Un connecteur d’alimentation est prévu pour fournir suffisamment de puissance aux circuits détecteurs, l’Arduino ne pouvant pas délivrer assez de courant. Il faut y connecter une alimentation régulée 5 V. On trouve dans le commerce des blocs d’alimentation qui peuvent convenir, il suffit de rechercher « 5v power supply » sur Internet. Ce sont souvent des alimentations destinées à...