Un enregistreur/reproducteur de huit minutes

Cet appareil permet d’enregistrer et de reproduire numériquement un message d’une durée maximale de huit minutes. Toutes les fonctions (REC, PLAY, STOP) sont commandées par trois poussoirs situés sur la platine. Le circuit peut être piloté de l’extérieur grâce à un connecteur barrette.



La firme ISD (Information Storage Devices, maintenant Winbond Electronics Corporation, pour en savoir plus reportez-vous au site www.winbond.com), a été une des premières sociétés à proposer une gamme de circuits intégrés (appelés ChipCorder) capable de remplir les mêmes fonctions qu’un magnétophone traditionnel (à bande ou à disque). Mais si les premières puces enregistreuses n’avaient qu’une capacité de quelques secondes, celles d’aujourd’hui (séries ISD4000 et ISD5000) contiennent jusqu’à seize minutes d’enregistrement vocal. Notre montage utilise le ISD4003 en version “08M” (capacité huit minutes). Vous le connaissez sans doute déjà si vous avez lu les articles ET519/ET537 (Un enregistreur de 16/64 messages) et encore mieux si vous avez construit un des deux appareils ! Dans le cas présent, le message est, en revanche, unique et il pourra donc avoir la taille de la capacité totale de la mémoire de la puce. Le circuit intégré, en boîtier dip 28 broches, dispose d’une mémoire “fl ash” de 1 920 ko (1 200 lignes de 1 600 cellules chacune), de convertisseurs A/N et N/A, d’un préamplificateur différentiel en entrée, d’une sortie “single-ended” et d’une unité logique de contrôle pour interfacer le ISD4003 à un microcontrôleur.
La tension d’alimentation nominale est de 3 V : ce peut être très utile pour un couplage avec un téléphone mobile…

