“Epatan” : éclairage pseudo-aléatoire
de trains allumés la nuit (sous DCC)
par “PatRuff”
Après la fabrication du klaxon KLX, PatRuff se trouvait à la tête d'un stock de... un 12F629 inutilisé. Aussitôt, il réfléchit au montage ci-dessous, se prit la tête pour des raisons aussi diverses que passionnantes, puis — en bon ptitrainiste — nous narra son aventure...
Enfin le voilà monté, cet éclairage de voiture voyageurs... ! Ce qui me réjouit avec le 12F629, c´est qu´il est tout petit, et donc relativement facile à intégrer dans du matériel roulant.
[N.D.L.R. 12F629 et 12F675 sont quasi identiques et interchangeables pour ces petites applications. Cf. l'encadré de la page KLX.]
Au départ, j´avais acheté deux 12F629, craignant d´en faire fumer un au cours de mes premiers essais. Une fois le klaxon monté dans la CC-72000, je me suis demandé ce que je pourrais bien faire du deuxième. Comme j´avais prévu de mettre l´éclairage dans des voitures voyageurs, pourquoi ne pas faire que les passagers entrent et sortent des compartiments ou des toilettes au gré du temps, avec un scénario “plausible” ? Ce sont des voyageurs écologistes avant l´heure, ils éteignent la lumière en partant...
Comment faire un scénario “plausible” ? Le 12F629 ayant 5 sorties au maximum, changer l´état d´une sortie choisie aléatoirement, ensuite attendre un temps aléatoire (entre 1 et 255 secondes par exemple) et recommencer cette opération ad vitam eternam...
Finalement, c´est assez facile à coder. Le plus difficile était de trouver un système qui génère des nombres aléatoires avec le 12F629... Les ennuis commencent. Au début, dans ma grande naïveté, je pensais que lire un timer qui tourne librement me donnerait une réponse à caractère aléatoire... Rien du tout ! Quelques essais avec le simulateur de MPLab me montrent que la séquence de nombres que j´obtiens est désespérément pauvre. Exit le timer, retour sur la théorie des suites de nombres pseudo-aléatoires. Après consultation de la littérature papier et Internet, des collègues, des amis, je m´en sors avec le système qui me paraît le plus simple à coder : la suite X(n+1) = (Xn² + Xn + 1) modulo 256 donne une suite de 128 nombres impairs différents. C´est loin d´être le seul algorithme (au passage, Jidé en a d´autres sous le coude...), mais c´est le premier qui m´a donné satisfaction sans trop de difficultés de programmation.
Quelques explications sur le programme
— Tout tourne dans l´interruption du Timer0. Il est programmé pour se réveiller le moins fréquemment possible : 1 MHz d´horloge, 256 de prédiviseur, 256 de compteur, ceci fait une interruption toutes les 62,5 millisecondes. Il ne faut traiter l´interruption qu´une fois sur 15 pour avoir une activité à (environ) la seconde. À partir de là, le temps restant est décrémenté. S´il tombe à 0, il faut agir : il faut générer un nombre aléatoire à partir du précédent, et on s´en sert pour mettre à jour le délai, et choisir la sortie à inverser. Et le cycle repart.
— Comment choisir une sortie parmi 5  ? Pour faire démocratique, et que toutes aient la même “chance” de sortir du tirage, on prend les bits 1 à 5 du fameux nombre pseudo-aléatoire (donc un nombre de de 0 à 31), on les multiplie par 5 (donc 4 additions avec lui-même) et on les divise par 32 (facile avec un décalage). Tout est fait pour rendre le codage facile.
— Comme il ne faut pas que la séquence commence avec le même scénario à chaque mise sous tension, le programme principal stocke périodiquement en EEProm la valeur du nombre pseudo-aléatoire, et cette valeur est lue au démarrage pour initialiser la suite.
— En gros le scénario complet dure 128 secondes (temps moyen entre deux changements) fois 128 (la longueur de la suite de nombres pseudo aléatoires) soit plus de 4 heures 30... ! Après mise au point, j´ai accéléré l´activité pour qu´elle tourne deux fois plus vite, je la trouvais trop lente. On peut encore la régler plus rapide.
Je me suis inspiré de l´article de Yann Baude dans Loco-Revue n° 705 d´avril 2006 : la voiture mixte fourgon B4D est chargée de la prise de courant, elle a un décodeur DCC qui gère :
les feux de fin de convoi,
son propre éclairage,
l ´éclairage du reste de la rame, qui transite par des attelages conducteurs,
l ´éclairage des toilettes (pour l´anecdote, j´ai eu beaucoup de mal à laisser la dernière sortie inutilisée, et donc j´ai trouvé cette solution : on peut programmer son clignotement à une période de 25,5 secondes maximum, ce qui permet de passer aux toilettes en temps compressé à l'échelle HO... !).
Ce sont les autres voitures du reste de la rame, qui ont donc un PIC, qui nous intéressent ici...
Les schémas, faits avec un P.C. (c'est-à-dire... un petit crayon ) (schéma B4D, schéma B9), le source (epatan01.asm), l´exécutable (epatan01.hex) sont téméchargeables.
Un fichier (Open Office ou Excel) donne les schémas d´implantation et une simulation de la suite des nombres pseudo-aléatoires.

 

Mes errances, mes déboires
La prise de courant sur ces fich... voitures Jouef chinoises : l´essieu n´étant pas conducteur, il faut prendre le courant sur une zone plus excentrée, au niveau de la roue. Bref, le couple de frottement est important, et donc la voiture ne roule plus sans effort. j´ai fini par trouver la bonne référence d´essieu (une roue reliée électriquement à l´axe conducteur, comme sur les bonnes vielles Jouef) au Train magique.
Les diodes led CMS : il faut les coller côté cuivre avant de les souder. Pour les souder, le résultat a été inégal : ne pas trop les chauffer, ces petites bêtes sont fragiles, mais suffisamment pour limiter le temps de contact du fer. En gros une sur dix n´a pas résisté. Un petit coup de disque à tronçonner, on en met une neuve, et ça finit par marcher...
Sur la première voiture, j´ai commencé par la partie électrique avant le décor (peintures intérieures et personnages). Une fois le tout monté, ça éclaire très bien un intérieur en plastique brut : une horreur. J´ai peint et collé les personnages avec des fils partout... Il fallait faire le décor intérieur avant de monter l´électronique.
Le plan de joint entre caisse et toit. Forcément, il n´est pas parfait, de plus les leds sont dans ce plan : inévitablement, un rai de lumière passe — très agaçant ! J´ai finalement mis un profilé de plastique carré (1 mm x 1 mm) collé et peint à l´extérieur des ergots de fixations, en le rognant un peu au niveau de ces ergots (voir photo). Ensuite, il est peint en noir. C´est nettement mieux, mais pas encore parfait : sur les voitures suivantes, je peins aussi la tranche supérieure des vitres en noir côté intérieur...
Les fameux ergots de verrouillage du toit : Suite à de nombreux montages et démontages ( !), ils ont commencé à faiblir : ils ont été renforcés avec le même profilé.
Maintenant que les deux premières voitures sont terminées, je constate avec horreur que les rideaux devraient être des guillotines au lieu d´être sur tringles. Il fallait mieux regarder avant !
Ce qui a bien marché
(Comme quoi il faut lire et relire avant d´agir) :
La préparation de la peinture avec la méthode Doc Toofoo (si, si !).
La colle liquide pour plastique (une première pour moi...).
Le papier calque pour représenter les vitres dépolies des toilettes : très réaliste.
Le papier Canson blanc ou clair pour cacher le cuivre au plafond. Les trous en face des leds se font à l´emporte-pièce de cordonnier.
Le papier Canson beige pour les rideaux (la couleur et la texture, pas la découpe...).
Les approvisionnements exotiques
Parfois, j´ai cherché un temps certain...
Les essieux à axe conducteur pour remplacer ceux d´origine : Référence “LU-LIMA-10,4-24,40S” chez “le train magique” à Strasbourg : www.letrainmagique.com/
Les attelages conducteurs : ce sont des Viessmann, trouvé chez www.train-modelisme.com/
Les lamelles de prises de courant viennent de chez C.D.F. : www.cdfinformatique.com/
Les diodes leds CMS, en particulier blanches : www.leds.de/
Les feux de fin de convoi avec leurs diodes leds rouge diamètre 2 mm très pratiques viennent de chez Apocopa, www.apocopa.fr/
Du Veroboard en grande longueur (58 cm !) : au Comptoir du Languedoc à Toulouse (qui au passage, je crois, fait partie du groupe “Électronique diffusion”, mais n´est pas cité dans la liste blanche de Ptitrain).
Voilà, ça fonctionne, il me reste à faire la voiture A4B4, avec le même principe...

PatRuff
25-01-2008

N.B. — Textes, schémas, programmes © PatRuff pour Ptitrain. — Toutes vos remarques et commentaires sont bienvenus, et les pages de Ptitrain ne sont pas statiques : les erreurs sont corrigées sitôt connues, les améliorations, éclaircissements, etc. feront l´objet de mises à jour fréquentes.
Ptitrain, l´e-magazine du train éclectique. — Directeur de la publication : Christophe Franchini.
Rédacteur en chef : Jean-Denis Rondinet