02) L’architecture électronique initiale.

Imposé par l’achat d’un KIT commercial, nous n’avons pas vraiment l’opportunité d’effectuer des choix techniques, nous nous contenterons de ce qui a été élaboré par des professionnels. À analyser de près, et sans vouloir minimiser le mérite des concepteurs, l’ensemble est globalement très classique. En effet, nous sommes dans un domaine ou LE MULTIPLEXAGE s’impose de façon évidente. (Ce qu’est le multiplexage sera précisé dans la suite pour les personnes qui ne connaissent pas cette technique relativement banale dans le monde de la logique binaire.) Naturellement, les techniciens concernés ont effectué des choix judicieux pour optimiser la mise en œuvre du microcontrôleur 80C52 qu’ils ont sélectionné pour cette application. Reste que pour les habitués de la logique TTL le schéma qu’ils ont peaufiné est clair, bien réfléchi probablement, et je vais dans ce qui suit vous en détailler rapidement le fonctionnement. Ainsi, que ce soit pour vérifier le bon fonctionnement ou pour « greffer » la carte Arduino, vos diagnostics et vos interventions seront plus efficaces. Mais avant … parlons multiplexage.

Avant le multiplexage : Le décodage.

Banalisées avec l’avènement des premiers circuits intégrés logiques, les techniques de multiplexage consistent à utiliser un seul circuit intégré complexe, donc coûteux, pour piloter plusieurs composants. Par exemple, les afficheurs numériques sur des réveils radio, des calculatrices etc ont « abusé » de cette technique, aussi ce type d’application va nous servir d’exemple. Mais avant de « dispatcher » l’information, il faut en premier la décoder. Considérons la Fig.3 qui symbolise une petite zone fonctionnelle d’une calculette électronique. Sur son clavier vous avez effectué une multiplication, l’unité de traitement 1 doit alors visualiser le résultat sur son écran composé d’afficheurs à sept segments tels que 4. Hors l’unité de calcul fonctionne en binaire. Chaque chiffre à afficher sera disponible sur sa sortie en 2 sous la forme de quatre BITS notés ici traditionnellement A, B, C et D. (Hé oui, à cette époque on « parlait » en Hexadécimal …) À l’une des combinaisons binaire telle que 0110, les poids forts étant à gauche, il faut faire correspondre une combinaison en S qui sur l’afficheur à sept segments 4 va allumer les bons éléments avec les sorties 1,27. C’est le composant électronique 3 qui se charge de cette transposition. On se doute que la calculette va présenter les résultats de ses opérations sur plusieurs « digits ». Par exemple, sur un produit travaillant jusqu’à 999.999.9 l’UNITÉ de CALCULs devra piloter sept décodeurs comme celui montré en 4.

Les secrets du MULTIPLEXAGE.

Solution qui semble la plus naturelle, une quasi évidence consiste à doter l’appareil d’autant de décodeurs tels que celui en 3 qu’il y a d’afficheurs à piloter. Vu sa complexité, sur la « puce » en silicium qui le compose il faut agencer plusieurs centaines de transistors, diodes et autres éléments électroniques microscopiques pour un seul de ces décodeurs. Au début des circuits intégrés de technologie TTL, un tel composant présentait une grande complexité relative et restait coûteux. Aussi, pour diminuer le prix de revient du matériel, l’idée consiste à n’en placer qu’un seul, tous les afficheurs 4 étant branchés en parallèle. Par voie de conséquences, si l’on ne fait rien de plus, ils indiqueront tous le même chiffre. C’est ici qu’intervient la technique de multiplexage dont la Fig.4 illustre l’architecture. On ajoute un circuit intégré de plus en 5 nommé Multiplexeur. Chacune de ses sorties aura pour mission de valider un afficheur élémentaire. Une seule passera en conduction. C’est l’UNITÉ de CALCULs qui par une ligne à plusieurs fils 6 précisera au Multiplexeur quel afficheur il doit activer. Dans notre exemple c’est celui des dizaines. Hors le résultat d’une opération sera exprimé sur plusieurs chiffres et le Multiplexeur ne peut en valider qu’un seul à la fois. La technique consiste à placer en S la valeur d’un digit, de le valider par 6 un court instant, puis passer au suivant.
Dès que le balayage « circulaire » dépasse une certaine fréquence, l’œil humain ne se rend plus compte qu’il y a clignotement rapide et l’on a la sensation d’un affichage stable et permanent. Du reste, si vous secouez une telle calculatrice équipée de chiffres électroluminescents, par opposition à des afficheurs LCD, vous constaterez que le balayage lumineux est « pointillé ». C’est un effet typique d’un système de visualisation multiplexé.

