La commande par micro-contrôleur saison 3

De gare en gare

Après une première saison hivernale de découverte du micro-contrôleur Arduino, une deuxième saison d’application sur un réseau test “fermé” ou entièrement maîtrisé par le micro-contrôleur, il était temps d’envisager de travailler sur un réseau ouvert interfacé avec un système conventionnel de block. Le club Train-Passion a défini une norme très précise d’interface entre les gares et les blocks de lignes. Cette norme servira de base au test… mais, pour le plaisir, le réseau conventionnel y est remplacé par un deuxième micro-contrôleur qui gérera la pleine voie et un terminus.

Objectif 2022

Le réseau test est complété par une extension avec 3 zones d’arrêt en enfilade.

Ajout du côté existant d’une carte d’interface block qui analyse les signaux du câble de liaison 15 pôles à la norme du club Train-Passion et les transmet sur le bus I2C du micro-contrôleur 2021. L’idée d’utiliser le bus I2C avec un nombre limité de raccordements aux micro-contrôleur devrait permettre de s’adapter à d’autres normes de block par simple remplacement de l’interface. Mais la faible longueur tolérée du bus pourrait remettre en cause ce choix.

Côté extension, les entrées-sorties du “demi-block” sont directement traitées par le micro-contrôleur.

A noter que dans un monde purement numérique, les modules blocks pourraient probablement être remplacés par de la communication par le port série,  mais l’objectif final est bien de tester l’interface avec le système de gestion conventionnel.

Test d’un moniteur I2C OLED

Affichage LCD 2×16 caractères

Lors de la dernière saison, un affichage LCD de 2×16 caractères complété par 4 boutons de navigation avaient été testés comme pupitre rudimentaire. Outre un graphisme limité, cet affichage et les 4 boutons de navigation mobilisaient 10 canaux du micro-contrôleur.

Ecran OLED 0.96′

La nouvelle saison de tests a commencé par la prise en main d’un écran de moins de 2.5 cm de large (128×64 pixels). Intégré au bus I2C, il ne mobilise plus que les 4 canaux nécessaires aux boutons de navigation. Sa librairie permet des graphismes plus élaborés, mais attention à ne pas multiplier les fontes, car elles occupent de la mémoire sur le micro-contrôleur. Malgré sa petite taille, l’écran reste très lisible. Au niveau de la programmation, les procédures graphiques doivent être bien séparées des autres procédures d’entrées-sorties… un bien pour une programmation plus structurée!

Sur ce test, la ligne du haut présente l’état des blocks de chaque côté de la gare et le mode d’utilisation de la gare, la zone du bas présente les 4 fonctions des boutons. L’affichage est complété au centre par un indicateur de vitesse, du sens de marche de la gare et d’itinéraire. Sur la photo, le block de gauche est réservé sortant avec un feu vert de sortie. Au passage sur le détecteur, le block deviendra verrouillé. Le block de droite est libre.

L’interface block en gare

Interface block en gare

Ce module est essentiellement composé de relais pour convertir les signaux de la liaison 15 pôles (0-12V) en signaux TTL pour le micro-contrôleur. De plus, les signaux provenant du block doivent être galvaniquement séparés de la gare. Pour limiter le nombre de raccordements entre le module et le micro-contrôleur, un module d’extension MCP 23017 (testé lors des épisodes précédents) rassemble les entrées-sorties de la carte. Un module ULN 2803A amplifie les signaux de commandes.

Erreur de débutant

Lors des premiers tests de la carte interface, le block a été remplacé par des interrupteurs. Leur action entraînait irrémédiablement un blocage du micro-contrôleur… Erreur de débutant: il se produit une surtension lors de l’ouverture d’une charge inductive. Cela est le cas lorsqu’on pilote des relais. L’installation d’une diode dite de roue libre permet de protéger l’électronique de cette surtension. Ce composant est intégré au module ULN 2803A, ce qui m’avait évité tout problème lors de mes montages en 2021, mais il était à prévoir pour des relais actionnés directement par contacts ou autres interrupteurs!

La carte “demi-block”

Carte demi-block

Dans le respect de mon principe “un connecteur-une carte”… et par simplification pour le test envisagé, une carte “demi-block” est créée. Les entrées-sorties sont reprises directement sur le micro-contrôleur de l’extension 2022. Les commandes sont également amplifiées par un ULN 2803A. Comme toute la carte et les retours de la gare sont sur la même alimentation, les signaux 12V en retour de la gare sont convertis en signaux TTL par des condensateurs. Le signal mis à la masse par la gare est directement repris par le micro-contrôleur qui dispose d’une option pull-up intégrée.