Le schéma électrique
Vous le trouvez figure 1. Le ISD4003 enregistre un seul message d’une durée maximale de huit minutes (échantillonnage à la fréquence de 4 kHz). Il n’est par contre pas possible d’opérer une partition de la mémoire interne puisque chaque fois qu’on active la commande d’enregistrement le contenu précédent est surscrit (c’est-à-dire effacé par la nouvelle écriture). En fait, la capacité de mémoire de tous les modèles de ISD4003 (qu’ils fassent 4, 5, 6 ou 8 minutes) est égale : ce qui change, c’est la fréquence d’échantillonnage (voir figure 2), plus grande est la capacité, plus basse est cette fréquence et donc moindre est la qualité du son (avec notre ISD4003-08M, la bande du signal est limitée à 1,7 kHz par le filtre passe-bas “antialiasing” présent sur la ligne d’entrée). Cette bande passante réduite limite certes les applications possibles de ce circuit intégré, le montage ne pouvant être utilisé que pour l’enregistrement de la voix.
Les “ChipCorder” étant des enregistreurs audio, nécessitent des commandes pour activer l’enregistrement (REC), la reproduction (PLAY) et pour l’arrêt (STOP). Pour cela le ISD4003 doit recevoir des instructions et c’est pourquoi nous avons monté un microcontrôleur (PIC 16F876-EF552 déjà programmé en usine) dans le circuit : il gère les durées et les modes de travail (en fait, il élabore les instructions provenant de l’usager et les envoie au ISD en format sériel avec temporisation et synchronisation par signal d’horloge). Le contrôle se fait par interface à deux fils SPI (“Serial Peripheral Interface”) disponible à l’intérieur du micro dont les lignes RC3 et RC5 sont initialisées comme sorties : la première produit l’horloge synchronisant le transfert des données, la seconde est la sortie MOSI (“Master Out Slave In”) à travers laquelle les données passent du micro au ISD. Chaque fois qu’une commande est passée, le microcontrôleur s’occupe de mettre au niveau logique bas la broche 1 de U4 (SS), qui n’est autre que la ligne d’activation de la puce quand elle fonctionne en mode Esclave (“Slave”), comme c’est le cas pour notre montage. En dehors du fait qu’il envoie les instructions, le PIC doit encore contrôler les conditions de travail du ISD : ce dernier doit être considéré comme un simple magnétophone à cassette exécutant les instructions lui parvenant de l’usager. S’il reçoit une commande REC il enregistre jusqu’à ce que le micro (qui est ici le Maître ou “Master”), par une instruction de STOP, lui dise de s’arrêter. S’il reçoit une commande PLAY il lit toute la mémoire, indépendamment de la durée du message précédemment mémorisé. Le micro gère donc la totalité du “ChipCorder” en lui envoyant les commandes passées par l’usager et en lisant les signalisations émises par le ISD. À travers le port RB1 le micro lit le INT (broche 25) et à travers RC4 il vérifie les signaux arrivant du MISO (“Master In Slave Out”, soit la broche 3 du ISD4003).
Le signal INT est actif au zéro logique et il est utilisé par U4 dans deux situations particulières : en reproduction il indique la fin du message et en enregistrement l’atteinte de la dernière cellule de mémoire disponible. Si la puce, sur une demande de l’usager, cesse d’enregistrer avant d’avoir atteint la durée limite (huit minutes), INT reste à l’état logique haut.
Voyons ce qui se passe en reproduction : si le message a une durée inférieure à la capacité maximale de la mémoire, INT donne l’ordre au micro d’arrêter la lecture. Par exemple, avec un message d’une minute, en l’absence de signal de contrôle la reproduction continuerait pendant huit minutes, avec sept minutes de blanc… En revanche, grâce à notre système, à la fin du message une commande interrompant le cycle de reproduction est produite. Le programme résidant dans le PIC lit le INT, aussi bien en lecture qu’en écriture : en lecture, dès qu’il détecte le passage par le zéro logique, il envoie au ISD la commande de STOP, ce qui arrête la reproduction et met le composant au repos. En enregistrement, la fonction installée est la suivante : comme INT se met au niveau logique bas seulement si la durée disponible est dépassée, le PIC communique à l’usager (par voie lumineuse) que l’”overfl ow” (dépassement de capacité) est atteint et que l’enregistrement est terminé. Nous avons dit que la ligne MISO constitue la sortie sérielle de U4 : les signaux sortant de cette broche sont lus par le micro sur RC4 (broche 15).
Comme la tension d’alimentation du ISD est de 3 V et celle du microcontrôleur de 5 V, nous avons dû utiliser un circuit d’adaptation des niveaux logiques des deux dispositifs.
Quant aux entrées analogiques du ISD (auxquelles le signal audio est appliqué), leur configuration est de type différentiel (conseillée par le constructeur). La capsule microphonique electret utilisée est polarisée par R13 et R12 alors que C9 et C10 servent au découplage du continu.
Le réseau R14/C11 constitue un filtre passe-bas en série avec l’alimentation de la capsule afin de limiter le risque de bruit et de résidu d’alternatif superposés au signal audio utile. En ce qui concerne la sortie, le signal reproduit par U4 est disponible sur la broche 13 d’où il est acheminé à une sortie auxiliaire (BF) et à un final BF de petite puissance, un LM386 (U2) capable de fournir environ deux watts. Le signal peut être atténué par le trimmer R16, C14 découple le continu pour le LM386 et l’étage de sortie du ISD. Aux bornes SPK on peut relier un petit haut-parleur de 4, 8 ou 16 ohms de 2 W au moins. La sortie auxiliaire BF est conçue pour utiliser un système externe d’amplification ou pour envoyer le signal sur un mélangeur, un amplificateur de puissance ou la ligne téléphonique.

Figure 1 : Schéma électrique de l’enregistreur/reproducteur numérique.

NOMDURÉE MAXIMALE (minute)FRÉQUENCE ÉCHANTILLONNAGE (kHz)FRÉQUENCE COUPURE FILTRE (kHz)
O4M48,03,4
O5M56,42,7
O6M65,32,3
O8M84,01,7

Figure 2 : Les différentes versions du ISD4003.

Figure 3a : Schéma d’implantation des composants de la platine de l’enregistreur/reproducteur numérique.

Figure 3b : Dessin, à l’échelle 1, du circuit imprimé de l’enregistreur/reproducteur numérique.

Figure 4 : Photo d’un des prototypes de la platine de l’enregistreur/reproducteur numérique.

