Dernière unité motorisée de notre machine, et pas des moindres, le sélecteur d’ÉTAT constitue l’équivalent du compteur ordinal de nos microcontrôleurs et autres processeurs en silicium. Fondamentalement, c’est le pointeur d’instruction dans le programme qui ici est matérialisé par la table des TRANSITIONS sous la forme d’une feuille perforée.
Ce module a été particulièrement délicat à faire fonctionner, car on va voir dans les explications progressives que c’est un serpent qui se mord la queue. On supposera dans un premier temps que le programme respecte le protocole logiciel, c’est à dire que sur la MATRICE, la ligne qui valide « F » n’a aucune des colonnes de « Tr1 » à « Tr11 » qui est perforée.
♦ Principe de la commutation des TRANSITIONS.
Structurellement, la MATRICE de programme a été limité à 11 colonnes d’instructions, choix arbitraire adopté comme compromis pour séparer suffisamment les colonnes à perforer sur la feuille au format A4. Tenter douze instructions conduisait à un « tassement » incompatible avec la qualité opérationnelle envisagée. Pour sélectionner une instruction parmi onze, il suffit de faire tourner le sélecteur de la Fig.72A sur la position désirée. On suppose ici que le commutateur utilisé comporte onze postes possibles et n’a pas de butée pour sa limitation en rotation. Dans cette exemple l’opérateur à validé la position n°2. Le commun du sélecteur rotatif à onze positions va à l’une des trois sorties de l’unité de LECTURE. Dans cet exemple c’est la sortie « 0 » qui va sur la ligne L2 de la MATRICE et qui y validera les colonnes perforées si la lecture de « 0 » vaut +12V. Comme les transitions sont sélectionnées par programme, il faut les automatiser au moyen d’un moteur qui entraine en rotation une came. Le sélecteur à onze positions de la Fig.72B est matérialisé par une « tranche » de onze Switchs répartis sur une circonférence autour de la came. C’est l’unité qui traite les transitions (Objet de ce chapitre.) qui se chargera d’amener la came sur la position programmée. Toutefois, la LECTURE peut aussi retourner un « 1 » ou un « B » qui chacun vont valider une ligne différente dans la MATRICE. Du coup, pour chaque instruction en cours de traitement il faut trois entrés lignes dans la matrice, et trois « galettes » distinctes telles que celle de la Fig.72B synchronisées sur une came unique. Enfin, l’automatisme doit pouvoir capter les différentes positions possibles pour s’immobiliser sur la transition programmée. Cet impératif impose l’existence qu’une quatrième « tranche » de onze Switchs voisinant avec celles des sorties LECTURE.
♦ Matérialisation du sélecteur rotatif.
Empiler quatre Switch à roulettes comme montré sur la Fig.73 ne pose vraiment aucune difficulté à partir du moment où l’on dispose de vis ØM2 de longueur suffisantes. Par ailleurs, dans le commerce en ligne on trouve très facilement des références ayant une longueur sous tête de 40mm. Les capteurs sont « entassés directement les uns sur les autres, l’empilage est légèrement surélevé par des rondelles d’environ 1mm d’épaisseur pour ne pas que la palette mobile du Switch inférieur ne frotte sur le corps du module. On se doute qu’une came du type de celle de la Fig.64A doit présenter une « hauteur » quatre fois supérieure pour activer l’empilage dans son ensemble. La Fig.74 présente l’heureuse élue très « aérée » pour optimiser le temps d’impression 3D. C’est un bossage qui sera chargé d’activer les quatre capteurs. Toutefois, pour minimiser l’effort nécessaire à fournir par le moteur et soulager du même coup les contraintes dans la came, les deux capteurs du bas sont activés simultanément pour faciliter la conception de la came, mais les deux du haut sont basculés en cascade avec un très léger retard entre chaque « clic ». Naturellement, la forme du bossage est étudiée pour que les quatre Switchs soient à l’état travail quand la came s’immobilise sur le capteur de détection de la position programmée sur la feuille perforée.
On peut observer sur la Fig.74 que cette came présente deux bossages. Celui situé en A constitue la partie active qui va pousser sur les roulettes des capteurs. Celui situé en B est bien plus haut que nécessaire, obligeant pour immobiliser cette pièce sur l’arbre du moteur à utiliser une vis ØM3 présentant un corps de 25mm sous tête. Ce bossage proéminent est prévu assez haut, car j’envisage d’y fixer une aiguille qui sur un cadran indiquera la transition actuellement en cours de traitement évitant d’avoir à ajouter 11 LEDs sur le tableau de maitrise. Ce ne serait pas tragique en sois, toutefois, avec le schéma retenu cette option serait « laborieuse » à ajouter à un circuit déjà suffisamment « copieux ». Les deux trous surchargés en jaune sont prévus pour immobiliser cette aiguille hypothétique avec deux vis ØM2 qui s’ajouteraient s’il le faut à la vis centrale pour « verrouiller » l’orientation par rapport à la came. Sur la Fig.75 la flèche bleue précise le sens de rotation de la came par rapport aux quatre capteurs. On comprend que les deux situés en bas seront activés en premier par le bossage 1. Puis ce sera la zone 2 qui cliquera sur le Switch situé juste au dessus des deux premiers. Enfin, le bossage 3 déclenchera le capteur le plus haut qui engendrera par conception des circuits électriques l’arrêt immédiat du moteur, figeant ainsi la came en position. Dans cette configuration les quatre Switch sont simultanément en état travail et y resteront jusqu’à ce que le programme de la feuille perforée impose de sélectionner une autre transition.
♦ Déclenchement d’une séquence de TRANSITION.
Contrairement à ce qui se fait pour les autres fonctions de la machine, le début de la séquence de traitement des transitions ne commence pas par démarrer le moteur qui fait tourner sa came. C’est en effet ici que le serpent se mord la queue. En effet, si dès que l’HORLOGE valide le traitement des TRANSITIONS on commençait à faire tourner la came, immédiatement les capteurs seraient libérés. Puis durant la rotation, les diverses positions seraient balayées, avec des changements permanents des états sur les sorties de la MATRICE et en particulier de celles correspondant aux colonnes des TRANSITIONS. Le système serait perdu, car dès qu’une colonne serait « captée », la came serait immobilisée en position, cette dernière étant supposée celle désirée.
Naturellement c’est le programme de l’ATmega328 qui gère intégralement la fonction des transitions. Il se charge de mémoriser l’état des sorties de la matrice, la gestion de l’erreur ER 2, et si la Fin est détectée d’effectuer le retour automatique de la came des TRANSITIONS en position initiale n°1. La carte électronique est alimentée par la sortie du bloc secteur p pour qu’elle reste sous tension lorsque le logiciel coupe l’énergie machine sur ER 2. Noter au passage que dans cette version, le Switch 3 sur le rotor de l’HORLOGE système n’est plus utilisé et peut être enlevé. (Il y aura ainsi une sollicitation de moins à chaque tout de la came.) La facilité de programmation génère des possibilités nouvelles. Par exemple sur ER 2, on fait clignoter la LED rouge pour attirer l’attention de l’opérateur.
♦ Schéma complet de la fonction de gestion des TRANSITIONS.
Valse à deux temps pour le déroulement de la séquence de positionnement de la came sur la TRANSITION désirée, la nouvelle approche utilisant une carte électronique équipée d’un ATmega328 rebat les cartes. Notons qu’avec cette technologie, sur la Fig.76 les trois actions chronologiques 1, 2 et 3 d’une ancienne séquence de traitement des TRANSITIONS imposait dix capteurs pour un cycle d’HORLOGE se traduisant par un écartement angulaire de 36° entre chaque position. Mais l’adoption d’un microcontrôleur change la donne, et le Switch 3 ne s’impose plus car dans le logiciel il est devenu inutile d’effacer la mémorisation des sorties de la MATRICE. Il serait possible de ne plus prévoir ce capteur, l’ouverture angulaire entre les neuf micro-contacteurs augmenterait alors à 40°. Toutefois je ne le recommande pas, car cette solution aurait pour conséquence de ne plus pouvoir revenir à la solution « tout relais » si un jour le problème rencontré était résolu. Aussi, une bonne décision consiste à prévoir son emplacement mais ne pas l’assembler sur la plaque verticale de l’Unité Centrale. Ainsi, on élimine une sollicitation à chaque tour, ce qui ne peut qu’augmenter la longévité de l’ensemble mécanique concerné. Ce changement de stratégie ne pénalise strictement pas la rapidité de la machine, car de toute façon la came de l’HORLOGE système doit faire un tour complet à chaque cycle. Cette durée de rotation n’est absolument pas influencée par le nombre des Switch.
Tant qu’à utiliser un micro-processeur pour gérer les TRANSITIONS, autant profiter de la souplesse apportée par la programmation pour prévoir des « petits plus collatéraux ». Déjà mentionné dans le chapitre précédent, la LED rouge qui signale ER 2, clignote pour attirer l’attention de l’opérateur. Ce n’est pas vraiment un bouleversement, juste un petit plaisir, sans compter que c’est l’une de mes rares applications à base d’Arduino pour laquelle la zone mémoire n’est pas saturée. Dans notre cas l’ATmega328 va vraiment se tourner les pouces, car à peine 14% de la zone programme est occupée. C’est un vrai scandale, tous ces « 0 » et ces « 1 » inutilisés, sans compter que rien n’est logé dans la mémoire EEPROM. Bref, le gaspillage formel que l’on retrouve dans tous les systèmes informatisés actuels …
Ceci dit, faire clignoter la LED rouge signalant ER 2 n’a pas été immédiat, car le développement s’est « cogné » à une petite difficulté imprévue. Considérons la Fig.77 A qui présente un circuit ultra banal pour piloter une LED. Pour allumer cette dernière, la sortie binaire A1 doit fournir un état logique « 0 » soit un niveau électrique GND. La LED est alors soumise à une tension entre ces bornes de +12Vcc qui impose une résistance de limitation de 47kΩ. Pour éteindre cette dernière, A1 doit présenter un état logique « 1 » soit +5Vcc. Du coup la LED est encore sous 7Vcc de tension et reste notablement lumineuse. Pour tourner cette nouvelle difficulté, on a comme le présente la Fig.81 B intercalé une diode Zener DZ qui engendre une différence de potentiel à ses bornes de 6,2V quant A1 est à « 1 ». La LED est alors soumise à 7 – 6,2 = 0,8V totalement insuffisant pour la rendre conductrice. Elle est alors parfaitement éteinte. Pour qu’elle s’illumine, A1 revient à l’état logique « 0 » et au niveau électrique GND. Mais dans ce cas la LED n’est plus qu’à 12 – 6,2 = 5,8Vcc. Pour retrouver une brillance correcte il faut alors diminuer la résistance de limitation de courant à 10kΩ d’où le schéma définitif de la Fig.77 B.
Pour clore cette parenthèse, le logiciel fait clignoter la LED rouge ER 2 durant cinq secondes à la mise sous tension. Cet artifice étoffe un peu le protocole de mise en Å“uvre de la machine en confirmant à l’opérateur que la carte Arduino a bien effectué son RESET. (Et puis c’est un moyen de consommer quelques octets de plus avec le programme !) Autre modification « pertinente » apportée à l’ensemble : Une utilisation plus rationnelle du galvanomètre. La position qui visualisait la tension sur les condensateurs de la fonction LECTURE n’était pas vraiment utile sur le plan « informationnel ». Aussi, actuellement cette position est devenue 5V sur la face avant, et l’on mesure maintenant la tension en sortie +5Vcc du régulateur de tension intégré sur la carte Arduino NANO. C’est une information patente de la bonne santé de la petite carte électronique alimentée par le +12Vcc de la machine.
La suite est ici : 12) Le tableau de maîtrise..