On change d’époque, mais pas de technologie !

Environ un demi-siècle plus tard, réaliser des centaines de milliers de transistors et de diodes sur une puce est devenu banal, on ne compte plus … ou plus exactement on change d’échelle. Aussi, le circuit d’un décodeur tel que celui repéré en 3 devient ridiculement insignifiant, on peut sur quelques millimètres carrés de silicium en loger des populations considérables. Aussi, terminé les multiplexeurs ringards de grand-père … et bien pas tant que ça ! Considérez le microcontrôleur 80C52 qui équipe le KIT dont il est question en page 2. On ne peut pas dire qu’il soit spécialement minuscule. Si vous « explosiez » son encapsulation, vous seriez vraiment étonnés de voir à quel point la « surface électronique » est petite. Ce qui impose les dimensions de ce composant, c’est le nombre de broches situées à sa périphérie, séparées d’un dixième de pouce soit 2,54mm. Avec 40 broches encapsulées, on obtient le gros circuit livré avec le KIT.

Imaginez maintenant, qu’un spécialiste réalise un circuit intégré spécialisé pilotant directement toutes les LEDs du cube. Les cathodes seraient branchées sur une masse commune. Chaque anode serait reliée à une broche de notre 80TRUC52 qui devrait avoir au moins 512 broches. (Sans compter quelques broches de plus pour alimenter en énergie et le programmer.) La Fig.5 présente avec un respect total des échelles, en jaune le boitier 40 broches du 80C52, et en gris un hypothétique 80TRUC52 sur lequel sont répartie à la périphérie les 512 broches pour piloter les LEDs. L’échelle est rigoureusement respectée. (Pour ceux qui ont de la patience, vous pouvez vérifier avec une loupe que chaque coté du carré comporte 128 broches.) Comme c’est le cas des circuits logiques « simples » comme le 68HC11 par exemple comportant un nombre de broches significatif, l’encapsulation n’est plus rectangulaire mais carrée. Le produit 80TRUC52 en question serait aussi grand que la table ! Bref, pour ne pas aboutir à du déraisonnable … on va multiplexer.

Dominer c’est verrouiller.

Piloter 512 sorties avec un microcontrôleur tel que l’ATmega328 qui dispose au maximum de 22 broches d’interfaçage est tout à fait possible, voir « banal ». Il suffit de multiplexer. Dans notre cas particulier, il faut penser « volume ». Nous allons donc multiplexer en largeur, en profondeur et en hauteur. Globalement la technique est assez classique, la particularité dans cette application réside dans la répartition des rôles et la structure géométrique d’organisation des multiplexeurs. Quand on regarde le schéma électronique de la carte du KIT on peut avoir comme un léger vertige, sans compter que sur ce schéma on n’a même pas représenté les 512 LEDs. Pas de panique, vous allez constater que c’est au final d’une simplicité presque évidente. La première étape consiste à comprendre comment fonctionne le multiplexeur de type 74HC573 utilisé dans ce projet. Tous ceux qui se sont fourvoyés dans l’univers binaire et de la LOGIQUE savent que d’une façon générale « tout va par 8 » et que le mot le plus souvent rencontré est OCTET. Le circuit 74HC573 représenté sur la Fig.6 comporte assez naturellement huit lignes verrou. La broche 10 est réunie à GND et 20 va au +5Vcc. Quand la broche 1 est soumise au « 1 » logique, (Donc à +5Vcc.) Les huit sorties S0 à S8 sont en haute impédance, c’est comme si le circuit n’était plus branché. Soudée en permanence à GND, donc en état logique « 0 », le circuit sera constamment fonctionnel. Comme déjà précisé ci-avant, on rencontre huit « verrous » avec pour chacun une entré En et une sortie Sn. C’est la broche 11 qui sert à piloter ce module. Lorsque cette broche nommée Latch Enable sur les documents de caractéristiques est forcée à l’état « 1 », les huit amplificateurs deviennent transparents. C’est à dire que les états logiques des entrées En sont recopiés sur les sorties Sn. Quand cette broche 11 repasse à « 0 », les états présents sur les entrés sont mémorisés et restent figés tant que Latch Enable sera maintenue à l’état électrique de GND. Pour résumer le comportement du circuit 74HC573 il suffit de retenir que ce dernier mémorise sur ses huit sorties les états logiques de ses huit entrées lorsque la broche 11 reçoit une courte impulsion à l’état logique « 1 ». L’impulsion de verrouillage peut être aussi longue que l’on veut. Toutefois, pour des raisons de rapidité de fonctionnement du programme, on va descendre à la µS, ces circuits pouvant sans problème cadencer à plus de 10MHz.

