Dernière mise à jour :
24/04/2016
Présentation
Générateur
d'enveloppe pour application audio, avec 16 pas de réglage.
Ce générateur d'enveloppe se permet de faire un petit mélange d'analogique et de
numérique. Il met à contribution un PIC 18F45K22, des multiplexeurs
analogiques CD4051 (sélecteur 1 parmi 8) et un potentiomètre
numérique MCP41010 (ou autres). Le déclenchement de
l'enveloppe est assuré par une impulsion positive (Trigger)
et il est possible de mémoriser 16 courbes d'enveloppe différentes.
Chaque courbe dispose de 16 pas de réglage, mais entre chaque pas à
lieu une interpolation linéaire qui en ajoute 15, ce qui équivaut à une
courbe d'enveloppe sur 256 pas. Le passage d'un pas à un autre se fait
ainsi en douceur, même si l'écart d'amplitude réglé entre deux pas est élevé.
Schéma
Quatre circuits intégrés et un clavier à 16 touches se partagent la
plus grande part du schéma. La zone vide en haut à gauche est bien
sûr prévue pour une extension future. Elle peut aussi servir pour apposer une signature (la votre de préférence).
Principe général
Le
signal audio que l'on doit "envelopper" passe dans un
potentiomètre numérique qui est commandé par un PIC. La forme de
l'enveloppe est définie par la position de 16 potentiomètres qui
délivrent une tension continue proportionnelle à la position de leur
curseur. La tension issue des potentiomètres est préalablement lue par
le PIC via des multiplexeurs analogiques et l'entrée d'un convertisseur
analogique/numérique (ADC en anglais, CAN en français), et les valeurs
acquises sont enregistrées dans une des 16 zones mémoire réservées à cet
usage dans le PIC. L'appui sur une des 16 touches du clavier provoque
la lecture et l'enregistrement en mémoire EPROM des tensions issus des
potentiomètres. L'envoi d'une impulsion sur l'entrée Trigger du montage
(pression du bouton-poussoir SW17 ou envoi d'une impulsion +5 V)
provoque une succession de changements de valeur du potentiomètre
numérique et donc de l'amplitude du signal audio qu'on lui applique à
cet instant précis. La vitesse de changement des pas, et donc la durée
de l'enveloppe, est déterminée par la position du curseur du
potentiomètre RV17.
Utilité d'un PIC 40 broches avec des multiplexeurs analogiques ?
Il
faut parfois faire un choix, j'ai fait celui-là. J'ai bien essayé
d'utiliser 17 broches configurées en entrées analogiques pour éviter
l'emploi des CD4051, mais je me suis heurté à un problème que je n'ai
pas encore su résoudre : toutes les entrées lues de façon individuelle
fonctionnaient très bien, mais en mode alterné et après un balayage des
16 premières entrées, un blocage survenait sur les entrées du port D
(la lecture ADC se faisait bien pour les 13 premières entrées mais plus
pour les 3 dernières). Je me suis ainsi résolu à utiliser des
multiplexeurs analogiques externes, ce qui présente l'avantage de
libérer des broches du PIC. Point non négligeable s'il me passait par
la tête l'idée d'ajouter un écran LCD ou d'utiliser un PIC avec moins de broches...
Lecture des tensions issues des potentiomètres
Les
16 tensions qui déterminent la forme de l'enveloppe sont lues les unes
après les autres. Les 8 premières tensions sont orientées vers la
broche RA0/AN0 du PIC grâce au premier multiplexeur U2, les 8
suivantes sont orientées vers la broche RA1/AN1 du PIC grâce au second
multiplexeur U3. La sélection de la tension à lire s'effectue de la
même façon pour les deux groupes de 8 tensions, via les broches de
commande A, B, C et INH des multiplexeurs CD4051. Notez que les broches
de sélection des entrées A à C des deux multiplexeurs sont reliées
ensemble, alors que les broches INH (Inhibition, désactivation) restent
indépendantes et permettent la "mise en circuit" d'un seul multiplexeur
à la fois (on peut dire qu'on utilise ces broches INH comme des broches
"CS", Chip Select). Chaque tension acquise est stockée en mémoire
dans un
tableau d'octets.
Elaboration de l'enveloppe
La construction de l'enveloppe est simple. Elle consiste à reprendre une à une les valeurs de tensions acquises
et à les envoyer à la queue-leu-leu au potentiomètre numérique via une
liaison SPI. Comme la différence de tension entre deux pas peut être
élevée, j'ai ajouté une interpolation qui consiste à rendre plus souple
le passage d'un pas à un autre. Ce n'est pas indispensable mais le
résultat sonore est moins brutal sur de brusques variations de pas. Au
final, on dispose d'une succession de 256 commandes envoyées en série
au potentiomètre numérique MCP41010.
Prototype
Essai de plusieurs potentiomètres numériques 10 kO
: MCP41010, MCP4231-103, DS1867-10, MAX5413, MAX5481, MAX5408/5410, DS1802. Les copies d'écran qui
suivent sont obtenues avec les mêmes réglages de potentiomètres de
dessin de l'enveloppe (les lignes notées CS2 sont en fait reliées à CS0).
Avec MCP41010 :
Avec MCP4231 :
Avec DS1867 (niveau de sortie plus faible et courbe plus "tassée", tension de -5 V appliquée sur la broche Vb) :
Avec MAX5413 :
Avec MAX5481 :
Avec
les potentiomètres standards tels que le MCP41010, je n'ai pas réussi à
avoir mieux que 46 dB d'atténuation quand le pot
numérique
est en position minimale, par rapport à la valeur de (quasiment) 0 dB
d'atténuation quand il est en position maximale. J'ai essayé d'avoir
une atténuation plus poussée en ajoutant un Mute (transistor MOSFET
style BS170) entre sortie et masse, activé en dehors de la période
d'enveloppe, mais le signal audio se trouve un peu distordu en sortie
(avec une alim symétrique je pourrais avoir mieux plus facilement, mais
je veux rester sur une alim simple).
J'ai également essayé avec une porte logique CD4066, mais la résistance
On à l'état passant est trop élevée et on ne gagne pas grand chose.
Bien sûr, la solution du relais électro-mécanique (résistance
contact très faible) est idéale d'un point de vue atténuation, mais cet
élément électro-mécanique n'est pas vraiment "compatible" avec le reste
du montage. Je pourrais éventuellement utiliser un relais statique de
RdsOn très faible, ou encore une association de deux portes analogiques
configurées en série-parallèle. Autre essai réalisé : deux pots num
MCP41100 (100 kO) + MCP41010 (10 kO) en configuration série/parallèle,
qui a permis de pousser l'atténuation max à 68 dB, ce qui est
mieux mais pas encore suffisant pour moi. Les tests avec MCP4231
donnent les meilleurs résultats en terme d'atténuation, il reste à
peine 100 uV de signal en sortie du pot avec 1 V à l'entrée, quand la
valeur spécifiée est de 0 (rapport de 10000, soit 80 dB d'écart).
Il faut dire qu'avec ce potentiomètre, on peut déconnecter les broches
en interne, via commande appropriée du registre TCON. Les derniers
essais ont porté sur des potentiomètres numériques avec fonction Mute
et détection de passage par zéro du signal audio pour éviter les clics
lors des changements de niveau. Avec le MAX5408/MAX5410, le
fonctionnement est excellent, on arrive bien aux 90 dB d'atténuation !
Mais circuits en CMS et approvisionnement difficile.
Le DS1802 me donne également entière satisfaction, premiers tests réalisés avec mon
VCA 008 et tests suivants réalisés avec mon
générateur d'enveloppe 003.
Si je trouve le temps (et des échantillons car je ne peux tout de même
pas acheter tous les composants de la planète) je testerai aussi les
DS1881 et LM1972.
Logiciel du PIC
Demande pro, logiciel non disponible.
Circuit imprimé
Non réalisé.
Historique
24/04/2016
- Première mise à disposition