Premiers tests en simulation

Ecran OLED Extension

Le micro-contrôleur de l’extension est programmé pour gérer le block et l’extension (Pleine voie et les 3 zones d’arrêt). L’utilisation de l’écran OLED et l’adaptation des procédures graphiques du premier test permettent de disposer rapidement d’un outil de mise au point intéressant. 

Gestion automatique d’un réseau ouvert

greffe de l’interface block sur le réseau 2021 (programmation)

platine laboratoire de commande de l’extension

Le défi le plus intéressant de cette saison la mise en place d’une gestion automatique de la gare avec une extension”ouverte”. Lors de tests de 2021, le cycle automatique était essentiellement un enchainement séquentiel des étapes dont il suffisait de déterminer l’étape initiale à la reprise du cycle.

Comme l’opérateur d’une gare en réseau ouvert, le micro contrôleur doit gérer 3 éléments.

  • Entrées
  • Sorties
  • Communiquer sa saturation aux gares voisines pour conserver des options de sorties. C’est souvent ce qui est oublié par les opérateurs et conduit à des situations…compliquées!

Saturation de la gare

Analyse des situations

L’analyse des blocks verrouillés entrants et de l’état d’occupation des voies définit la saturation de la gare. Elle pourrait être affinée en ne la définissant que vers une des deux gares adjacentes.

Si les deux voies sont ou vont être occupées dans le même sens, il ne faut pas admettre de convoi du côté opposé. (Situation 1,2 et 3).

Les situation 2 et 3 sont en fait des anticipations de la situation 1.

Le côté gauche du réseau test (ouest) peut poser problème. Saturée avec une seule composition, elle doit de toute manière envoyer un train vers la gare… et la gare devra forcément le faire suivre à l’Est, cela revient à anticiper d’un niveau supplémentaire.

Cette analyse impose de mémoriser le sens d’arrivée sur les voies.

Extrait du code définissant la saturation de la gare de passage

Recherche des mouvements possibles

En phase de repos (itinéraire libre ou voie=0), le micro-contrôleur analyse les entrées possibles en fonction des annonces de blocks (signal Entrée possible) et des occupations des deux voies. La voie 2 est occupée en priorité.

Pour les sorties, La priorité entre la voie 2 ou 3 est définie selon “l’heure de départ” définie à l’arrivée des convois. Puis l’itinéraire dépend du sens souhaité (maintien du sens de réception) et de l’état du block correspondant.

Dans les deux cas, la recherche aboutit à une proposition d’itinéraire et de sens de marche appelant les routines existantes pour le mode Exploitation. Ces dernières peuvent encore annuler les opérations si les conditions ont changer pendant l’établissement de l’itinéraire.

Routine de recherche d’itinéraire
Routine de définition de sortie

Dans un premier temps, les platines de blocks, et le code a été testés en simulation avant de passer sur les rails.

Gestion de compositions en pousse

Bien souvent, la gestion des entrées en gare passe par un tronçon de voie isolé, non alimenté tant que le signal d’entrée ne passe pas au vert, sur lequel s’immobilise la locomotive privée d’énergie. Cette solution n’est pas satisfaisante avec des compositions en pousse qui une fois ou l’autre se retrouveront voiture-pilote en tête.

La norme de block du club Train-Passion comprend depuis peu la communication au block de l’état du signal d’entrée ce qui permet de couper la traction en pleine voie.

Pour ce faire, il convient de détecter correctement l’entrée d’une composition. Pour ne pas multiplier les aimants sous les compositions, le club Train-Passion a choisi un système de barrière optique. Pour ma part, j’ai choisi de tester la détection de présence sur le tronçon à l’aide d’un montage de diodes et optocoupleur.

Montage de détection de voie

Les locomotives et voitures-pilotes d’ancienne génération (Arst 151-152) sont détectées dès l’entrée du premier bogie. La prise de courant de ma dernière acquisition (Ast 117) est plus problématique. La prise de courant est répartie sur les deux bogies, ce qui évite par ailleurs des éventuels courts-circuits lors de passages entre modules de traction mal gérés, et l’éclairage à LED nécessite un minimum de tension sur le tronçon de détection pour en dépasser le seuil de conduction. En théorie, la détection n’est possible que quand le deuxième bogie entre sur le tronçon isolé… cela na pas toujours été le cas lors du test.

Les dessous de l’Ast 117

Cette adaptation permet également d’arrêter une double traction sans patinage de la deuxième machine.