Pas de complexe … on va multiplexer directement « en surface ».

Pour utiliser un vocable populaire … on va se taper une tranche. (Tranche verticale dans le cube.) Avant de chercher à créer une image lumineuse, un petit coup d’œil sur le tableau de la Fig.7 présente les quatre combinaisons possible d’état d’une LED en fonction des tensions appliquées sur ses deux électrodes. Pour les cas 1 et 2 la diode reste sans vie, car la tension aux bornes est nulle. Pour le cas 3 punition analogue, car la différence de potentiel dépasse le seuil de conduction mais se trouve appliquée en inverse. Seule la combinaison 4 engendre l’éclairage du composant car nous avons une tension suffisante et appliquée dans le sens de la conduction. Il importe de noter qu’en inverse il ne faut pas dépasser la tension de claquage sous peine d’endommager le composant. Ici aucun risque car cette tension critique dépasse les 50v. N’oublions pas non plus qu’une résistance sera mise en série pour limiter le courant traversant la diode, car un maximum est spécifié par le fournisseur. Considérons maintenant la Fig.8 qui constitue la base de tout multiplexage croisé. Horizontalement on trouve un 74HC573 piloté en X. Verticalement un deuxième octuple verrou est commandé par sa broche Latch Enable en Z. Par le truchement de ces deux circuits intégrés on devient capable d’allumer individuellement n’importe quelle LED dans cette matrice de 8 fois 8 tout en ne monopolisant que 16 broches d’interfaçage. Examinons la technique utilisée, qui précisément consiste à multiplexer : Dans la structure de ce schéma, on ne peut piloter individuellement chaque diode électroluminescente que sur une colonne, les autres devant rester éteintes. Pour cet exemple, on montre le cas où c’est la colonne la plus à gauche qui est traitée. Le processus est le suivant :
1) On applique des « 1 » sur les huit entrées du multiplexeur X et l’on transfère ces états sur ses sorties par une courte impulsion à +5Vcc sur X. Toutes les LEDs sont alors éteintes, car on force leurs cathodes au positif. (Cas 2 ou cas 3 sur la Fig.7 en fonction de l’état sur leurs anodes.)
2) On applique une combinaison binaire sur les entrées du multiplexeur Z, puis par une courte impulsion à +5Vcc sur Z on mémorise ces états sur les sorties horizontales. Pour le moment l’ensemble des LEDs reste sans vie puisque les cathodes sont toutes au positif.
3) On applique un état « 0 » sur l’opérateur qui pilote la colonne sur laquelle on désire gérer les points lumineux, les sept autres entrées reçoivent un « 1 » pour rendre inertes les LEDs de leurs colonnes.
Immédiatement les LEDs de la colonne de gauche recevant un « 1 » sur leurs anodes vont s’illuminer. Comme tous les état de la matrice sont mémorisés par les octuples verrous, cette situation est statique et durera aussi longtemps que l’on ne modifiera pas l’une des broches de pilotage X ou Z. Hors on désire que toute l’image soit traitée, que tous les « PIXELs » participent au dessin. C’est ici que le balayage « transversal » devient indispensable. On laisse la colonne de gauche illuminées un court instant, par exemple 10mS. Puis on recommence le cycle décrit. On reprend intégralement les trois étapes sauf que pour chaque tranche, en phase 3 on change de colonne. Ce balayage peut s’effectuer librement de la gauche vers la droite ou réciproquement. La seule condition à respecter, c’est qu’il soit suffisamment rapide pour ne pas engendrer un phénomène parasite de scintillement ou de clignotement.

