Description du montage :
Le
système est un dispositif d'accueil vocal ; installé à proximité
d'une porte, il délivre au visiteur un message de bienvenue.
Le
montage repose sur l'utilisation d'une mémoire qui va conserver sous
une forme numérique un signal sonore quelconque (voix, musique) de
quelques secondes, et le restituera à chaque sollicitation.
Le montage. Au centre, l'EPROM qui contient le message.
Le montage se décompose en cinq principaux blocs fontionnels :
- Le générateur de signal d'horloge.
- Le compteur.
- La mémoire.
- Le convertisseur numérique / analogique (CNA).
- L'ampli basses-fréquences (BF).
Le
compteur, cadencé par l'horloge, fait défiler les adresses successives
de la mémoire (environ 11000 adresses par seconde). Les données,
présentes en sortie de la mémoire, correspondent à l'amplitude du
signal sonore enregistré, instant après instant ; ces amplitudes,
stockées sous une forme numérique, sont converties en une grandeur
analogique (tension) par le CNA ; cette tension est amplifiée (ampli
BF) puis transformée et restituée sous une forme sonore par le
haut-parleur. Nous analyserons plus en détail le fonctionnement de
l'ensemble dans la rubrique [schéma].
Le
message est contenu dans une mémoire EPROM de 65536 mots de 8 bits.
Outre la présence de pistes fines passant entre les broches des
circuits intégrés, la difficulté majeure de cette réalisation consiste
à pouvoir avoir à sa disposition un programmateur d'EPROMs, pour
charger le contenu de la mémoire ; ce système se présente sous la
forme d'un boîtier muni d'un support à force d'insertion nulle, sur
lequel sera placée la mémoire à programmer ; il est généralement relié
au PC par un câble branché sur le port parallèle :
Le programmateur d'EPROMs
Un
logiciel adéquat permet de lire ou de programmer le contenu de la
mémoire (après choix du type d'EPROM, du fabricant et donc de
l'algorithme associé et des tensions de programmation). Une zone de
mémoire tampon intermédiaire, associée à un éditeur hexadécimal,
permet éventuellement de retoucher les valeurs avant programmation, ce
qui rendra possible l'utilisation directe des fichiers 'son' WAV, en
expurgeant manuellement les octets du début caractérisant le format
(voir rubrique [Messages] pour plus de détails).
La
technologie EPROM a ceci de particulier qu'une fois programmée, la
mémoire ne peut être effacée que par une exposition aux rayons
ultraviolets ; pour une utilisation normale, sa fenêtre en silice doit
être masquée par une étiquette ; celle-ci sera ôtée au moment de
l'effacement. Cette opération suppose l'utilisation d'un autre
équipement spécialisé, l'effaceur d'EPROMs à tube U.V. :
Effaceur d'EPROMs à tube U.V.
La
photo ci-dessus montre un effaceur en kit permettant d'effacer jusqu'à
11 EPROMs simultanément, chaque mémoire, dépourvue de son étiquette
protectrice, étant placée au dessus d'une ouverture, les pattes en
l'air, la fenêtre en silice exposée au rayonnement U.V. du tube
(environ 15 mn). Attention, les U.V. produits sont extrèmement
dangereux pour les yeux, il faut absolument éviter de les regarder.
Les EPROMs neuves du commerce sont vendues vierges, cet appareil n'est
donc nécessaire que si vous souhaitez changer un message déjà
programmé sans racheter une EPROM, ou bien si vous utilisez des EPROMs
de récupération ; on en trouve souvent sur du matériel informatique
usagé, BIOS de cartes 'mère', ou tout autre système à microprocesseur,
vérifiez simplement qu'il s'agit bien de 27512 ; c'est une solution
très économique, on peut ainsi se constituer toute une banque de
messages.
Les EPROMs contiennent
habituellement des codes machines, c'est-à-dire des séries
d'instructions de base en binaire dans le langage du microprocesseur
qu'elles accompagnent ; parfois, il peut s'agir de tables de valeurs :
par exemple les fréquences des canaux dans un émetteur radio, ou bien
les textes à afficher si un dialogue est prévu avec l'utilisateur du
système ; on peut dire que nous utilisons ces mémoires dans un mode un
peu "détourné". A titre d'information, signalons qu'un CD audio
contient l'équivalent de plus de 10000 EPROMs de type 27512 (650 Mo
contre 64 ko).
L'achat
d'un programmateur d'EPROMs et d'un éventuel effaceur uniquement pour
la réalisation de ce montage ne se justifie pas car ce sont des
équipements assez coûteux ; voici quelques pistes pour programmer vos
mémoires :
- un bon copain ou un voisin bricoleur un peu outillé...
- un lycée technique, ou une FAC de science avec un département 'Electronique' et des profs sympas...
- le commerçant complaisant de votre magasin d'électronique préféré...
- un club d'électronique...
- Les radio-amateurs de votre région : un saut au radio-club le plus proche où l'on devrait trouver un bricoleur équipé, avec un peu de chance...
- Un petit réparateur de matériel électronique, ou une petite entreprise du secteur (où l'on développe des prototypes, où l'on fait de la maintenance, etc...)
- En s'adressant à un magasin de composants électronique qui fournit ce genre de prestation moyennant rétribution (voir les plus connus qui font de la pub dans les revues)...
- En dernier recours, en s'adressant à l'auteur de cette page, mais en ayant un peu cherché ici et là avant (;o)) ...
Dans
tous les cas, notamment lorsqu'on n'est pas très bien outillé et que
l'on est obligé de compter sur la bonne volonté des gens, il est
préférable de se présenter avec sa disquette 1M44 contenant le fichier
déjà retraité et expurgé, au format binaire .BIN avec sa taille de
65536 octets, et une (voire deux) 27C512, pour réduire au minimum les
opérations et aller à l'essentiel...
Nous
voici à l'étape suivante de la réalisation ; aux différents blocs
fonctionnels présentés dans la partie "description du montage" a
succédé un ensemble de composants électroniques réalisant ces fonctions
; notre choix s'est porté sur des composants ultra-courants,
facilement disponibles et à prix raisonnable, à l'exclusion volontaire
de tout circuit spécialisé (qui ferait perdre au montage son
caractère pédagogique) ; si votre détaillant ne peut pas vous fournir
de résistances de 30k (c'est possible car cette valeur n'est pas
normalisée dans la série 'E12' la plus courante, mais dans la série
'E24'), alors mettez en série deux résistances de 15k, plutot que
d'utiliser une valeur approchée :
-[15k]-[15k]- <=> -[30k]-
-[15k]-[15k]- <=> -[30k]-
Réalisation des différentes parties du montage :
- Le générateur de signal d'horloge est un classique NE555, associé à quelques composants périphériques habituels ; un réglage a été prévu (AJ1) pour autoriser diverses fréquences d'échantillonnage.
Rappelons que Fe = 1 / [0,7 x (R23+2xAJ1+2xR24) x C1]
d'où, pour 47000 > AJ1 > 0, la gamme suivante : 4386Hz < Fe < 30702Hz.
(sur notre prototype : de 4,2 à 27,3 khz, le réglage se faisant très facilement à l'oreille).
Le NE555 est extrèmement courant, aussi nous ne détaillerons pas ici son schéma interne ou son fonctionnement en astable, qui sont on ne peut plus classiques ; le visiteur intéressé trouvera toutes sortes de descriptions sur Internet (voir moteurs de recherche)... - Le compteur binaire 17 bits est constitué de deux compteurs 12 bits CD4040 en cascade, les sorties Q5 à Q11 du deuxième 4040 (IC2) ne sont donc pas utilisées ; les 16 premières sorties permettent un défilement des 65536 adresses (octets) de la mémoire (2 à la puissance 16 = 65536) ; la sortie 17 (Q4 de IC2) fournit une information de fin de message : en passant au niveau logique 1, elle interdit les fronts descendant qui incrémentent l'entrée d'horloge de IC1. Les deux diodes D2 et D3, et la résistance R21 constituent une fonction "OU logique" câblée, représentée sur le schéma synoptique de la page [Description].
- Quelques mots concernant le bouton poussoir : il peut s'agir d'un capteur assez sommaire : deux punaises sur l'encadrement de la porte, une feuille de papier aluminium collée sur le battant faisant contact lorsque celle-ci est fermée ; à l'ouverture, le contact se rompt, les compteurs peuvent s'incrémenter, la mémoire est validée, le message est lu. Il est préférable de laisser un blanc de 0,2s en début de message pour pallier l'absence de circuit anti-rebonds, et laisser au visiteur le temps d'entrer ; il faut également s'assurer que la porte restera ouverte au moins pendant la durée du message.
- La mémoire : comme indiqué précédemment, il s'agit d'une EPROM CMOS de type 27C512, de 64 ko (512 kbits) ; le schéma laisse apparaître ses 16 bits d'adresses et ses 8 bits de données. L'EPROM se trouve toujours en "lecture", la broche 22 (OE\ : Output Enable) est donc forcée au niveau logique "0". La mémoire est mise en haute impédance tant que le bouton poussoir est appuyé (Chip Select CS\ à "1"). Le choix de la technologie CMOS permet de maintenir la consommation globale du montage dans une limite tout à fait raisonnable (fonctionnement sur pile 9V), environ 30 mA, voire moins selon le réglage du volume, contre près de 80 mA pour une 27512 NMOS (cela dépend du modèle).
- Le convertisseur numérique / analogique : les sorties de la mémoire sont modélisées par des sources de tension valant Vcc ou 0 selon l'état de la sortie considérée, (Sortie n, bit bn à 0 ou 1, tension de la sortie Vn = bn.Vcc) :
- Rs se calcule très facilement en remplaçant les sources par des fils : Rs = R.(5/3)
- Le calcul de Vs est plus compliqué ; procédons par superposition :
La valeur Vs globale du montage est égale à la somme des influences respectives de chacune des sources prises isolément.
En clair : Vs = Vs0+Vs1+Vs2+Vs3+Vs4+Vs5+Vs6+Vs7.
Exemple pour Vs7 : valeur prise par Vs en remplaçant toutes les sources par des fils, sauf la source (b7.Vcc) : Vs7 = (b7.Vcc)x(1/3).
En procédant de même avec les autres sources, on a :
Vs6 = (1/2)x(b6.Vcc)/3,
Vs5 = (1/4)x(b5.Vcc)/3,
Vs4 = (1/8)x(b4.Vcc)/3,
Vs3 = (1/16)x(b3.Vcc)/3,
Vs2 = (1/32)x(b2.Vcc)/3,
Vs1 = (1/64)x(b1.Vcc)/3,
Vs0 = (1/128)x(b0.Vcc)/3.
D'où : Vs = (1/3).Vcc.(b7+b6/2+b5/4+b4/8+b3/16+b2/32+b1/64+b0/128)
Soit : VS = 2/3 x Vcc/256 x (b0+2.b1+4.b2+8.b3+16.b4+32.b5+64.b6+128.b7)
Par exemple avec l'octet $C8 en HEXA, qui vaut '11001000' en binaire :
avec b7=b6=b3='1', b5=b4=b2=b1=b0='0' et Vcc=+5V,
Vs = (2/3).(5/256).(128+64+8) = 2,604 V - Vs alimente à travers Rs, l'ensemble [C2,C3,AJ2] :
- Rs et C2 constituent un filtre passe-bas qui élimine les fréquences élevées (proches et au-dela de la fréquence d'échantillonnage).
- C3 et AJ2 forment un filtre passe haut dont le rôle est essentiellement de supprimer la composante continue en sortie du CNA (En l'absence de son, la sortie de la mémoire est stable autour de $80, ce qui donne environ : Vs = 1,67V).
- Le calcul de l'ensemble Rs, C2, C3, AJ2 n'est pas insurmontable, mais tout de même un peu fastidieux, aussi je ne le développerai pas ici ; la bande passante simulée du filtre passe-bande ainsi obtenu préserve à peu près les fréquences de la voix (nous ne sommes pas dans le domaine de la haute fidélité !).
- L'ampli BF et le haut-parleur : il fallait un petit ampli BF bon marché, avec un minimum de composants périphériques, et qui ait fait ses preuves : notre choix s'est porté sur un LM386, le schéma de montage étant tiré de la note d'application du circuit ; un petit haut-parleur basse impédance de récupération conviendra très bien (quelques ohms, 1 Watt, et de 5 à 8 cm de diamètre, valeurs non critiques !).
Remarque
: les documentations au format PDF (en anglais) des différents
circuits intégrés utilisés dans ce montage sont disponibles sur
Internet, et faciles à trouver en passant par vos moteurs de
recherches préférés...
en fichiers binaires ".BIN" :
WAV_BIN.EXE
version 1.2
+ sources
(192 ko)
Liste des composants :
- Condensateurs (tension de service 12v, ou plus) :
- C1 : 1 x 3,3 nF, mylar.
- C2, C5, C6 : 3 x 10 nF, céramique.
- C3 : 1 x 220 nF, mylar.
- C4 : 1 x 47 nF, mylar.
- C7, C8, C9 : 3 x 10 µF, 16v, tantale.
- C10 : 1 x 100 µF, 16v, radial, chimique (pas trop gros !).
- C11 : 1 x 10 µF, 16v, radial, chimique.
- Résistances (1/4 W, 5%) :
- R1, R2, R3, R4, R5, R6, R7, R8, R9, R10 : 10 x 30 k ohms (si possible, à 1%).
- R11, R12, R13, R14, R15, R16, R17, R18 : 8 x 15 k ohms (si possible, à 1%).
- R19 : 1 x 10 ohms.
- R20 : 1 x 47 ohms.
- R21 : 1 x 2,2 k ohms.
- R22, R23, R24 : 3 x 4,7 k ohms.
- Circuits intégrés / semi-conducteurs :
- IC1, IC2 : 2 x CD 4040.
- IC3 : 1 x NE 555.
- IC4 : 1 x LM 386.
- IC5 : 1 x 27C512 (EPROM 64 ko, si possible CMOS).
- Un régulateur 5V type 7805.
- D1 : 1 diode 1N4001 ou 1N4004 ou 1N4007.
- D2, D3 : 2 diodes 1N4148 ou 1N914.
- Divers :
- 1 Haut parleur 8 ohms (disons quelques ohms, 1 Watt, et de 5 à 8 cm de diamètre, valeurs non critiques !).
- B1, B2, B3, B4 : 4 borniers doubles. B2, B3 et B4 seront emboîtés pour constituer un bornier à 6 plots, on peut donc les remplacer par deux borniers triples.
- AJ1, AJ2 : 2 ajustables 47 k ohms, horizontaux, petit format.
- Pour IC1, IC2 : 2 supports tulipe 16 broches (en option).
- Pour IC3, IC4 : 2 supports tulipe 8 broches (en option).
- Pour IC5 : 1 support tulipe 28 broches.
- Pour le 7805 : 1 vis + 1 écrou (diamètre 3 mm).
- Un clip pour pile 9V.
- Une pile 9V.
- Un bouton poussoir.
- Un interrupteur à levier (à bascule).
- Les 3 straps (en bleu, sur le schéma d'implantation) sont constitués d'un petit bout de fil dénudé.
- Eventuellement : plaque, mèches, soudure, révélateur, perchlorure de fer, fil de câblage, boîtier, vis et écrous de fixation, etc.
Réalisation du circuit imprimé :Si vous possèdez le logiciel ARES Lite, cliquez sur l'icône de gauche, et enregistrez le fichier 'Vocal28c.ZIP', puis extrayez de l'archive le fichier 'Vocal28c.LYT', et imprimez directement depuis ARES.Si ce n'est pas le cas, chargez le fichier 'Typon.GIF' en cliquant sur l'icône de droite, puis enregistrez-le sur le disque dur. Ensuite, imprimez à partir d'un logiciel capable d'imprimer une image selon des dimensions fixées par l'utilisateur ; on peut ainsi utiliser Microsoft Photo Editor (fourni avec le Pack Office), l'ancienne version de Paint Shop Pro 3.11 disponible sur le net, ou tout autre utilitaire, voire éventuellement avec Word, en insérant le dessin du circuit et en ajustant ses dimensions (menu contextuel : 'Format de l'image'). Configurez l'imprimante dans un mode haute qualité, pour obtenir un bon contraste. Les dimensions à indiquer sont les suivantes (à l'échelle 1) : - en pixels : 2600 x 1400, résolution 600 DPI
- dimensions en pouces : 4,33 x 2,33
- dimensions en cm : 11 x 5,9
Il
reste alors à réaliser une photocopie laser de bonne qualité sur un
transparent. On peut également passer certains transparents spéciaux
directement à l'imprimante (laser ou jet d'encre). Une alternative
consiste à rendre la feuille de papier transparente aux UV en
vaporisant un produit tel que le "Diaphane", de KF, mais comme
certaines pistes sont très fines, passant entre les pattes de circuits
intégrés, je ne recommande pas trop cette méthode dans le cas
présent. Je conseille plutôt de tirer deux transparents et de les
assembler soigneusement l'un contre l'autre avec de l'adhésif, en les
faisant coïncider pour obtenir un typon bien opaque au niveau des
parties noires.
En prévoyant une bonne
petite marge, une plaque de 7 cm x 12 cm suffit très largement.
Attention, le typon est présenté côté composants, cela signifie que sa
face encrée sera plaquée contre le cuivre. Après passage par
l'insoleuse puis dans le perchlorure de fer, le résultat du tirage doit
impérativement être impeccable, sans micro-coupures ni restant de
cuivre entre les pistes :
Pour
terminer, vous pouvez éventuellement étamer la carte (à froid ou à
chaud) ; puis vient l'étape du perçage, avec les différents diamètres
de mèches selon les composants : comme ordre d'idée, disons
généralement 0,8 mm pour les résistances, les condensateurs, les
supports, D2 et D3 ; 1,2 mm ou plus pour les borniers, le 7805, D1 et
les ajustables, et 3 mm pour les quatre ou six vis de fixation, ainsi
que celle du régulateur.
Messages vocale personnalisés :
Pour creer le message vocale , voici quelques conseils :
La mémoire peut contenir 65536 octets ("échantillons") ; il s'agit alors de trouver un bon compromis entre :
La mémoire peut contenir 65536 octets ("échantillons") ; il s'agit alors de trouver un bon compromis entre :
- la fréquence d'échantillonnage Fe (le nombre d'échantillons par seconde), ce qui augmente d'autant la qualité.
- la durée du message (qui diminue d'autant plus que Fe est grande).
- les possibilités matérielles de la carte 'son' ; avec ma carte :
- Fe = 11025 Hz, durée = 5,94 secondes ; la qualité est relativement acceptable et la durée suffisante.
- Fe = 22050 Hz, durée = 2,97 secondes ; la qualité est bonne, mais le message est court.
- Fe = 44100 Hz, durée = 1,48 secondes ; le message est trop court, et là, l'ampli BF, le filtre passe-bande, et la résolution (8 bits) ne permettent pas de profiter du gain de qualité : solution exclue d'office.
- Certaines cartes proposent les valeurs suivantes : 4000 Hz, 8000 Hz, 16000 Hz. Des utilitaires permettent par ailleurs de convertir logiciellement des messages WAV enregistrés par exemple à 22050 Hz, à ces autres valeurs (mais sans respecter forcément le théorême de Shannon d'où des distorsions possibles !) : utilisez tout simplement le Sound Recorder de WIN95/98 (SNDREC32.EXE), option "Enregistrez sous"...
Munis
de ces remarques, faites votre choix, pour ma part j'opte le plus
volontier pour une valeur de 11025 Hz, voire 8000 Hz (qualité
téléphone) si le message est long. Réglez ensuite Aj1 à l'oreille, en
fonction de la fréquence.
Concernant l'enregistrement :
Utilisez au mieux le logiciel qui accompagne votre carte son : ajustement des différents gains pour avoir la meilleure dynamique possible, sans saturation, mais suffisamment pour que le vu-mètre indique une variation presque dans l'ensemble de la gamme (pas trop dans le rouge !).
Pour enregistrer votre voix (entrée Micro), parlez assez près du micro, mais sans forcément l'orienter vers votre bouche afin d'éviter le souffle.
Dans le cas d'une source différente, passez par l'entrée 'Line IN', en prévoyant le cable adéquat :
- Magnétoscope : le cable est ultra-standard (fiche stéréo diamètre 3,5 mm vers deux fiches RCA, aussi appelées CINCH, je suppose que les as de la HI-FI connaissent mieux que moi ce duo rouge et blanc).
- Radio, baladeur, magnétophone : confectionner un cable reliant la fiche stéréo de l'entrée 'IN' vers une fiche mono ou stéréo selon le cas, toujours en diamètre 3,5 ; réglez au mieux le volume de la source.
Utilisez au mieux le logiciel qui accompagne votre carte son : ajustement des différents gains pour avoir la meilleure dynamique possible, sans saturation, mais suffisamment pour que le vu-mètre indique une variation presque dans l'ensemble de la gamme (pas trop dans le rouge !).
Pour enregistrer votre voix (entrée Micro), parlez assez près du micro, mais sans forcément l'orienter vers votre bouche afin d'éviter le souffle.
Dans le cas d'une source différente, passez par l'entrée 'Line IN', en prévoyant le cable adéquat :
- Magnétoscope : le cable est ultra-standard (fiche stéréo diamètre 3,5 mm vers deux fiches RCA, aussi appelées CINCH, je suppose que les as de la HI-FI connaissent mieux que moi ce duo rouge et blanc).
- Radio, baladeur, magnétophone : confectionner un cable reliant la fiche stéréo de l'entrée 'IN' vers une fiche mono ou stéréo selon le cas, toujours en diamètre 3,5 ; réglez au mieux le volume de la source.
Faites autant d'essais que nécessaire, le résultat dépend en grande partie de la qualité des enregistrements !
Vous récuperez au final un fichier WAV au format PCM, 8 bits, mono, échantillonné à la fréquence voulue ; sa taille ne dépasse pas 65536 octets ; renoncez aux diverses variantes de formats WAV compressés, ils ne sont pas compatibles avec le système.
Vous récuperez au final un fichier WAV au format PCM, 8 bits, mono, échantillonné à la fréquence voulue ; sa taille ne dépasse pas 65536 octets ; renoncez aux diverses variantes de formats WAV compressés, ils ne sont pas compatibles avec le système.
Transformation des fichiers son ".WAV"
Il serait théoriquement possible de programmer directement le fichier WAV dans l'EPROM, mais il a deux problèmes :
- Les octets du début qui servent à définir le format WAV, et n'ont rien à voir avec des échantillons.
- Les octets de fin de la mémoire (car le fichier ne fait sans doute pas pile 65536 octets), qui resteront à FFh (zone de l'EPROM restant vierge).
Ces octets se traduiront par des craquements en début et en fin de message : il faut les remplacer par des octets de valeurs 80h correspondant à un signal de valeur nulle (au-dessous de 80h = signal négatif ; au-dessus de 80h = signal positif).
- Les octets du début qui servent à définir le format WAV, et n'ont rien à voir avec des échantillons.
- Les octets de fin de la mémoire (car le fichier ne fait sans doute pas pile 65536 octets), qui resteront à FFh (zone de l'EPROM restant vierge).
Ces octets se traduiront par des craquements en début et en fin de message : il faut les remplacer par des octets de valeurs 80h correspondant à un signal de valeur nulle (au-dessous de 80h = signal négatif ; au-dessus de 80h = signal positif).
1°) La méthode manuelle :
Si vous ne disposez pas d'un éditeur HEXA, vous pouvez procéder ainsi : Chargez, avec le logiciel du programmateur d'EPROM, le fichier WAV dans le buffer (mémoire tampon), et retenez l'adresse de fin ; éditez ensuite le buffer :
- allez à l'adresse 0000h, remplacez les valeurs des premiers octets correspondant à l'entête par la valeur 80h (structure de l'entête : voir le lien hypertexte situé plus haut).
- allez ensuite à l'adresse de fin (et même un peu avant, car certains éditeurs de fichiers WAV polluent de commentaires la fin de leurs fichiers) et remplissez jusqu'à l'adresse FFFFh avec la valeur 80h.
Les valeurs parasites de début et de fin sont faciles à reconnaître : présence de 00h et FFh, succession de valeurs disparates (B6h, 03h, A8h, etc.)
Il faut pour cela que le logiciel permette la modification du buffer (c'est en général le cas), les commandes sont alors assez simples.
Si vous ne disposez pas d'un éditeur HEXA, vous pouvez procéder ainsi : Chargez, avec le logiciel du programmateur d'EPROM, le fichier WAV dans le buffer (mémoire tampon), et retenez l'adresse de fin ; éditez ensuite le buffer :
- allez à l'adresse 0000h, remplacez les valeurs des premiers octets correspondant à l'entête par la valeur 80h (structure de l'entête : voir le lien hypertexte situé plus haut).
- allez ensuite à l'adresse de fin (et même un peu avant, car certains éditeurs de fichiers WAV polluent de commentaires la fin de leurs fichiers) et remplissez jusqu'à l'adresse FFFFh avec la valeur 80h.
Les valeurs parasites de début et de fin sont faciles à reconnaître : présence de 00h et FFh, succession de valeurs disparates (B6h, 03h, A8h, etc.)
Il faut pour cela que le logiciel permette la modification du buffer (c'est en général le cas), les commandes sont alors assez simples.
2°) La méthode automatique :
voici un petit utilitaire qui sait convertir les fichiers WAV du format "PCM / 8 bits / non signés" au format binaire BIN utilisable avec tout programmateur d'EPROMs digne de ce nom :
voici un petit utilitaire qui sait convertir les fichiers WAV du format "PCM / 8 bits / non signés" au format binaire BIN utilisable avec tout programmateur d'EPROMs digne de ce nom :
WAV_BIN.EXE
version 1.2
+ sources
(192 ko)
Marche à suivre pour la création 'express' d'un fichier BIN sous Windows 98 :
- Menu Démarrer / Programmes / Accessoires / Divertissements : lancer "Contrôle du volume". Vous avez le choix du périphérique de lecture et son réglage de niveau sonore ; selon le cas, on choisira 'Microphone' ou 'Line In', voire 'CD Player'. Vérifiez simplement que la case 'Muet' correspondante n'est pas cochée. La colonne 'Microphone' contient parfois un bouton [Avancé] qui permet de sélectionner une préamplification du son. Dans le menu [Options], cliquez sur [Propriétés], puis dans "Ajuster le volume pour" choisissez "Enregistrement" ; dans "Afficher les contrôles de volume suivants", assurez-vous que votre 'tuyau' d'entrée est bien sélectionné, et refermez la boîte de dialogue en cliquant sur [OK] ; les différents curseurs affichés correspondent maintenant aux périphériques d'enegistrement (et non plus de lecture). Cliquez la case à cochée "Sélectionner" pour choisir le périphérique voulu (par exemple "Microphone"), et montez le curseur assez haut.
- Menu Démarrer / Programmes / Accessoires / Divertissements : lancez "Magnétophone". Dans le menu [Fichier], cliquez sur [Propriétés], puis dans la boîte de dialogue, sur le bouton [Convertir maintenant...], choisissez le Format 'PCM' et les Attributs "xxxx Hz; 8 bits; Mono". Ce que je note 'xxxx' est la fréquence d'échantillonnage, plus elle est élevée, meilleure est la qualité, mais plus court est le message. Le tableau suivant indique la durée du message en secondes, en fonction de la fréquence d'échantillonnage et du type de mémoire ; le montage proposé utilise une 27C512 ; consultez la rubrique [Evolutions] du menu si vous souhaitez créer des variantes avec des mémoires de capacités supérieures ; pour des mémoires plus petites, le montage reste utilisable tel quel, mais l'information de fin de message ne sera plus envoyée à la diode D3 par la sortie Q4 de IC2, mais par la sortie Q3 (27256), Q2 (27128) ou Q1 (2764), Q4 restant alors simplement déconnectée ; si cette modification n'est pas faite, le message sera simplement lu 2, 4 ou 8 fois selon la mémoire.
EPROM | Frequence d'échantillonnage : | ||||
---|---|---|---|---|---|
8000 Hz | 11025 Hz | 12000 Hz | 16000 Hz | 22050 Hz | |
27C64 (8 ko) | 1,02 s | 0,743 s | 0,682 s | 0,512 s | 0,371 s |
27C128 (16 ko) | 2,04 s | 1,48 s | 1,36 s | 1,02 s | 0,743 s |
27C256 (32 ko) | 4,09 s | 2,97 s | 2,73 s | 2,04 s | 1,48 s |
27C512 (64 ko) | 8,19 s | 5,94 s | 5,46 s | 4,09 s | 2,97 s |
27C010 (128 ko) | 16,3 s | 11,8 s | 10,9 s | 8,19 s | 5,94 s |
27C020 (256 ko) | 32,7 s | 23,7 s | 21,8 s | 16,3 s | 11,8 s |
27C040 (512 ko) | 65,5 s | 47,5 s | 43,6 s | 32,7 s | 23,7 s |
27C080 (1024 ko) | 131 s | 95,1 s | 87,3 s | 65,5 s | 47,5 s |
- Ainsi dans l'exemple mis en surbrillance, avec une 27C512 et Fe=11025Hz, le message dure 5,94 secondes. Au-delà de 22050 Hz, évitez, car le message est trop court. J'insiste sur le format : 8 bits, Mono ! Validez en cliquant sur [OK], puis à nouveau [OK] pour quitter la boîte de dialogue "Propriétés pour Son" et retourner au Magnétophone.
- De retour dans le Magnétophone, cliquez sur le point rouge pour lancer l'enregistrement, et parlez dans le micro si vous l'avez défini comme périphérique d'entrée. Gardez à l'esprit la durée du message, et appuyez sur le carré noir (= Stop). A la fin, enregistrez le fichier WAV (Menu [Fichier], option Enregistrer). Ecoutez-le, et recommencez autant que nécessaire pour avoir un bon réglage du volume, et une bonne durée (un tout petit peu moins que la durée théorique du message indiquée ci-dessus). Si vous possédez un logiciel de traitement du son, vous pouvez l'utiliser pour une simple retouche, ou pour créer le message, à condition de récupérer à la sortie un fichier WAV non compressé en PCM 8 bits non signé. Fermez le magnétophone et le programme de contrôle du volume.
- Lancez le convertisseur WAV / BIN fourni ci-dessus, cliquez sur le bouton [Ouvrir WAV] et choisissez le fichier WAV qui vient d'être créé : son nom s'affiche dans la barre centrale sous la zone bleue. Cliquez sur [Convertir], si tout se passe bien, le programme détaille l'analyse effectuée dans la zone de texte (en blanc), et vous pouvez écouter le résultat en cliquant sur le triangle vert. Le programme a alors créé un fichier "EPROM.BIN", à programmer dans l'EPROM 27C512, et un fichier Son "EPROM.WAV" simulant le résultat à partir du fichier BIN, dans le même répertoire que le fichier WAV originel. Laissez les options définies par défaut au niveau des cases à cocher. Depuis la version 1.1, on peut également générer des fichiers '.BIN' pour des mémoires de tailles supérieures (choisir le modèle dans la boîte de défilement prévue à cet effet).
Vous pouvez maintenant brancher le programmateur et lancer la programmation des EPROMs.
Implantation des composants :
Soudure des composants
: commencez par les 3 straps (constitués d'un bout de fil dénudé), les
diodes D2 et D3, les résistances placées horizontalement, D1, puis
les supports des circuits, les ajustables, le régulateur et sa vis ;
continuez avec les résistances montées verticalement, puis les
condensateurs, puis les borniers. Etant donnée sa proximité avec le
bornier, choisir pour C10 un modèle de petite taille.
Insérez
les circuits intégrés sur leurs supports. L'EPROM aura été
préalablement programmée, par exemple avec l'un des fichiers proposés à
la rubrique "Messages". Connectez le haut-parleur, le clip de pile
(le fil rouge est le "plus", le fil noir le "moins"), l'interrupteur,
le bouton poussoir.
Assurez-vous une ultime fois que les précautions habituelles ont été prises :
- Les composants polarisés on été soudés dans le bon sens (diodes, condensateurs 'chimiques' et 'tantale', régulateur).
- Les circuits intégrés ont également été insérés dans le bon sens, sans broche tordue ; pas de confusion entre le NE555 et le LM386.
- Les valeurs des composants ont bien été respectées (notamment les résistances 15 et 30 ko autour de l'EPROM).
- Toutes les soudures ont été faites, aucune ne "bave" sur une piste voisine ou sur une autre soudure.
- Pas de micro-coupures au niveau des pistes, ni de restant de cuivre court-circuitant deux pistes.
- On vérifiera avec une attention particulière les pistes fines passant entre deux broches de circuit intégré (les CD4040, l'EPROM)
Alimentez avec une pile 9V,
ajustables à mi-course, bouton poussoir relaché (contact ouvert) : le
message défile à la mise sous tension ou lors du relachement du
poussoir ; baissez le volume en tournant le curseur d'AJ2 dans le sens
des aiguilles d'une montre ; augmentez la fréquence de défilement en
tournant aussi AJ1 dans le sens des aiguilles d'une montre, et
réglez-le à l'oreille de manière à obtenir une hauteur de son adéquate
(on peut aussi obtenir des effets amusants en jouant sur la vitesse).
Pensez aussi à préserver les oreilles et les nerfs de votre entourage !
vers un nouveau montage :
La
mémoire 27c512 utilisée pour stocker le message est l'EPROM 28
broches 8 bits qui a la capacité la plus importante (64 ko) ; mais il
existe des mémoires 8 bits de capacité supérieure en boîtier 32
broches, les 27c010 (128 ko), 27c020 (256 ko), 27c040 (512 ko) et
27c080 (1 Mo). Si vous pouvez accéder à un programmateur prenant en
charge ces modèles, il est possible de développer un nouveau système
fonctionnant sur le même principe que celui décrit dans ces pages,
mais utilisant cet espace mémoire plus étendu. Jetons un oeil sur les
brochages des EPROMs :
La figure 1 ci-dessus nous révèle des informations qui vont nous faciliter la tâche :
- Les mémoires 27c0x0 possèdent des entrées d'adressage supplémentaires permettant l'accès à l'espace mémoire plus étendu : A16 pour la 27c010 ; A16 et A17 pour la 27c020 ; A16, A17 et A18 pour la 27c040 ; A16, A17, A18 et A19 pour la 27c080.
- Seule la 27c080 possède quatre entrées d'adresses correspondant aux quatre broches supplémentaires du circuit ; les broches disponibles sur les autres EPROMs sont destinées à la programmation : 'PGM(P)' et 'Vpp' (ou non connectée dans le cas de la broche 17 de la 27c010) ; en mode 'lecture' (notre configuration d'utilisation) il suffira de leur fixer un potentiel, mais elle ne nous gêneront pas, car elles ne requièrent pas de signaux particuliers.
- En dépit de la différence de nombre de pattes des circuits, le brochage de la 27c512 est en partie compatible avec celui des 27c0x0, à l'exception de la broche d'alimentation Vcc (pin 28 de la 27c512) qui est remplacé par la ligne d'adresse A17 ('Non Connectée' pour la 27c010), l'alimentation de la 27C0x0 se faisant sur la broche 32. Les broches 3 à 29 des 27c0x0 viennent donc en place et lieu des broches 1 à 27 de la 27c512, mais tiennent le même rôle.
Retenons
essentiellement de ce qui précède que nos "nouvelles EPROMs" ont
juste en plus 1, 2, 3 ou 4 broches d'adresses supplémentaires : A16,
A17, A18 et A19. Par ailleurs, nous disposons aussi de sorties au
niveau des compteurs CD4040, qui étaient jusque-là inutilisées : avec
deux compteurs à 12 étages 'en cascade', on dispose de 24 lignes
d'adresses (A0 à A23), nous utiliserons au moins les lignes A0 à A20.
La dernière sortie du compteur utilisée doit fournir une information
"Arrêt de défilement" (pour bloquer le signal d'horloge). La situation,
à ce stade de notre réflexion, est résumée figure 2 :
Comme
le laisse supposer la figure 2, il existe plusieurs possibilités de
combinaisons selon le type de mémoire 27c0x0, et selon le résultat
recherché : on peut vouloir privilégier la lecture d'un message plus
long, le choix parmi plusieurs messages courts, ou encore une solution
intermédiaire (quelques messages, un peu plus longs) ; ces différents
cas de figures vont être détaillés dans ce qui suit.
C'est
le cas le plus simple, qui est juste une extrapolation du montage
original, avec plus de lignes d'adresses ; comme on le voit figure 3,
les sorties supplémentaires des compteurs sont reliées directement aux
entrées d'adresses correspondantes de l'EPROM, quel que soit le
modèle de mémoire présent ; les éventuelles entrées PGM et Vpp seront
ainsi maintenues au niveau logique "0". La seule différence sera alors
le choix de la sortie du compteur indiquant la fin du message :
sélecteur sur A pour une 27c010, sur B pour une 27c020, sur C pour une
27c040 et sur D pour une 27c080. Le 'sélecteur' peut être un
commutateur, un 'micro-switch DIP', un cavalier sur un bout de barrette
sécable, ou un simple strap dans une configuration figée. Si on
laisse le sélecteur sur C avec une 27c020, le message sera lu deux
fois ; si on le met sur A avec la même mémoire, il sera tronqué et
seule la première moitié sera lue ; on en déduit assez facilement le
comportement du système dans d'autres cas de figures. La durée du
message enregistré dans une 27C080 est 16 fois plus longue qu'avec une
27c512 (8 fois avec une 27c040, 4 fois avec une 27c020, 2 fois avec
une 27c010).
La
figure 4 nous montre que l'on se retrouve exactement dans la
configuration du montage d'origine (défilement des adresses A0 à A15,
blocage par A16), la différence réside au niveau d'une roue codeuse
qui permet d'envoyer un code binaire de quatre bits sur les nouvelles
entrées d'adresses de l'EPROM. L'espace mémoire total se retrouve donc
cisaillé en 16 tronçons contigus, chacun ayant la taille mémoire
d'une 27c512. On peut ainsi sélectionner un message parmis 16 en
affichant son numéro en Hexadécimal sur la roue codeuse (0, 1, 2, 3,
4, 5, 6, 7, 8, 9, A, B, C, D, E ou F), et en pointant ainsi le tronçon à
balayer. En dehors de la 27c080, il y aura des adresses 'fantômes',
c'est à dire plusieurs numéros déclenchant le même message.
Par exemple avec une 27C020 :
- 0, 4, 8 et C lancent le premier message.
- 1, 5, 9 et D lancent le deuxième message.
- 2, 6, A et E lancent le troisième message.
- 3, 7, B et F lancent le quatrième message.
Ceci est dû au fait que, avec la 27c020, les entrées A18 et A19 sont purement ignorées. De même, avec la 27c010, il n'y a que deux messages différents, correspondants soit aux numéros pairs, soit aux numéros impairs. Avec une 27c080, on aura le choix parmi 16 messages, 8 pour une 27c040, etc. (chaque message ayant la durée de ceux stockés dans une 27c512).
Par exemple avec une 27C020 :
- 0, 4, 8 et C lancent le premier message.
- 1, 5, 9 et D lancent le deuxième message.
- 2, 6, A et E lancent le troisième message.
- 3, 7, B et F lancent le quatrième message.
Ceci est dû au fait que, avec la 27c020, les entrées A18 et A19 sont purement ignorées. De même, avec la 27c010, il n'y a que deux messages différents, correspondants soit aux numéros pairs, soit aux numéros impairs. Avec une 27c080, on aura le choix parmi 16 messages, 8 pour une 27c040, etc. (chaque message ayant la durée de ceux stockés dans une 27c512).
Cela
revient à utiliser certaines des entrées d'adresses supplémentaires
(celles de poids binaires les plus faibles, A16, voire A17 et A18)
pour rallonger la durée des messages (à la façon de la figure 3) ; les
entrées de poids les plus élevés (A19, voire A18 et A17) permettent
de sélectionner le message (dans l'esprit de la figure 4).
Le
premier exemple est celui de la figure 5 : les adresses A0 à A16
définissent des messages d'une durée double par rapport à ceux de la
27c512. A17 assure l'arrêt de la lecture. La roue codeuse permet
ensuite de choisir un de ces huit messages (en supposant une 27c080),
les combinaisons '8' à 'F' de la roues donnant le même résultat que
les combinaisons '0' à '7'. Avec une 27c010, la roue codeuse devient
inutile et l'on se retrouve dans le cas de la figure 3.
Le
second exemple, décrit figure 6, utilise deux entrées d'adresses
supplementaires (A16, A17), d'où des messages d'une durée quatre fois
plus importante qu'avec une 27c512. Avec une 27c020, il n'y a qu'un
message stocké, et l'interrupteur est inutile. Avec une 27c040, il y a
deux messages, l'interrupteur permettant le choix du message.
L'utilisation d'une 27c080 n'a pas de sens car l'entrée A19 n'est pas
connectée (en pratique, on la mettrait à la masse, car il faut tout de
même fixer la broche à un potentiel).
Comme
le précise le titre, il s'agit juste d'un prototype, il ne sera donc
pas décrit dans le détail, seuls seront donnés quelques éléments pour
vous guider si vous souhaitez mener à bien vos propres
expérimentations. N'hésitez pas à partir du circuit imprimé conçu
sous ARES, et à le transformer pour y intégrer les modifications.
Le
schéma présenté figure 7 s'inspire de celui de la figure 3, le
prototype retient donc l'option de ne lire qu'un seul message, mais le
plus long possible (A16, A17, A18 et A19 commandées directement par
les compteurs). Il est prévu pour pouvoir accueillir n'importe lequel
des quatre types de mémoires 27c0x0, mais aussi une 27C512, qui
occupera donc les 28 broches 3 à 30 du support 32 broches. Pour que
cela soit possible, un cavalier est prévu sur la carte pour orienter
vers la broche 30 du support :
- soit Vcc (l'alimentation +5v) dans le cas de la 27c512.
- soit l'entrée d'adresse A17 dans le cas d'une 27c0x0.
Il est également prévu un quadruple switch DIP qui permet le choix de la sortie du compteur envoyant le signal de fin de défilement. Un seul interrupteur est passant ('ON') à la fois ; si plusieurs le sont, c'est le premier qui est pris en compte, les quatre diodes permettant dans ce cas d'éviter un court-circuit entre les lignes d'adresses (A16, A17, A18 et A19). Selon le type de mémoire :
- soit Vcc (l'alimentation +5v) dans le cas de la 27c512.
- soit l'entrée d'adresse A17 dans le cas d'une 27c0x0.
Il est également prévu un quadruple switch DIP qui permet le choix de la sortie du compteur envoyant le signal de fin de défilement. Un seul interrupteur est passant ('ON') à la fois ; si plusieurs le sont, c'est le premier qui est pris en compte, les quatre diodes permettant dans ce cas d'éviter un court-circuit entre les lignes d'adresses (A16, A17, A18 et A19). Selon le type de mémoire :
- Avec une 27c512 : A est ON. B, C et D sont OFF.
- Avec une 27c010 : B est ON. A, C et D sont OFF.
- Avec une 27c020 : C est ON. A, B et D sont OFF.
- Avec une 27c040 : D est ON. A, B et C sont OFF.
- Avec une 27c080 : A, B, C et D sont tous OFF.
Si
le switch est mal configuré, le message sera lu plusieurs fois, ou
bien tronqué. La diode présente sur la sortie A20 du compteur met fin
au message dans le cas d'une 27c080, elle ne gêne pas le
fonctionnement des autres mémoires. Ne pas oublier de mettre le
cavalier pour le choix 27c512 / 27c0x0 sur la bonne position (sinon le
résultat peut être déroutant).
La
photo ci-dessus montre le prototype une fois câblé, avec le cavalier
juste à gauche du second CD4040, et le quadruple switch associé aux
diodes un peu au-dessus. Le montage des diodes et du switch n'est pas
très conventionnel, mais il facilite la réalisation du prototype. A
l'heure qu'il est, celui-ci fonctionne correctement avec les 27C010,
27C020 et 27C040 (ou leurs équivalents 27c1001, 27c2001, 27c4001),
mais je n'ai pas pu me procurer de 27C080 pour les essais ; si l'une
d'entre-elles encombre vos tiroirs, envoyez-la moi...
Bonjour, votre projet m'intéresse beaucoup. Pourrai-je vous poser quelques questions à propos de celui-ci ? :)
RépondreSupprimer