Electronique > Réalisations > Boitabak

Dernière mise à jour : 24/08/2014

Présentation

La boitabak est un montage à associer au jeu "Le Petit Bac", qui consiste à trouver un nom commençant par une lettre de l'alphabet, dans diverses rubriques.

boitabak_001a

A l'origine, le jeu se joue de la façon suivante : chaque joueur (pas de limitation du nombre) est doté d'une feuille blanche séparée en colonnes. Chaque colonne porte un titre de rubrique, par exemple Métier, Chanteur, Ville, Couleur. On choisi une lettre de l'alphabet au hasard, et on doit trouver, en un temps déterminé, un nom de Métier, un nom de Chanteur, un nom de Ville ou un nom de Couleur. Au bout du temps imparti, chaque joueur liste les mots qu'il a trouvé et compte un point par mot trouvé. Si deux joueurs ont trouvé le même mot pour la même rubrique, aucun point n'est compté pour ce mot. Il est donc conseillé de choisir des mots originaux pour éviter les doublons. Au bout de plusieurs parties, celui qui a accumulé le plus grand nombre de points a gagné. Cette réalisation électronique permet :
- d'afficher une lettre au hasard, de A à Z, après pression d'un bouton poussoir.
- d'indiquer les rubriques pour lesquelles un mot commençant par la lettre affichée, doit être trouvé
- de définir une durée de partie variable, qui correspond au nombre de rubriques "activées".

Schéma

Le schéma complet est décomposé en trois parties : circuit d'affichage des rubriques, circuit de la minuterie et circuit d'affichage de la lettre.

Boitabak - Syno

Pour faciliter les explications, j'ai décidé de nommer les composants par groupes :
- circuit d'affichage des rubriques : références de composants commençant par 100 (R101, R102, C101 par exemple)
- circuit de la minuterie : références de composants commençant par 200 (R201, C201, Q201, par exemple).
- circuit d'affichage de la lettre : références de composants commençant par 300 (R301, C301 par exemple)

Circuit d'affichage des rubriques

Boitabak - Rubriques

Il est constitué par une rangée de 12 LED, et il vous incombe de choisir le nom des rubriques que vous préférez. Le NE555 (U101) est monté en oscillateur, selon une configuration que les habitués de la bidouille n'auront pas manqué de reconnaître (à utiliser ce circuit à toutes les sauces, on finit toujours par le repérer, quand bien même son nom n'est pas inscrit sur le schéma!). Avec les valeurs données aux composants qui l'entourent, la fréquence du signal que l'on obtient sur sa broche de sortie (borne 3) est assez élevée : environ 100 kHz. Ce signal est appliqué à l'entrée du compteur CD4040 (U102), à condition toutefois que la borne de RAZ du NE555 (borne 4) soit portée au potentiel positif de l'alimentation. Ce sera le cas quand l'interrupteur (ou bouton-poussoir) de RAZ (SW1 sur le synoptique général) est pressé. Dans ce cas, le CD4040 présente sur ses sorties un mot binaire de 12 bits, dont la valeur évolue de 0 à 4095, à la fréquence d'horloge du NE555. Plus simplement, chacune des sorties du 4040 passe alternativement de 0 à 5 volts, très rapidement. Dès que SW1 est relâché (ouvert), la résistance de rappel R1 de 10 kO (elle aussi visible sur le synoptique) porte la borne 4 du NE555 à un niveau de tension pratiquement égal à 0 volt, le compteur ne reçoit plus rien et reste donc bloqué. Chaque LED (D101 à D112) est connectée à l'une de ces sorties via une résistance de limitation de courant de 510 ohms (R127 à R138), et s'allume ou s'éteind au rythme des changements d'état des diverses sorties. A la vitesse à laquelle les changements se font, il est impossible de prévoir quelles seront les LED qui resteront allumées au moment où SW1 est relâché. On comprend mieux maintenant le choix d'une fréquence d'horloge aussi élevée : il ne fallait pas pouvoir suivre l'état logique visualisé par la dernière LED (celle qui clignote le plus lentement). Ainsi, la "triche" est impossible. Les résistances R103 à R126 forment un convertisseur numérique/analogique rudimentaire dont la sortie VA est connectée sur l'entrée non-inverseuse (borne 3) de U201, AOP présent dans le circuit de minuterie que nous verrons bientôt. L'utilité de cette tension analogique, dont la valeur dépend directement du mot binaire composé par le circuit compteur CD4040 (U102) sera mise en évidence d'ici quelques lignes.

Minuterie à durée variable

Boitabak - Minuterie