Multiplexons le multiplexage.

Présenter de belles compositions planes verticales, c’est déjà bien pour agrémenter notre sapin de Noël. Par contre, nous sommes encore loin d’atteindre notre objectif de volume. Et bien pas tans que ça, passer à la troisième dimension reste élémentaire. Il suffit tout simplement de faire huit fois ce que montrait la Fig.8 et encore, j’exagère considérablement, car pour le cube lumineux entier un seul multiplexeur « vertical » est suffisant. Voyons ensemble la structure que va prendre le schéma complet, sachant que nous allons nous « contenter » de réaliser huit tranches de LEDs comme celle de la Fig.8 pilotées chacune par un circuit mémoire. Sur la Fig.9 les « tranches verticales » sont repérées de 0 à 7, seuls les deux plans de LEDs extrêmes sont représentés. À la base de chaque plan, la direction X est commandée par les huit verrous binaires intégrés dans un multiplexeur de type 74HC573. Huit composants de cette référence sont répartis dans la direction Y, chacun étant affecté à un plan vertical. Comme le multiplexage consiste intrinsèquement à placer les éléments pilotés en parallèle, c’est ce que l’on fait dans la direction Z. Chaque plan horizontal d’orientation XY sera contrôlé par l’une des huit sorties de l’octuple verrou dont l’encapsulation est représentée ici, symboliquement, en position verticale. Il nous reste maintenant à résoudre l’un des problèmes intrinsèque au multiplexage, la gestion du courant électrique délivré par les multiplexeurs et traversant les LEDs.

Multiplexer c’est avant tout « pulser ».

Considérons la Fig.9 et évaluons le courant que doit fournir chaque opérateur de l’un des multiplexeurs. On va supposer dans ces explications que l’on désire faire fonctionner chaque LED sous 10mA pour obtenir une luminosité importante. Naturellement, nous avons au préalable consulté le document technique des modèles adoptés dans la réalisation. Cette intensité correspond à la valeur « statique » acceptable sans problème par le composant. Quand une telle étude de faisabilité est engagée, il faut toujours la conduire dans le pire des cas qui ici correspond à un cube dont toutes les LEDs sont allumées. Chaque sortie des multiplexeurs 0 à 8 doit fournir le courant simultanément pour huit diodes électroluminescentes soit 80mA. OK, c’est parfaitement compatible avec la sortance des 74HC573. Pour les opérateurs binaires du verrou contrôlant la direction Z, chaque amplificateur doit alimenter l’intégralité d’un plan horizontal soit soixante quatre éléments. Le courant total si chaque individu « pompe » 10mA sera alors de 640mA. OUPS, ça commence à chauffer !
Ce n’est que la partie émergée de l’iceberg. En effet, si vraiment l’on désire que la lumière fournie par chaque élément corresponde à l’intensité de 10mA, il faut tenir compte du mécanisme de multiplexage. Hors le pilotage du cube dans sont ensemble n’est pas statique. Dans la direction verticale on doit balayer chaque plan l’un après l’autre. Quand un niveau est alimenté, nous avons vu que tous les autres sont éteints. Du coup, chaque tranche de direction XY n’est active qu’un huitième du temps. Si l’on veut retrouver la clarté correspondant à 10mA moyen, il faut durant le court instant d’activation multiplier l’intensité fournie par huit. Chaque LED va se voir traversée par un courant de pointe de 80mA et les opérateurs en sortie des 74HC573 devront commuter des courants de 5120mA soit plus de cinq ampères. Autant dire que l’iceberg va fondre et que la fête ne va pas durer longtemps. Qui va casser en premier, une LED ou le multiplexeur ?
Harf harf harf, faut prévenir immédiatement le ministre des cubes 3D …

La suite est ici.