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