Comme il l'a été dit au début, le nombre de rubriques activées peut varier à chaque relance de l'appareil, et il serait dommage de disposer toujours du même temps pour jouer. Pour cette raison, un petit AOP (Ampli OPérationnel) de type TL081 (U201) fait son apparition. L'entrée inverseuse de ce circuit (broche 2) reçoit une tension dont la valeur augmente lentement, en partant de zéro suite à une RAZ. Cette tension à montée progressive provient de la charge d'un condensateur de valeur assez élevée (on travaille dans le domaine des secondes voire des dizaines de secondes) et est comparée à la tension VA issue du convertisseur numérique/analogique. Le consensateur C201 est complètement déchargé par le transistor Q201 au moment de la RAZ. Quand SW1 est relâché (ouvert), Q201 est bloqué et le condensateur C201 peut se charger à travers la résistance R203. Quand la tension aux bornes du condensateur C201 dépasse la tension VA, la sortie de l'AOP U201 change d'état et active le buzzer BUZ201 (attention, cette référence n'est pas une référence de transistor MOSFET). Vous noterez sans doute le câblage un peu curieux en sortie de l'AOP, on a plutôt l'habitude de voir une liaison directe et sans condensateur en série, pour commander un transistor. Cette façon de faire permet de limiter la durée pendant laquelle le buzzer se fait entendre, je trouvais agaçant de l'entendre en permanence tant qu'on n'appuyait pas sur le bouton de RAZ.

Circuit d'affichage de la lettre

Boitabak - Affichage lettre

Un autre NE555 (U305) fournit un signal rectangulaire à un autre compteur CD4040 (U303), là aussi uniquement quand l'interrupteur (ou bouton-poussoir) SW1 est pressé (RAZ amené au +V). Ici, toutes les sorties du compteur ne sont pas exploitées. En effet, chaque mot binaire qui adresse la mémoire EPROM (U301) représente une lettre (nous verrons plus loin comment l'affichage de cette lettre est possible) et il n'existe pas suffisamment de lettres dans l'alphabet français : il en faudrait plus de 4000.... Choisissons donc de n'en afficher que 26, 5 bits seront alors nécessaires (avec 4 bits, on ne disposerait que de 16 possibilités et donc 16 lettres). Au-delà du 26ème mot, il y a obligation de remettre le compteur à zéro, si on ne veut pas que des lettres sortent plus souvent que d'autres (du 27ème au 32ème mot, il faudrait bien mettre quelque chose). Une des deux portes AND à quatre entrées empruntées à un CD4082 (U306:A) remplit à merveille cette tâche, le 27ème nombre (26) étant représenté en binaire par "11010". Quand les quatre entrées de la porte AND U306:A sont à "1", sa sortie remet le compteur à zéro via la diode D336. L'autre porte de ce circuit (U306:B) est inutilisée et on relie toutes ses entrées à la masse. Essayons maintenant de voir quelle solution il est possible d'adopter pour visualiser des lettres sur un afficheur.
- Une première solution consisterait à utiliser un de ces afficheurs à une ou deux lignes de 16 caractères, à cristaux liquides, que l'on rencontre de plus en plus souvent. Ce type d'afficheur tient peu de place et permet un affichage clair (pas en terme de luminosité mais en terme de définition des caractères), mais pour le piloter il vaut mieux utiliser un microcontrôleur. Un peu gros tout de même pour un montage de ce genre.
- Un afficheur alphanumérique à LEDs : ça se présente un peu comme un afficheur numérique, mais ça a plus de segments : pas très courant, pas très bon marché et c'est mon avis, les lettres que l'on peut composer ne sont pas toutes très jolies.
- Il reste l'afficheur à matrice (LED là aussi), constitué de 5 colonnes de 7 points. Avec ce type d'afficheur, on peut aisément visualiser n'importe quel symbole (lettres, ponctuation, chiffres, etc.), à condition bien sûr d'avoir ce qu'il faut pour le commander. Cet afficheur existe tout fait, "à la pièce". Malheureusement, il reste mal distribué et coûte lui aussi assez cher. Pourtant, dans le cas qui nous concerne, il serait le représentant idéal. Alors nous allons le fabriquer nous-même... Rassurez-vous! Avec 35 LED et un peu de patience, vous aurez un afficheur d'une taille très honorable, très visible et pour un prix de revient très bas (on trouve sur le net des lots de 100 LED pour 3 euros, il n'y a pas à hésiter).

Matricage des LED
Pour éviter un câblage apocalyptique entre les LED et le circuit de commande, on procéde à un matriçage. Le principe de la matrice est vraiment très simple : on relie toutes les anodes des LED en rangées (rangées 1 à 7) et toutes les cathodes en colonnes (colonnes 1 à 5). Notons au passage qu'on peut aussi faire l'inverse si les polarités des signaux de commande des rangées et des colonnes sont inversées. On ramène ainsi le nombre de connexions, de 70 à 12. Les rangées sont commandées par la mémoire 2764 (U301) tandis que les colonnes sont balayées (connectées à la masse à tour de rôle) grâce aux transistors Q301 à Q305 (on pourrait les remplacer par un circuit intégré ULN2803). Pour bien comprendre le fonctionnement du matriçage, prenons un exemple et essayons de voire comment on peut afficher la lettre "M". Remarquons tout d'abord que l'état des sorties de l'EPROM 2764 dépend de l'état logique de ses entrées A0 à A7 ("A" pour "Adresse"), les autres entrées étant mises à la masse. Les entrées A0 à A4 sélectionnent la lettre proprement dite, tandis que les 3 autres entrée (A5 à A7) servent à sélectionner la colonne de la matrice. Pour ce faire, les sorties du CD4060 (U304) sont simultanément appliquées sur les entrées A5 à A7 de l'EPROM et sur les entrés A0 à A2 (bornes 10,13,12) du démultiplexeur CD4028 (U302). Ainsi, pour chaque colonne de la matrice à LED, la 2764 propose sur ses sorties les données nécessaires à la composition de la lettre. On peut résumer par un petit tableau les sorties de l'EPROM qui seront à "1" en fonction de l'état des entrées A5 à A7, sachant que la sortie D7 alimente la LED la plus haute de la colonne (la première sortie - D0 - ne sera pas connectée).

A5
A6
A7
Col.
D0
D1
D2
D3
D4
D5
D6
D7
0
0
0
1
0
1
1
1
1
1
1
1
1
0
0
2
0
0
0
0
0
0
1
0
0
1
0
3
0
0
0
0
1
1
0
0
1
1
0
4
0
0
0
0
0
0
1
0
0
0
1
5
0
1
1
1
1
1
1
1
1
0
1
6
0
0
0
0
0
0
0
0
0
1
1
7
0
0
0
0
0
0
0
0
1
1
1
8
0
0
0
0
0
0
0
0
Exemple de configuration pour obtenir l'affichage de la lettre "M". Les sorties actives (à "1") sont dans les cases vertes. Vous ne remarquez rien ? Alors faîtes donc pivoter le tableau de 90° dans le sens contraire des aiguilles d'une montre...

Contenu de la PROM

Vous trouverez le contenu complet de l'EPROM 2764 dans le tableau suivant. Les adresses (1ère colonne) sont données en base 10 (décimal) et en base 16 (Hexadécimal), séparées par un "/". Les données (colonnes X) quant à elles sont écrites en base 2 (binaire).

Adresses
X
X + 1 X + 2
X + 3
X + 4
X + 5
X + 6
X + 7
X








0000 / 00 01111110
11111110
01111100 11111110
11111110
11111110 01111100 11111110
0008 / 08 00000000
00000100 11111110 11111110 11111110 11111110 01111100 11111110
0016 / 10 01111100 11111110 01100010 10000000 11111100 11111000 11111100 11000110
0024 / 18 11100000 10000110 00000000 00000000 00000000 00000000 00000000 00000000
0032 / 20 10001000 10010010 10000010 10000010 10010010 10010000 10000010 00010000
0040 / 28 10000010 00000010 00010000 00000010 01000000 00100000 10000010 10010000
0048 / 30 10000010 10010000 10010010 10000000 00000010 00000100 00000010 00101000
0056 / 38 00010000 10001010 00000000 00000000 00000000 00000000 00000000 00000000
0064 / 40 10001000 10010010 10000010 10000010 10010010 10010000 10010010 00010000
0072 / 48
11111110 10000010 00101000 00000010 00110000 00010000 10000010 10010000
0080 / 50 10001010 10011000 10010010 11111110 00000010 00000010 00011100 00010000
0088 / 58 00001110 10010010 00000000 00000000 00000000 00000000 00000000 00000000
0096 / 60 10001000 10010010 10000010 01000100 10010010 10010000 10010010 00010000
0104 / 68 10000010 11111100 01000100 00000010 01000000 00001000 10000010 10010000
0112 / 70 10000100 10010100 10010010 10000000 00000010 00000100 00000010 00101000
0120 / 78 00010000 10100010 00000000 00000000 00000000 00000000 00000000 00000000
0128 / 80 01111110 01101100 01000100 00111000 10000010 10000000 01011110 11111110
0136 / 88 00000000 10000000 10000010 00000010 11111110 11111110 01111100 01100000
0144 / 90 01111010 01100010 10001100 10000000 11111100 11111000 11111100
11000110
0152 / 98 11100000 11000010 00000000 00000000 00000000 00000000 00000000 00000000

Réalisation

Rien de particulier, si ce n'est peut-être l'utilisation d'un petit coffret en osier en guise d'habillage.

boitabak_001b boitabak_001c boitabak_001d

L'ensemble des composants, y compris la partie affichage, tient sur un unique circuit imprimé. Le transformateur d'alimentation, le circuit de filtrage et de régulation d'alimentation, ainsi que le buzzer indiquant la fin de partie, sont placés dans la boite, en-dessous du circuit principal. La troisième photo montre la matrice de 5 x 7 LED pour l'affichage des lettres de l'alphabet.

Evolution du montage ?

Quand j'ai réalisé ce montage, je n'y connaissais rien en microcontrôleur. Maintenant, je serais capable de considérablement le simplifier avec un simple PIC de type 18F45K22. Une version 2 pour l'avenir ? Pourquoi pas...

Historique

24/08/2014
- Correction diverses dans le texte, je faisais un usage intensif de références erronées.
25/01/2007
- Première mise à disposition.