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.
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.
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
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
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
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.
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.