Liste des composants
R1 .... 300 Ω 1 %
R2 .... 200 Ω 1 %
R3 .... 270 Ω
R4 .... 4,7 kΩ
R5 .... 470 Ω
R6 .... 470 Ω
R7 .... 470 Ω
R8 .... 4,7 kΩ
R9 .... 4,7 kΩ
R10 ... 4,7 kΩ
R11 ... 4,7 kΩ
R12 ... 2,2 kΩ
R13 ... 2,2 kΩ
R14 ... 2,2 kΩ
R15 ... 1 kΩ
R16 ... 4,7 kΩ trimmer
R17 ... 1 kΩ
R18 ... 10 kΩ
R19 ... 4,7 kΩ
R20 ... 470 Ω
C1 .... 100 nF multicouche
C2 .... 470 μF 25 V électrolytique
C3 .... 100 nF multicouche
C4 .... 470 μF 25 V électrolytique
C5 .... 100 nF multicouche
C6 .... 220 μF 35 V électrolytique
C7 .... 10 pF céramique
C8 .... 10 pF céramique
C9 .... 100 nF multicouche
C10 ... 100 nF multicouche
C11 ... 4,7 μF 63 V électrolytique
C12 ... 220 nF 63 V polyester
C13 ... 220 nF 63 V polyester
C14 ... 220 μF 35 V électrolytique
C15 ... 10 μF 63 V électrolytique
C16 ... 220 μF 35 V électrolytique
C17 ... 100 nF multicouche
C18 ... 100 nF multicouche
C19 ... 10 μF 63 V électrolytique
C20 ... 100 nF multicouche
C21 ... 1 μF 63 V électrolytique
D1 .... 1N4007
D2 .... 1N4007
D3 .... 1N4007
D4 .... 1N4007
LD1 ... LED 5 mm verte
LD2 ... LED 5 mm jaune
LD3 ... LED 5 mm rouge
U1 .... L7805
U2 .... LM386
U3 .... PIC16F876-EF552 déjà programmé en usine
U4 .... ISD4003
U5 .... LM317
Q1 .... quartz 20 MHz
T1..... BC547
T2..... BC557
T3..... BC557
P1 .... micropoussoir
P2 .... micropoussoir
P3 .... micropoussoir

Divers :
4 borniers à 2 pôles au pas de 5 mm
1 support 2 x 4
1 support 2 x 14 au pas double
1 support 2 x 14
1 barrette mâle 6 pôles
1 microphone préamplifié
1 haut-parleur 8 ohms 70 mm
Sauf spécification contraire, toutes les résistances sont des 1/4 W à 5 %.



Le microcontrôleur
La gestion de l’enregistreur numérique lui doit tout : à travers l’interface SPI, il dialogue avec le ISD4003 dont il contrôle le fonctionnement. Il ne met en marche l’amplificateur de puissance LM386 que lorsqu’on en a besoin, c’est-à-dire pendant la reproduction : quand la ligne RC2 est mise au niveau logique bas, le PNP T3 est saturé et ainsi le LM386 est mis sous tension. Les RA0 et RA1 sont aussi initialisées comme sorties : quand on met les broches 2 et 3 (correspondant à RA0 et RA1) à l’état logique haut, LD3 (jaune) et LD2 (rouge) s’allument (elles signalent la reproduction et l’enregistrement).
Les trois lignes RB5, RB6, RB7 complètent le “set” des E/S initialisées à la mise sous tension du microcontrôleur : elles constituent les entrées pour la lecture des touches REC, STOP et PLAY.
Chacune possède à l’intérieur un transistor MOS de “pull-up” (maintien du niveau haut). Les commandes REC, PLAY, STOP sont donc actives quand elles sont au niveau logique bas.
Afin d’étendre les possibilités d’utilisation du circuit, les broches 26, 27 et 28 sont disponibles également de l’extérieur, de façon à permettre d’intervenir sur l’enregistreur automatiquement au moyen d’un autre microcontrôleur. Nous pourrons ainsi, par exemple, le coupler à un capteur de mouvement afin de reproduire un message quand le passage d’un client (promobox dans un commerce) ou d’un véhicule (annonce vocale dans un parc autos) est détecté. Les diodes en série avec les broches 26, 27 et 28 permettent de relier les entrées P (PLAY), S (STOP) et R (REC) à des dispositifs fonctionnant sous des tensions différentes de 5 V : si la cathode d’une d’elles est mise à 0 V, alors la broche correspondante du micro se met au niveau logique bas et si un potentiel supérieur à 5 V est présent, la diode ne permet pas le passage du courant (polarisation inverse protégeant la ligne et évitant tout dommage).

