Translab est une procédure en langage Python qui permet de tracer le schéma d'un circuit électronique et de simuler son fonctionnement. L'utilisateur interagit en cliquant sur des commutateurs. Le circuit réagit en allumant des leds et des afficheurs numériques. Le paragraphe qui suit montre des copies d'écran de 18 exemples de circuits tracés en quelques secondes ou quelques minutes et simulés dans Translab. On trouvera ici le lien de téléchargement de la procédure Python translab_18_05.py, avec les 18 exemples de mises en données, exécutables directement. On trouvera ici la documentation pdf pour utiliser Translab : - ouvrir une mise en données existante et l'exécuter, - modifier ou créer une mise en données et l'enregistrer. Le module Python Translab propose actuellement 7 types de composants électroniques sous forme d'objets Python. Il est possible pour l'utilisateur de créer ses propres objets Python pour d'autres types de composants électroniques. Les circuits modélisés et présentés ci-dessous font l'objet de réalisations avec des "vrais" composants, dont on peut voir les photos ici ou là, accompagnées de liens explicatifs.
L'image de la pile Duracell symbolise dans ce qui suit un générateur de tension 5 volts qui est un standard pour les circuits logiques à base de transistors. Lorsque le transistor est "passant", le circuit "principal" part du pôle "plus" de la pile de droite, entre par la borne rouge dans la led verte, suivie par une résistance R2 de 470 Ω qui limite à une dizaine de milliampères l'intensité dans la led, entre dans le transistor par son "collecteur", ressort par son "émetteur" (borne noire), et rejoint la pôle "moins" de la pile de droite. Le circuit de "commande" part du pôle "plus" de la pile de gauche, traverse le commutateur, entre par la borne jaune dans la résistance R1 de 47 kΩ, entre dans la "base" du transistor, ressort par son "émetteur" (borne noire) et rejoint le pôle "moins" de la pile de gauche. Si le commutateur relie la borne jaune au "moins" commun du circuit, le courant qui entre dans la base est alors nul, ce qui bloque le circuit collecteur-émetteur et la led s'éteint. La valeur élevée de la résistance R1 limite la valeur de l'intensité qui entre dans la base, celle-ci devant rester très faible pour ne pas détruire le transistor. L'intensité dans le circuit collecteur-émetteur peut être plusieurs centaines de fois plus importante que l'intensité dans le circuit base-émetteur, ce qui illustre la fonction amplificatrice du transistor. On regardera avec intérêt l'analogie hydraulique du transistor pour bien saisir son fonctionnement. Ce qui nous intéresse ici est que le transistor se comporte comme un interrupteur entre collecteur et émetteur, et que cet interrupteur est commandé par le courant qui entre dans la base. Si ce courant est nul, l'interrupteur entre collecteur et émetteur ne laisse pas passer le courant : la led est éteinte et la tension entre la borne verte reliée au collecteur et la borne noire est de 5 volts. Si le courant qui entre dans la base est faible mais non nul, l'interrupteur entre collecteur et émetteur laisse passer le courant : la led est allumée et la tension entre la borne verte reliée au collecteur et la borne noire est de 0 volt.
On obtient le même fonctionnement que dans l'exemple 1 en utilisant le même générateur pour le circuit collecteur-émetteur et pour le circuit base-émetteur.
En reliant la base d'un transistor (borne jaune) au collecteur (borne verte) de celui qui précède, on obtient une fonction logique non. Dans ce genre de circuit, il n'existe que 2 états pour un point du circuit : état 1 si la tension vaut 5 volts, état 0 si la tension vaut 0 volt. La fonction non produit 1 à sa sortie (borne verte) si son entrée (borne jaune) vaut 0, et elle produit 0 à sa sortie si son entrée vaut 1. En enchaînant plusieurs transistors de cette façon, on obtient sur les collecteurs une succession d'états 1 et d'états 0. L'état du premier transistor est fixé par le commutateur.
Chaque commutateur est relié à la base d'un transistor qui affiche son état, 0 ou 1. Les 2 collecteurs de ces transistors sont reliés à la base d'un 3ème transistor qui affiche l'état des collecteurs qui précèdent : si un des deux premiers collecteurs est à 0, le troisième indique 0 (led éteinte). En construisant la table de vérité de ce circuit, on voit qu'il produit la fonction : s = non ( e1 ou e2 ) en appelant e1 et e2 les états des 2 entrées.
La négation de la sortie du circuit 4 est : s = non ( non ( e1 ou e2 ) ) soit : s = e1 ou e2
Le fonctionnement de ce circuit est conforme à l'égalité : s = non ( e1 ou e2 ) = ( non ( e1 ) ) et ( non ( e2 ) ) qui entraîne :
s = non ( non ( non ( e1 ) ou non ( e2 ) ) ) = non ( ( non ( non ( e1 ) ) ) et ( non ( non ( e2 ) ) ) ) = non ( e1 et e2 )
puisque : non ( non ( e1 ) ) = e1
La construction des tables de vérité des 2 membres de la première égalité permet de s'assurer qu'elle est vérifiée pour les 4 combinaisons des
entrées ( e1 , e2 ) parmi : { ( 0 , 0 ) , ( 0 , 1 ) , ( 1 , 0 ) , ( 1 , 1 ) }
Ce type de composant, appelé circuit intégré, abrite dans un même boîtier un nombre important de transistors pour assurer des fonctions logiques complexes, voire très complexes, pour atteindre 2 600 000 000 000 ( deux mille six cents milliards ) de transistors dans un microprocesseur très performant. Plus le degré d'intégration est grand, plus le coût d'un transistor qui compose le circuit est petit, et plus les performances sont grandes du fait de la proximité des transistors, qui permet de réduire le temps de communication entre eux et d'augmenter la "fréquence d'horloge", et donc le nombre de milliards d'opérations par secondes effectuées par ces circuits. Le circuit 74LS00 est un circuit à relativement faible intégration : il comporte "seulement" 24 diodes, 16 transistors et 28 résistances. Il doit être alimenté avec une tension de 5 volts entre son "entrée +" et son son "entrée -". Ce circuit contient 4 portes logiques "non et". Chaque porte a 2 entrées et une sortie. Dans ce type de circuit, il ne faut jamais relier 2 sorties entre elles, ni relier une sortie au + ou au - de l'alimentation. Les sorties de ce circuit ne peuvent pas délivrer une intensité électrique suffisante pour allumer une led. Il faut utiliser un transistor dont la base (entrée jaune) est reliée à une sortie du circuit 74LS00. Une fiche technique (datasheet) accompagne toujours ce type de composants, en précisant sur quelles "pattes" se trouvent les entrées et les sorties, les intensités et les tensions à respecter, le temps de réponse en nanoseconde, etc. Le coût de ce circuit en 2024 est de l'ordre de 0,70 euro, à comparer au prix d'un transistor acheté à l'unité, de l'ordre de 0,15 euro. Dans le circuit ci-dessus, 2 portes "non et" sur les 4 sont utilisées. Les 2 commutateurs du haut sont reliés aux 2 entrées d'une porte, dont la sortie est reliée au transistor du haut pour afficher son état : 1 si la led est allumée, 0 si elle est éteinte. Il en est de même pour la partie inférieure du circuit
Le circuit 74LS32 contient 4 portes "ou" et ce qui a été indiqué pour le circuit 74LS00 peut lui être transposé.
Ce circuit fonctionne de la manière suivante : dans un premier temps, on doit relier une des bornes du condensateur au +5 volts en manoeuvrant le commutateur. La led est allumée car la borne jaune est reliée au + 5 volts et le transistor est passant. Le condensateur "se charge" très rapidement à travers la base du transistor, un peu comme le ferait une batterie rechargeable, mais de capacité ici très petite. La tension à ses bornes est alors voisine de 5 volts. On manoeuvre alors le commutateur dans l'autre position, ce qui relie cette même borne au "0 volt". La base du transistor (borne bleue, qui n'a encore jamais été utilisée ici) est alors portée à une tension négative, voisine de -5 volts, ce qui bloque le transistor et la led s'éteint. Le condensateur se charge alors lentement dans l'autre sens par le courant très faible qui traverse la résistance R1 de l'ordre de 47 kΩ. Au bout de quelques secondes, en cours de charge, la tension sur la borne bleue redevient positive, ce qui provoque l'allumage de la led. En résumé, en temps normal, la led est allumée. Lorsqu'on commute le condensateur sur le "0 volt", la led s'éteint un court instant puis se rallume. On peut répéter l'opération. Ce circuit s'appelle un "monostable" : il est stable dans l'état "led allumée" et instable dans l'état "led éteinte". Le condensateur est caractérisé par sa capacité en farad (F), ou plus souvent en microfarad. L'ordre de grandeur de la durée d'extinction de la led est le produit noté τ = R1 C , avec R1 = 47000 Ω et C = 0,000047 F = 47 μF , soit τ = 2,2 secondes.
Le premier transistor et le premier condensateur constituent exactement le même circuit monostable que dans l'exemple 9 qui précède. Lorsque la led du premier transistor se rallume au bout de 2 secondes, le collecteur (borne verte) de ce transistor passe à 0 volt, ce qui entraîne l'extinction de la led du 2ème transistor pour également 2 secondes. Lorsque cette 2ème led se rallume, le collecteur du 2ème transistor passe à 0 volt, ce qui provoque l'extinction de la led du 3ème transistor, avant que celle-ci ne se rallume au bout de 2 secondes. On pourrait poursuivre de cette façon avec d'autres transistors et d'autres condensateurs.
L'idée est ici que le rallumage de la 2ème led provoque l'extinction de la 1ère, au lieu d'en éteindre une 3ème. On a donc une alternance de l'allumage et de l'exctinction de la première led puis de la 2ème. Comme cette alternance ne s'arrête pas, le circuit est qualifié d'astable (aucun état stable). Il peut servir à donner le rythme pour une horloge.
Dans l'état d'attente, une led est allumée, l'autre est éteinte. Les 2 commutateurs maintiennent une des entrées des 2 portes "non et" au niveau 1. Lorsqu'on bascule le commutateur du côté de la led éteinte à 0, cette led s'allume, l'autre s'éteint. Lorsqu'on remet ce commutateur à 1, le nouvel état est maintenu. C'est en manoeuvrant l'autre commutateur à 0 puis à 1 que l'état rechange. Comme ce circuit peut rester stable dans chacun des 2 états, il est qualifié de "bistable". On peut l'utiliser pour garder des données en mémoire vive.
Les 7 commutateurs définissent 7 états binaires de valeurs 0 ou 1. Le commutateur le plus à droite définit en binaire le chiffre des unités, de valeur 0 ou 1. Celui juste à sa gauche définit le chiffre des "deuzaines", qui vaut 0 ou 2. Le suivant à sa gauche définit le chiffre des "quatraines", qui vaut 0 ou 4. On continue avec les suivants pour les "huitaines", les "seizaines", les "trente-deuzaines" et les "soixante-quatraines". Ainsi, avec 7 chiffres binaires, on peut représenter tous les nombres de 0 jusqu'à 1+2+4+8+16+32+64 = 127. En base dix, il faut les 3 chiffres 1, 2 et 7 pour représenter la valeur cent vingt sept. En base deux, c'est à dire en binaire, il faut sept chiffres 1 pour représenter ce même nombre cent vingt sept. Les 7 chiffres binaires définis par les 7 commutateurs sont appliqués aux 7 entrées latérales de l'afficheur, qui affiche en base dix la valeur du nombre. Avec 2 chiffres décimaux, on ne peut pas dépasser la valeur 99. Au delà, des tirets indiquent un dépassement de capacité. Le nombre affiché sur la capture d'écran est 53 = 32 + 16 + 4 + 1 soit en binaire : 0110101 avec les unités à droite (regarder les commutateurs à 1 et ceux à 0). Bien comprendre en manoeuvrant les commutateurs dans Translab le passage de binaire à base dix et le passage inverse. Etablir une méthode de conversion. Dans la réalité, l'afficheur double utilisé dans Translab serait obtenu avec un circuit logique de conversion entre les entrées binaires et les 7 segments qui dessinent les chiffres, comme le circuit intégré 74LS247. Compte tenu de l'état actuel de la technologie de la micro-électronique, il est plus efficace, plus rapide et moins coûteux, lorsqu'on veut faire un calcul numérique, de convertir en binaire les données du calcul initialement en base dix, d'effectuer le calcul en binaire et de reconvertir à la fin le résultat en base dix, qui est notre système numérique habituel.
Les 2 afficheurs de gauche indiquent les 2 nombres à additionner et l'afficheur de droite indique le résultat de l'addition. Avec 1 chiffre binaire pour les données, les deux nombres à additionner ne peuvent être que 0 ou 1, ce qui donne un résultat qui ne peut être que 0, 1 ou 2. Ce calcul est effectué avec les 4 portes "non et" d'un circuit intégré 74LS00 et une porte "ou" d'un circuit intégré 74LS32. Voir ce lien pour plus d'explications sur le fonctionnement de ce demi-additionneur.
Les données à additionner sont maintenant définies chacune avec 2 chiffres binaires, et sont donc comprises entre 0 et 3. Le résultat est donc compris entre 0 et 6. Ceci se fait au coût d'une retenue possible lorsque les unités sont additionnées (1 + 1 = 10 = deux). Le circuit qui additionne les deuzaines est donc plus complexe puisqu'il doit pouvoir additionner les 2 chiffres des deuzaines des données mais aussi cette éventuelle retenue venant des unités. Cette addition de 3 chiffres est obtenue avec 8 portes "non et" de 2 circuits 74LS00 et avec 3 portes "ou" d'un circuit 74LS32.
La bonne nouvelle est qu'il n'est pas plus compliqué d'additionner les 2 chiffres des quatraines et de l'éventuelle retenue venant des deuzaines que d'additionner les deuzaines avec l'éventuelle retenue venant des unités comme dans l'exemple précédent. Le même circuit est donc simplement dupliqué pour les quatraines, les huitaines, les seizaines et les trente-deuzaines. Avec une complexité à peine 3 fois et demi plus grande que le circuit à 2 chiffres binaires qui précède, on peut maintenant additionner 2 nombres compris entre 0 et 32 + 16 + 8 + 4 + 2 + 1 = 63, avec la limite d'affichage sur le résultat qui doit être inférieur à 99. La 1ère capture d'écran montre comment régler les commutateurs pour additionner 59 = 32 + 16 + 8 + 2 + 1 et 23 = 16 + 4 + 2 + 1, qui donnent 82. La 2ème capture d'écran montre les circuits d'addition des trente-deuzaines et une partie de ceux des seizaines (identiques). La 3ème capture d'écran montre l'extrémité droite du circuit avec le demi-additionneur des unités (sans retenue venant de sa droite), ainsi que l'additioneur des deuzaines. Il est à noter que le circuit complet de cet exemple comprend 1 générateur 5 volts, 3 afficheurs, 12 commutateurs, 17 circuits intégrés et 217 fils de connexion. Le temps mis par l'ordinateur qui fait tourner la procédure Python Translab est de plusieurs secondes lorsqu'on manoeuvre un commutateur. Il ne faut donc pas s'étonner d'une apparente absence de réponse lorsqu'on clique sur un commutateur. La procédure Translab passe en revue plusieurs fois toutes les connexions possibles entre toutes les "pattes" des composants dessinés. De ce point de vue la procédure pourrait faire l'objet d'optimisations du temps calcul, mais ce serait au dépend d'une relecture plus difficile du programme Python Translab qui doit conserver un caractère pédagogique. Un élève ou un enseignant doit pouvoir intervenir sur ce programme, par exemple pour ajouter des éléments à la liste des 7 types de composants actuellement programmés.
Au repos, les deux commutateurs sont en position "à gauche" : base du transistor reliée au moins. Si les 2 leds du haut sont éteintes, cliquer 2 fois lentement sur le commutateur du haut. Si les 2 leds du bas sont éteintes, cliquer 2 fois lentement sur le commutateur du bas. Le circuit garde en mémoire la dernière action.
Au repos, les deux commutateurs sont en position "à droite" : base du transistor reliée au collecteur de l'autre transistor. Si la led du haut est allumée, cliquer 2 fois lentement sur le commutateur du haut. Si la led du bas est allumée, cliquer 2 fois lentement sur le commutateur du bas. Le circuit garde en mémoire la dernière action.