C04 — L'affichage du TCO
mardi 15 décembre 2020
Nous avons présenté dans le précédent article le système permettant de rendre tactile un TCO et déclencher un mouvement d'aiguille, juste par le toucher. Nous allons voir ici comment je compte réaliser l'affichage proprement dit représentant les voies et les positions des aiguilles.
Là aussi, les solutions retenues par les amateurs de trains miniatures ne me satisfaisaient pas totalement en ce qui concerne la représentation des voies. Chacun s'impose des contraintes, pas forcément rationnelles du reste, en fonction de ses envies propres. Moi je voulais que les voies de gare accessibles par un train soit éclairées de manière à visualiser directement l'itinéraire que va suivre un train lorsqu'il emprunte les voies concernées. Je souhaitais également que la position des aiguilles (droite/gauche) soit indiquée par un voyant. Tout se complique lorsque j'ai souhaité que la représentation graphique de la voie soit lumineuse sur toute sa longueur et non pas de façon discontinue par des leds réparties sur sa ligne ! Cette dernière solution ne me plaisait pas et conduit bien sûr à beaucoup de leds. Des solutions avec un éclairage par points existent comme
celle envisagée par Jean-Luc sur son blog. J'ai creusé le problème pour trouver une solution donnant un éclairage continu des voies.
Dans un premier temps mes essais ont porté sur l'idée de conduits de lumière. On voit de tels systèmes dans le domaine commercial pour des panneaux d'annonces ou autres affichage. N'ayant sans doute pas les bonnes technologies, les résultats se sont avérés décevants avec un trop fort affaiblissement de la lumière. Et puis j'ai découvert les cordons et rubans électroluminescents.
On en trouve encore ici mais jusqu'à épuisement des stocks. J'imagine qu'ils sont disponibles aussi ailleurs.
Rubans et cordons électroluminescents
Les photos donnent d'emblée une idée de cet objet. Sur la photo de gauche le ruban de 5 m est alimenté et produit une belle couleur bleu uniforme. La photo de droite montre le même ruban éteint La partie lumineuse fait 6,35 mm (un quart de pouce). Il y a de chaque côté une bordure de plastique qui porte la largeur totale à 12,7 mm (un demi pouce). Ces rubans peuvent être coupés à la longueur que l'on veut et collé pour dessiner le tracé des voies. Chaque morceau doit recevoir une connexion électrique pour être alimenté de manière indépendante. L'alimentation doit se réaliser avec des tensions alternatives assez élevées. Un branchement directement sur le secteur permet d'illuminer le ruban pour tester. Toutefois le résultat est bien meilleur en utilisant des fréquences supérieures à celle du secteur. Ici pour les essais le ruban est entier tel qu'il m'a été vendu et fait 5 m de long, de quoi en principe dessiner tout mon TCO. Il est alimenté par un circuit électronique délivrant une PWM (signaux rectangulaires) à la fréquence de 1 kHz et sous une tension de 200V. D'un point de vue électrique, le ruban se comporte comme un condensateur de quelques nF. Le courant consommé dépend de la longueur alimentée. Ce courant reste faible. La luminosité ne dépend pas de la longueur de ruban alimentée si l'alimentation est capable de délivrer le courant.
Le ruban est constitué de deux bandes luminescentes parallèles sur toute la longueur. Du point de vue électrique deux morceaux de ruban alimentés en parallèle reviennent au même que le morceau complet avant découpe. Le tracé de mes voies va être réalisé en collant des morceaux représentant chaque élément de voie ou d'aiguille et en les alimentant séparément et en parallèle.
On trouve aussi des cordons électroluminescent dont le principe électrique est le même mais se présentant sous forme de fils de quelques millimètres de diamètre qui peuvent être coupés à la longueur souhaitée. Pour mon usage j'ai trouvé les rubans plus commodes à utiliser.
Cette technologie n'a rien à voir avec les diodes électroluminesctes (led) qui travaillent en basse tension. Ces rubans sont constituée de matières émettant de la lumière lorsqu'elle est soumise à une tension électrique. Les difficultés de mise en œuvre sont la tension de 200V et la fréquence de 1000 Hz ainsi que la connexion d'électrode pour alimenter. Je présente ici les solutions que j'ai retenues.
L'affichage de mon TCO va comporter plusieurs types d'éléments lumineux qui seront présentés ici :
— les rubans électroluminescents pour l'affichage du tracé des voies ;
— les leds indiquant la position des aiguilles ;
— les leds indiquant l'état des dételeurs.
Les leds vont jouer deux rôles. Leur couleur va refléter si l'aiguille est à droite ou à gauche mais aussi va indiquer les zones tactiles du TCO afin de guider l'utilisateur et savoir où l'on doit toucher pour changer une aiguille. Même chose pour les dételeurs.
Le TCO de Villard d'Avers va comporter 72 tronçons de ruban et 35 leds bicolores. L'électronique de commande est donc assez complexe.
L'alimentation des rubans
L'ensemble du TCO va être piloté par une carte à base de microcontroleurs PIC, carte connectée comme il se doit sur le bus CAN de mon réseau pour communiquer avec le système. Un PIC de la carte fournit des signaux rectangulaires en opposition de phase sur deux de ses sorties, PWM à 1 kHz. Le signal obtenu est envoyé sur l'entrée d'un pont en H (L293D) afin d'avoir la puissance nécessaire.
Suite à des essais, j'ai réalisé moi-même le transformateur en rebobinant un ancien transformateur de récupération de manière à avoir la bonne tension en sortie. À la fréquence de 1 kHz, l'armature en fer ne donne pas de bons résultats et c'est mieux sans armature et encore mieux avec un noyau de ferrite lui aussi récupéré. On aperçoit ce transformateur à gauche sur les photos ci-dessus.
Les électrodes d'alimentation du ruban
Différents documents du fabricant montre une connexion à base d'électrodes que l'on glisse à l'extrémité du ruban entre le plastique et les électrodes conductrices. Le ruban m'a été livré aec un tel connecteur. C'est inadapté à mes besoins car le connecteur masque une petite partie du ruban. Ce n'est pas grave pour un usage du ruban complet mais ne convient pas pour les petits éléments de mon TCO.
Je vais procéder en découpant soigneusement le plastique au dos du ruban pour rendre apparentes les électrodes et le contact sera établi par des pistons poussés par une lame de ressort contre le morceau de ruban. Je n'ai pas encore vraiment testé cette fabrication mais seulement réalisé des essais de découpage du plastique. C'est possible avec un scalpel bien aiguisé et en ayant la main légère de façon à ne couper que le plastique et pas les électrodes. C'est de toute façon bien plus facile à faire sur ces rubans que sur les cordons. Pour ces derniers les électrodes sont coaxiales et constituées de fils fins très difficiles à connecter de manière invisible. Ici avec le ruban la totalité de la zone lumineuse reste visible, la connexion se faisant par en dessous de manière totalement invisible.
La surface du TCO est constitué d'une plaque de plexiglas épaisse que j'ai dans mes réserves (récupération). C'est facile à usiner, c'est isolant et plus homogène et dur que du bois.
La commande des rubans
Le fonctionnement en tension de 200V alternative n'est pas sans poser quelques difficultés. Il faut bien sûr des circuit pour assurer l'interfcae avec le PIC qui contrôle tout. Fort heureusement il existe à présent des semi-conducteur travaillant sans problème avec ces tensions là et de pris abordable. Le montage retenu figure ici.
Le triac Z0103MN0 permet de commander un courant alternatif de 1A sous une tension de 600V et coûte 25 centimes (HT). Il faut le piloter par un optocoupleur MOC3063X assurant une totale isolation entre la haute tension et la tension logique de 5V.
Les leds complètent l'affichage du TCO. Leur rôle est double : indiquer l'emplacement des points sensibles sur lesquels on peut toucher le TCO pour activer un dételeur ou changer une aiguille ; indiquer la position d'une aiguille (droite/gauche) ou l'état d'un dételeur (activé/désactivé). Pour assurer toutes ces fonctions, j'ai retenu des modèles de leds bicolores de diamètre 5 mm. Pour le aiguilles ce sont des leds vert/rouge et pour les dételeur des led vert/bleu. La couleur verte est retenue pour indiquer la position sécuritaire de l'appareil. Lorsque tout est au vert les dételeurs sont désactivés et les aiguilles donnent la voie principale sans risque particulier. Pour les aiguilles la position dite sécuritaire n'est pas toujours à droite ou à gauche. cela dépend de la place de l'aiguille sur le réseau. Le principe retenu est que cette position donne la voie principale par oposition aux voies de garage ou secondaires. C'est la position des aiguilles à la mise sous tension du réseau. C'est aussi la position des aiguilles pour laquelle le relais est désactivé et le fil à mémoire de forme du moteur d'aiguille détendu.
Les leds d'affichage
Le schéma présente la disposition des rubans et des leds. Les leds vertes correspondent ici à des aiguilles et la led bleue à un dételeur. Les rayons infra-rouge sont représentés par les lignes rouges du quadrillage. La led est toujours placé juste au dessus ou juste en dessous de l'aiguille. Le point sensible est toujours en alignement vertical et sur le dessin de l'aiguille (juste au dessous ou juste au dessus). Le schéma représente par des lignes noires la marge de plastique transparent des rubans. Je vais sans doute recouvrir la totalité de la surface du TCO par une feuille imprimée et découpée de manière à laisser visible seulement les rubans lumineux et les leds. Cette feuille pourra ainsi comporter des informations textuelles ou autres symboles de repérage. Pour une vue globale de du plan de gare voir
l'article précédent.
Ergonomie
L'ergonomie d'utilisation a été l'objet d'une réflexion de détail en fonction des moyens matériels offerts.
Après analyse nous avons retenu pour l’inter-action avec l’utilisateur le système suivant :
— un seul bouton par aiguille, avec une bascule à 2 états ;
— un seul bouton par dételeur avec une bascule à 2 états.
L’idée de séparer en 2 boutons la commande des aiguilles a été rejetée car elle charge trop le TCO et de plus le nombre de positions est limité par la grille IR.
Il faut clairement indiquer la position de l’aiguille ou du dételeur sur le TCO afin de savoir dans quel état est l’aiguillage. Ceci est réalisé par une led d’affichage présentant 2 couleurs. On peut différencier les leds de dételeurs et celles des aiguilles avec des couleurs différentes.
Le danger d’une commande à un seul bouton est de doubler par mégarde la commande et de ne pas changer d’état. La solution retenue est la suivante :
1°) l’utilisateur met le doigt sur la zone sensible : la led associée clignote rapidement en présentant les deux couleurs en alternance.
2°) l’utilisateur retire le doigt : cela valide la commande, la led ne clignote plus et change de couleur indiquant le nouvel état.
3°) Si l’utilisateur est dans le cas 1°) et souhaite annuler, il pourra d'un doigt couper un 3e rayons IR. Dans ce cas la led cesse de clignoter et reste de la même couleur. L’ordre n’est pas exécuté.
Avant de passer dans l’état 2°), on peut rencontrer un état intermédiaire 2bis°) : l’ordre a bien été validé mais le système diffère le changement de l’aiguille le temps que la sécurité l’autorise. On peut refléter cet état par un clignotement de la led dans la couleur qu’elle va prendre une fois la commande validée par Caniche et indiquer ainsi la future nouvelle position. Le clignotement cesse dès que la validation a eu lieu et que l'aiguille a effectivement changé.
C'est en fait la partie la plus avancée du projet puisque les circuits imprimés sont gravés et montés, les programmes presque entièrement écrits et le débogage en bonne voie. J'en suis précisément à un point où il va me falloir construire le TCO pour pratiquer la suite des tests.
La commande indépendante de 72 rubans exige une surface de circuit imprimé non négligeable. Les tarifs préférentiels lorsqu'on grave des cartes de 10 x 10 cm en plusieurs exemplaires identiques m'ont conduit à réaliser l'électronique sous forme de 2 cartes, dont l'une est utilisée en 3 exemplaires. La carte N° 1 est la carte principale qui réalise les calculs, la communication avec le bus CAN et détecte les inter-actions avec le cadre IR. La carte N°2 est uniquement dédiée au pilotage des rubans en haute tension. Cette carte pilote 24 rubans. La conception modulaire me permet d'en utiliser 3 montées en cascade pour piloter jusuqu'à 72 rubans. Il serait possible d'en ajouter encore plus, il y aurait juste à changer une constante dans le programme. Cette séparation en deux cartes présente l'avantage de mettre le 200V à l'écart de la partie logique qui se situe sur la carte principale N°1.
Le nombre très important des éléments à commander impose de réaliser des commandes multiplexées lorsque c'est possible. Il a cependant fallu prévoir 2 PICs sur la carte N°1 pour arriver à tout gérer. Outre les 72 rubans il y a aussi les 35 leds bicolores d'affichage (ce qui en fait 70 en réalité), les 32 leds infra-rouge et les 32 transistors. Le PIC doit également délivrer les PWM pour produire la tension de 200V à 1 kHz. Sans oublier les ports pour la communication CAN. J'ai finalement retenu l'utilisation d'un PIC 18F46K80 (40 pattes) et d'un plus petit de la même famille le 18F26K80 (28 pattes).
Le 18F46K80 contient le programme principal qui dirige l'ensemble des opérations. Le 18F26K80 contrôle uniquement l'allumage des leds bicolores du TCO.
L'électronique de commande
Commande des voyants à leds bicolores
Les 35 leds bicolores sont pilotées en charlieplexing et aussi en multiplexing. Le traitement est le même pour les leds des aiguilles et celles des dételeurs. Seule leur couleur est différente. Le charlieplexing simple utilisé ici consiste à commander les deux leds d'un même boîtier en changeant le sens du courant. J'ai choisi des led bicolores à deux électrodes pour cela et non pas à deux électrodes. En branchant +/– on allume la verte et en branchant –/+ on allume la rouge du même boîtier. C'est facile à faire puisse qu'un pic est capable par ses entrées/sorties de sortir ou entrer du courant. Par ailleurs les leds ont été disposées d'un point de vue électrique selon une matrice de 8 x 6 ce qui permet de commander 48 leds doubles (j'ai donc une marge de sécurité si je veux augmenter le nombre de leds du TCO). Le principe est le suivant une colonne et une ligne seulement sont alimentées en polarité opposées. Seule la led associée à l'intersection de la ligne et de la colonne va s'allumer. Cette disposition permet avec seulement 6+8 sorties de commander 6*8 éléments. La contrainte est de n'alimenter qu'une seule ligne et une seule colonne. Si l'on cherche à allumer en même temps deux leds de la matrice, d'autres leds non désirées vont s'allumer en plus des deux ou même on peut provoquer un court circuit. Ici en principe toutes les leds doivent être allumées (d'une couleur ou d'une autre). Le multiplexage résoud le problème : on allume une seule led à la fois pendant un bref intervalle de temps puis de la même façon toutes les leds mais successivement. Si le cycle est assez rapide on ne perçoit aucun clignotement. J'ai adopté pour mon programme une période de 100 µs entre deux leds. Le cycle complet se réalise donc en 48 *100 µs = 4,8 ms. L'illusion est parfaite et l'œil perçoit toutes les leds allumées à la fois de la couleur qui convient. Cette technique bien connue a aussi été utilisée pour
les cartes d'éclairage du décor. C'est le PIC auxiliaire 18F26K80 qui réalise ce travail. Il reçoit via une liaison série les données indiquant pour chaque led son état. En fait le PIC principal envoi l'état de toutes les leds en permanence à intervalle régulier très bref, même si aucun changement n'a eu lieu ! C'est un algorithme robuste et auto-correctif en cas de problème de transmission. Le nombre de données est assez réduit puisque l'état d'une led nécessite seulement 3 bits (codage de la couleur, et mode de clignotement). Il faut ainsi en tout pour les 48 leds seulement 3 fois 6 octets de données.
La mise au point des programmes en particulier la liaison série entre les deux PICs a été réalisée sur un montage d'essai. J'ai utilisé
les montages de test réalisés il y a peu qui me permettent de rapidement mettre en œuvre un PIC pour développer un programme.
Le boîtier en bas à gauche de la photo est un analyseur logique permettant par le port USB de visualiser sur l'ordinateur 8 signaux à la fois sur un montage. Très utile pour vérifier que tout fonctionne bien et que les signaux transmis sont les bons !
Un exemple de ce qu'on peut obtenir sur l'écran de l'ordinateur avec l'analyseur logique. Le logiciel qui affiche les sigfnaux trace les chronogrammes et si l'on associe un décodeurs répondant à une norme de transmission, les données peuvent être affichées de façon plus claire encore. Ainsi sur les lignes du bas on lit les mots de 9 bits transmis sur la laison série entre les deux PICs ce qui me permet de vérifier que les valeurs sont bien les bonnes (Logiciel PulseView).
La matrice de multiplexage utilise 14 ports d'entrée sortie du PIC 18F26K80. Ici seule la colonne 2 et la ligne 3 sont alimentées en les programmant en sortie. L'une en +5V l'autre en –0V. Seule la led tournée vers le haut s'allume.
Les ports marqués Z sont en haute impédance c'est-à-dire ils se comportent comme un interrupteur ouvert. Ceci s'obtient facilement en programmant le port en entrée.
Le PIC principal envoie régulièrement les données précisant comment la led doit s'allumer (couleur et clignotement éventuel). Le PIC secondaire 26K80 ne s'occupe que de prendre ces données pour cycliquement les afficher.
Commande des leds infrarouge et des photo-transistors
L'article précédent concernant la détection du toucher en un point a déjà parlé du multiplexage des leds infrarouge avec tous les avantages que cela procure. Nous allons là aussi utiliser un adressage par matrice. Une matrice de 8 sur 4 est utilisée pour commander les 32 LEDs IR. Ici une difficultée apparaît : il faut pouvoir délivrer des pics de courant de 200 mA. On ne peut donc pas alimenter directement les led IR par les sorties du PIC comme nous l'avons fait pour les leds de couleur. Nous utilisons comme organe de puissance un registre à décalage TPIC6B595N qui donne les 8 lignes de la matrice. Il peut donner les courants nécessaires et d'autre part il permet d'économiser des ports de sortie sur le PIC principal puisque les données lui sont fournies en série sur une seule entrée. Ici la polarité sera toujours de même sens, le TPIC assurant un controle par le retour à la masse. Les 4 colonnes sont quant à elles données par un circuit ULN2074B qui peut lui aussi délivrer des courants élevés et être piloté par 4 sorties du PIC principal. On peut profiter ici d'une particularité du montage afin de commander les photos-transistor également par le TPIC. En effet ce photo-transistor doit être activé en même temps que la led qui lui correspond. il suffit de placer les photo-transistors sur les mêmes lignes de la matrice que la led qui lui fait face sur le cadre. Bien sûr on va ainsi alimenter 4 photo-transistor à la fois mais c'est de peu d'importance car la lecture du rayon IR ne se fera que sur la colonne concernée.
Les points marqué I/O sur le schmé sur reliés à des ports programmé en entrée sur le PIC.
Lorsque la ligne de la led est activée, 4 photos-transistor sont alimentés. On ne teste que le port I/O du PIC correspondant à la colonne de la led.
La commande logique des rubans électroluminescents
Nous avons vu plus haut dans cette page comment piloter les rubans en ce qui concerne la partie haute tension. Voici comment a été réalisée la commande au niveau logique depuis le PIC.
Là aussi le nombre important de rubans (environ 70 éléments) exige des ne pas utiliser directement les sorties du PIC. Comme pour les leds infra-rouge j'ai utilisé des registres à décalage. Le modèle retenu est un SN74HC595N qui délivre des courants de ±35 mA sous la tension logique de 5V. Ils sont bien suffisants pour commander le montage présenté précédemment et attaquer l'optocoupleur du triac. Il est impossible ici d'utiliser du multiplexage. En effet les opto-coupleurs présentent une fonction nommée zéro-crossing circuit qui nécessite une commande permanente. Cette fonction permet de commuter le triac alors que la charge est minimale lorsque la tension alternative passe à zéro. C'est surtout utile pour la commande de circuit consommant beaucoup ou pour des charges inductives. Quoiqu'il en soit, il est très complexe de multiplexer ici les signaux de commande des rubans.
Nous avons mis en place 9 registres à décalage en cascade ce qui nous donne 9*8 = 72 sorties logique pouvant commander les 72 étages de puissance des rubans. Les octets de données sont envoyées par le 18F46K80 en série sur une seule sortie et ressortent en parallèle sur les registres. Lors de l'opération de décalage pour une mise à jour, les sorties des registres ne changent pas. Une fois tous les décalages réalisés, une commande de validation sort d'un coup en parallèle les 72 bits sur les sorties et les y maintiennent jusqu'à la mise à jour suivante. Il n'y a donc pas de problème de clignotement parasite à craindre.
La carte chargée des calculs logiques comporte 2 microcontroleurs PIC, un bus CAN et de nombreuses sorties pour piloter tous les éléments du TCO : leds d'affichage des aiguilles et des dételeurs, rubans électroluminescents, leds et transistor infra-rouge, sortie de tension rectangulaire sous 12V. Les sorties des pics non utilisées sont disponibles sur les connecteur. Ceci autorise des extensions non prévues au départ en adaptant les programmes internes.
La carte logique terminée. Il reste à mettre en place les PIC sur leur support.
Cette carte ne comporte que de la basse tension 5V, et 12V pour la sortie PWM commandant le transformateur 12V—>200V
La partie 200V est entièrement réunie sur des cartes dédiées au pilotage des rubans. Ici une carte en cours de montage. Les optocoupleurs sont montés sur support pour faciliter les dépannages éventuels. Par contre les triacs sont sous forme CMS. Cette carte comporte un connecteur d'entrée véhiculant les signaux nécessaires au fonctionnement des registres. Ces signaux sont aussi disponibles sur un connecteur similaire en sortie ce qui autorise de brancher des cartes identiques en cascade. Ces signaux de sortie sont amplifiés par des buffers minuscules en CMS (IC4, IC5 et IC6 sur la photo de gauche). Les signaux TTL ne peuvent guère se propager correctement au delà d'une vingtaine de centimètres ce qui justifie ces buffers.
La carte de commande de 24 rubans est presque montée.
La première carte est terminée. À gauche les trois registres à décalage. À droite les connecteur vers les 24 rubans. En bas à gauche le connecteur d'entrée de signaux logiques et son homologue en haut pour la sortie vers une carte identique.
Trois cartes sont montées et connectées à la carte logique. Le boîtier noir en arrière plan est un analyseur logique à 16 voies plus performant que le premier mentionné dans cette page. Ses entrées sont connectées sur les registres à décalage afin de vérifier que tout fonctionne bien et retrouver des erreurs de programmation. C'est bien rare que tout fonctionne du premier coup les causes d'erreurs étant nombreuses et pouvant toucher le matériel ou le programme. Le dernier bug trouvé concernait la dernière carte qui ne fonctionnait pas bien mais la faute était à la carte précédente dont un buffer de sortie était mal soudé !
Chronogramme donnés par l'analyseur logique et le logiciel Logic. Les voies 0-8 indiquent les signaux entrant sur chaque registre à décalage. Le dernier canal 9 indique les signaux d'horloge provoquant un décalage d'un bit à chaque impulsion. Ici on voit la propagation des données destinées à allumer 3 rubans pilotés par le dernier registre (bits 2, 4 et 6). (Double cliquer l'image pour une meilleure qualité)
Conclusion
Le projet est en bonne voie et a priori les difficultés principales sont surmontées. Il reste à présent à finaliser en construisant vraiment le TCO afin que cette étude ne reste pas pure théorie. La seule difficulté que je perçois concerne la fixation des rubans avec leurs contacts.
Au départ je pensais réaliser 3 TCO (rien que cela !). L'idée était d'en faire un aussi pour la gare de Clérieux et un pour le dépôt. J'ai décidé de me limiter à un seul pour la gare de Villard d'Avers après la réalisation de la tablette graphique. La place occupé par 3 TCO dans la pièce m'a semblé exagérée et de toute façon n'apportant rien au réalisme. Clérieux ne comporte que peu d'aiguilles et ne possède pas de poste d'aiguillage. Les TCO réels ne sont pas utilisés non plus dans les dépôts pour choisir les voies autour du pont. De toute façon, d'un point de vue pratique, le réseau dispose de la tablette graphique pour piloter les trains et changer les aiguilles (y compris celles de la gare de Villard d'Avers). L'intérêt de la réalisation d'un TCO plus grand est surtout le côté spectaculaire et l'évocation plus réaliste d'un élément présent dans les postes d'aiguillage.
Un article sera bien sûr publié sur ces pages lorsque le TCO sera construit.
Grand merci à Pierre qui m'épaule très régulièrement dans ces aventures électroniques.