L’alimentation
Les tensions nécessaires à cet appareil enregistreur (+3 V et + 5 V) sont obtenues à partir de la tension d’entrée de 12 V (tension continue, même si elle n’est pas stabilisée, à appliquer en PWR + et –) : elle est filtrée par C1 et C2, D1 protège le circuit contre toute inversion de polarité, la tension d’alimentation de 12 V est disponible aussi sur le connecteur barrette de sortie (pour alimenter un éventuel dispositif externe, comme un capteur de proximité ou de mouvement ou un temporisateur pour la reproduction cyclique, etc.). U1 est le régulateur de tension 7805 fournissant le 5 V aux points IN et GND (pour le microcontrôleur et l’amplificateur). À sa sortie, un second régulateur U5 (LM317) fournit une tension variable que le concepteur peut facilement paramétrer avec le pont R1/R2 sur la broche ADJ : dans notre circuit U5 fournit le 3 V alimentant le ISD et l’étage d’entrée microphonique. LD1 indique la présence du 3 V alimentant le ISD4003.

Le programme résident
Pour mémoriser les messages, il est nécessaire de maintenir P1 pressé pendant toute la durée de l’enregistrement, pour faire autrement il suffit de mettre au zéro logique la cathode de D2. Sur notre site Internet, vous trouverez le programme principal résidant dans le PIC : celui-ci tourne en boucle dans l’attente d’un événement et, quand il survient, il appelle la routine “record” laquelle met au niveau logique bas la broche 4 (RA2) du micro.
Ainsi, la broche 1 (SS) du ISD se met au niveau logique bas et par conséquent l’enregistreur est activé et il est prêt à remplir les fonctions demandées.
De plus, la broche 2 (RA0), activant LD3 (rouge, signalisation REC), se met au niveau logique haut. Le PIC charge alors en mémoire les instructions à envoyer en mode sériel au ChipCorder à travers RC5 (la ligne MOSI de l’interface SPI). La routine de commande prévoit les instructions : POWERUP, SETREC, REC. La première (bit de contrôle respectivement à 00100) active le ISD4003 et le prépare à exécuter les deux autres, la deuxième (00101) établit les marges d’enregistrement et la suivante (01101) force le circuit intégré à enregistrer jusqu’à la survenue de la commande STOP, ou bien jusqu’au remplissage complet de la mémoire. La syntaxe exacte de la deuxième instruction comprend l’adresse par laquelle commencer, exprimée avec onze bits, suivie du code d’identification (justement, 00101).
Pour terminer la mémorisation, il faut agir sur P2 (STOP) : ainsi le micro synthétise et envoie la commande STOPPWRDN (cette commande non seulement bloque l’enregistrement mais arrête toutes les opérations et met en “standby” U4). La syntaxe de la commande ne prévoit aucune adresse et présente les bits de contrôle paramétrés comme x10x0 (par “x” on entend que les bits correspondants peuvent être indifféremment au 1 ou au 0 logiques). L’arrêt manuel force aussi l’extinction de la LED rouge. À partir de l’envoi de l’instruction REC, il programme teste continûment la condition logique de la ligne RB1 : si, avant que l’usager n’arrête manuellement la procédure (en mettant au niveau logique bas la broche 27, au moyen de P2 ou à travers la ligne S), la broche INT de U4 se met au zéro logique et y reste, le micro s’en aperçoit et envoie l’instruction STOPPWRDN. Cette condition est signalée par LD3 laquelle, avant de s’éteindre, clignote cinq fois rapidement.
L’enregistrement terminé, le PIC remet au niveau logique haut la ligne SS du ISD afin de désactiver l’enregistreur numérique.
La reproduction est un peu plus complexe car elle met en oeuvre une ligne de plus. On commence en mettant au zéro logique la ligne RB7 au moyen de P3 ou en intervenant avec un dispositif externe sur le point P. Cette condition, lue par le programme principal tournant en boucle, active la routine de PLAY contenant trois instructions pour le ISD et trois pour l’activation stable des lignes RA2, RC2 et RA1. Cette dernière est mise au niveau logique haut et permet à la LED jaune de s’allumer alors que RC2 passe du niveau logique haut au niveau logique bas et y reste, ce qui sature T3 et alimente l’amplificateur de sortie. RA2 elle aussi se met à zéro, de façon à activer U4 (à travers la broche 1, SS) et à le préparer à recevoir du micro le signal d’horloge et les commandes sur l’interface SPI. Les instructions pour le ISD4003 (contenues dans la subroutine “ply”) sont, dans l’ordre, POWERUP, SETPLAY, PLAY : la première (code 00100, sans adresse) met fin à l’état de “standby” et prépare le circuit intégré au déroulement des opérations suivantes requises et la deuxième lance la reproduction à partir de l’adresse spécifique (la syntaxe prévoit onze bits d’adresse binaire et cinq bits de contrôle, réglés comme 00111). La troisième (bit de contrôle 01111, sans adresse) fait procéder à la lecture de la mémoire et à la conversion N/A jusqu’à ce que la ligne RB6 soit forcée au zéro logique, ou bien jusqu’à ce que la mémoire soit pleine (c’est-à-dire que le message y ait occupé tout l’espace disponible).
En reproduction aussi le micro teste continûment la ligne RB1 pour saisir l’instant où la broche INT du ISD donne l’impulsion de niveau logique bas correspondant à la fin du message. Dès que cela arrive, la routine spécifique du PIC appelle la subroutine “finish”, par laquelle est envoyée à U4 la commande STOPPWRDN (sans adresse et avec bit de contrôle x10x0) arrêtant l’opération en cours et mettant au repos le circuit intégré (la LED jaune s’éteint et la ligne SS du ISD ainsi que la broche 13 se met au niveau logique haut afin d’éteindre l’amplificateur). La même chose se passe si l’usager met au niveau logique bas le point S ou presse P2. Une particularité de la reproduction consiste dans le fait qu’on peut la poursuivre indéfiniment en maintenant au niveau logique bas la ligne de commande correspondante, c’est-à-dire en maintenant toujours pressé P3 : en effet, le logiciel est structuré de telle façon que le signal de fin de message (que l’on a quand INT se trouve à l’état logique bas) est ignoré si la broche 28 se trouve à l’état logique bas. En fait le programme ne force au niveau logique haut ni RC2 ni RA2 et laisse l’amplificateur allumé et le canal de données du ISD activé. La LED jaune reste allumée car RA1 ne revient pas à zéro. Le PIC envoie à nouveau les commandes de SETPLAY et PLAY, ce qui produit la répétition du message dans le haut-parleur. Quand l’impulsion arrive sur la ligne INT, la routine de PLAY vérifie à nouveau la condition de RB7 : si la ligne se trouve encore au zéro logique, le cycle est répété et le message est lu encore une fois, sinon on part de la subroutine “finish”. Le tout se répète car le contrôle de RB7 se fait en boucle.
Cette modalité particulière a été prévue pour permettre la reproduction cyclique du message (bien des applications commerciales y trouveront leur compte).

