Je n'avais pas fait marcher mon réseau Jouef depuis mon enfance, c'est-à-dire depuis les années soixante.
A mon arrivée en retraite, j'ai eu envie de le compléter et d'y introduire un peu d'électronique, mais je voulais réutiliser le modèle de train Jouef de mon enfance : modèle vendu autour de l'année 1960, sur voies avec ballast intégré et locomotives alimentées en tension continue de 6V maximum, pas de bandages anti-dérapants sur les motrices, donc impossibilité de tirer des convois très longs. Ce type de matériel comporte aussi pas mal de limitations en terme de topologies de réseau réalisable : pas de croisement oblique, seulement des aiguillages droite ou gauche d'un seul modèle, rayons de courbure unique, etc...
Mais il présente néanmoins des qualités certaines en terme de robustesse.
Même si je suis admiratif des prodiges de certains en terme de réalisme ferroviaire, pour mon réseau personnel, je ne recherche pas en priorité le modélisme hyper-réaliste, notamment en terme de décor.
Il me fallait aussi garder un réseau assez facilement démontable, cela excluait donc un système trop automatisé, en raison de toute la filerie qu'implique le cantonnement.
Le pilotage des locos et des aiguillages, sans filet, a toujours eu ma préférence : essayez; il faut beaucoup de préméditation et de concentration pour éviter les catastrophes sur un réseau devenu un peu compliqué où suffisamment de convois circulent.
D'idée en idée, je suis allé beaucoup plus loin que je ne l'imaginais au départ.
Toutes les modifications réalisées sur le matériel sont réversibles.
J'ai conçu un montage électromécanique nécessaire pour motoriser tous les aiguillages. En raison de mon prérequis de démontabilité, tout le mécanisme est visible sur le plan de travail. Mais il ne serait certainement pas trop difficile, pour ceux qui le préfère, de cacher toute la machinerie sous la table.
Enfin, j'ai équipé les locos de décodeurs DCC afin de pouvoir piloter chaque loco individuellement quelque soit la voie sur laquelle elle circule, en présence ou non d'autres locomotives. Un grand merci à Rodolphe pour ses conseils et son appui dans cette mise en oeuvre.
Le réseau comporte 48 aiguillages qui permettent de circuler sur 5 itinéraires principaux et de passer de l'un à l'autre, quelque soit le sens de marche. On peut aussi déterminer les circuits de passage en gare, les voies de garage traction et la circulation dans une sorte de gare de triage. Le circuit comporte environ 70m de voies.
Les aiguillages sont pilotés par une sorte de TCO . La manœuvre des aiguillages est pilotée par des interrupteurs ou un encodeur rotatif :
- un interrupteur commande 1 ou 2 aiguillages (une paire pour un changement d'itinéraire, par exemple) ;
- un encodeur rotatif est utilisé pour la 'gare de triage' : on choisit entre 0 pour l'évitement de la gare, et une des 8 possibilités de voies de formation. Suivant le choix de la voie demandée et la position antérieure des aiguilles, c'est de 2 à 8 aiguillages dont on peut provoquer les mouvements simultanés en validant la voie choisie. On réduit ainsi le nombre d'interrupteurs nécessaires et on simplifie beaucoup le pilotage.
Le TCO est bâti sur un Arduino Uno entouré de modules expandeurs d'entrées-sorties (2 x 16 voies pour les interrupteurs) et de modules expandeurs PWM (3x16 voies) pour la commande des servos-moteurs des aiguillages. Un écran LCD (2 lignes) permet d'avoir un retour sur le choix demandé, avec affichage de tous les aiguillages en mouvements.
Le mouvement des aiguillages est lent. Pour chaque servo, sont définis 4 points de courses réglés individuellement, de façon à passer, dans chaque sens, par une position de course extrême, avec un bon forçage mécanique, puis placement dans une position de repos avec effort et consommation réduits. Le réglage des 4 points de la course de chaque aiguillage est obtenu dans un mode particulier de fonctionnement du TCO; il est manuel et tient compte de l'intensité consommée par le servo; il nécessite deux encodeurs rotatifs; les valeurs validées des courses sont mémorisées en EEPROM.
La génération des signaux DCC pour la traction est obtenue par un autre boîtier. Celui-ci est également basé sur un Arduino Uno entouré d'expandeurs d'entrées-sorties (4x 16 voies), car chacune des 8 locomotives possibles possède pour elle-même tous les interfaces 'hard' de son pilotage :
- un encodeur rotatif pour la consigne de vitesse (équivalent à deux contacts tout ou rien),
- un bouton poussoir d'arrêt d'urgence,
- un bouton poussoir de choix du mode: soit mode immédiat pour lequel la commande de vitesse réplique immédiatement la consigne (utile pour les manœuvres), soit un mode différé avec rampe pour rejoindre la valeur de consigne (utile en circulation);
- un bouton poussoir pour le changement de sens; une demande d'inversion de marche programme la rampe pour un arrêt progressif; il suffit de tourner l'encodeur pour repartir après l'arrêt;
- un bouton poussoir permet d'allumer ou d'éteindre un feu en cabine.
Il faut donc gérer 6 contacts tout ou rien par locomotive, soit 48 en tout, sans compter d'autres contacts annexes nécessaires. Cela commence à compter... surtout avec un Uno.
L'utilisation des feux de marche serait possible avec le décodeur, mais les modèles de locomotives n'ont pas été pré-équipés de leds pour cette fonction (pas de leds, en 1960!) et l'installation a posteriori de leds aurait largement dépassé mon savoir faire en micro-maquettisme.
D'autres fonctions sont aussi prévues comme la définition de paires de locomotives couplées en tandem : un seul jeu de boutons et d'encodeur permet de piloter le tandem en dupliquant toutes les commandes convenablement.
Le code nécessaire au fonctionnement des deux boîtiers fait largement appel aux bibliothèques fournies avec l'Arduino (gestion d'interruptions sur n'importe quel port d'entrée-sortie, timers, anti-rebonds) et les modules utilisées (2 types d'expandeurs, écran LCD, encodeurs rotatifs, bibliothèque DCC, ...), mais certaines ont dû être modifiées (notamment car l'emploi du bus I2C pour la communication avec certains modules, ou l'usage, par défaut, du même timer pour la bibliothèque DCC et d'autres bibiothèques rend certaines inutilisables sans aménagement). La bibliothèque DCC a dû être légèrement adaptée pour obtenir un fonctionnement fiable, et même si tout fonctionne correctement, une optimisation reste encore possible et est planifiée.
Le passage des 6V d'origine au 12V du DCC ne pose aucun problème, à condition de brider convenablement l'échelle des consignes de vitesse. Il faut remarquer que pilotées ainsi en DCC, les locomotives fonctionnent mieux qu'avec leur alimentation d'origine (tension redressée mono-alternance, si, si).
On a la possibilité d'obtenir des ralentis très réalistes et la précision de réglage des vitesses rend possible la circulation à la queue leu-leu de plusieurs convois sur le même itinéraire. Mais, en l'absence de cantonnement, la vigilance (et la disponibilité de l'arrêt d'urgence) s'imposent néanmoins.
La version Uno de l'Arduino a montré une capacité suffisante pour gérer ces traitements qui commencent à devenir lourds; cela a été rendu possible en optimisant bien l'exploitation de ses possibilités : gestion de toutes les actions de l'utilisateur par interruption, soin apporté à l'économie de la mémoire utilisée par les variables ou sram, modélisation de certains comportements critiques ou complexes par diagramme d'état-transition, etc...
La réalisation pratique du montage réclame du temps, en raison notamment du grand nombre de contacts à câbler pour l'interface homme-machine. Mais pris avec méthode et soin, le montage n'est pas trop difficile. En raison de quelques déconvenues rencontrées avec mes toutes premières versions, j''ai consacré une grande attention à la qualité du blindage électromagnétique des montages (boîtiers, câbles, séparation des alimentations,etc...). Mine de rien, l'environnement électromagnétique d'un réseau miniature est assez bruité.
Il ne me semble pas qu'il existe beaucoup de réalisations commerciales qui proposent cette possibilité de commander 8 locos en parallèle, avec pour chacune, tous les boutons nécessaires au pilotage en direct. Sans cette disposition, il serait difficile d'avoir la réactivité nécessaire pour piloter un tel réseau en se privant volontairement de la sécurité apportée par le cantonnement. C'est cette réactivité que je recherchais, précisément.
Après cette présentation, si certains souhaitent des informations ou précisions complémentaires, je pourrai volontiers les leur communiquer en développant certains aspects ou en rentrant dans plus de détails (architecture, composants électroniques, circuits imprimés, logiciel, mécanismes, etc...).