Figure 5 : Contrôles et réglages.

1. Touches REC, STOP, PLAY.
2. Lignes pour la gestion du ISD4003 par un microcontrôleur externe. Sont disponibles les lignes pour le contrôle des fonctions d’enregistrement (R), reproduction (P) et d’arrêt (S), une ligne pour le contrôle de la broche “INT” du circuit intégré, la masse et le +12 V alimentation.
3. Bornier pour connecter l’alimentation (+12 Vcc).
4. LED verte signalant la présence de l’alimentation.
5. Entrée pour microphone electret.
6. Trimmer régler le volume de sortie.
7. Prise haut-parleur (4, 8 ou 16 Ω).
8. Line Out.
9. LED jaune (allumée en reproduction).
10. LED rouge (allumée en enregistrement).

La réalisation pratique
Nous pouvons maintenant passer à la construction de l’appareil. Le montage tient sur un circuit imprimé dont la figure 3b donne le dessin à l’échelle 1.
Quand vous l’avez devant vous, montez-y tous les composants dans un certain ordre (en ayant constamment sous les yeux les figures 3a et 4 et la liste des composants). Commencez par les supports de circuits intégrés (ceux-ci seront insérés à la toute fin, dans le bon sens !) et terminez par les borniers.
Parmi les deux sorties audio, celle qui est préamplifiée est disponible sur le bornier désigné par SPK et la sortie directe (à amplifier soi-même pour un meilleur son) sur le bornier désigné par BF. Le bornier PWR, reçoit le 12 V à 15 V d’alimentation générale (au moins 400 mA). Le bornier MIC d’entrée microphone est en bas près de SPK. Réglez le trimmer R16 afin d’obtenir le volume d’écoute désiré et vérifiez bien que les LED s’allument comme indiqué plus haut.

1 commentaires:

  1. bonjour,

    peut on avoir le programme du pic s'il vous plait merci

    RépondreSupprimer

Related Posts Plugin for WordPress, Blogger...