Electronique
> Réalisations
>
Amplificateur commandé en tension (VCA) 008
Dernière mise à jour :
29/03/2015
Présentation
Le VCA proposé ici est une version améliorée de mon
VCA 007
à base de potentiomètre numérique MCP41010. Il fait appel à un potentiomètre numérique
DS1802
de type log (courbe de variation mieux adaptée à l'audio) et à un PIC
12F675 qui
transforme une tension continue en une "commande informatique" comprise par le
potentiomètre.
La variation de la tension de commande comprise entre 0 V et +5 V se traduit par
une variation du taux d'atténuation du signal audio sur une plage de 0 dB à -63 dB,
avec un Mute "automatique" de -90 dB quand la tension de commande est
égale ou très proche de 0 V. Les changements de niveau se font sans
bruit (aucun clic) grâce au système de détection de passage par zéro
intégré au potentiomètre. L'alimentation du montage
s'effectue sous une tension simple de +5 V. Autre VCA de même type mais avec MAX5410 présenté à la page
VCA 008b.
Schéma
Encore un schéma bien curieux...
La partie supérieure du schéma représente le VCA avec son PIC
12F675 et son potentiomètre numérique DS1802, la partie inférieure
représente le circuit de régulation d'alimentation.
Fonctionnement général
Le
PIC "transforme" la tension de commande (0 V à +5 V) en commandes
logicielles qu'il envoie au potentiomètre numérique pour lui indiquer
quelle valeur d'atténuation il
doit
appliquer. Le DS1802 est un potentiomètre "stéréo" doté de deux organes
de réglage indépendants avec un curseur (wiper), et il se contente de
deux octets (un octet
pour chacun
des deux curseurs) ce qui permet de réduire à sa plus simple expression
le logiciel du PIC. Comme la commande du potentiomètre se fait sur 6
bits et que l'acquisition de la tension de commande fait appel à un CAN
10 bits, on obtient une valeur "trop précise" dont on tronque les
quatre bits de poids faible (cette troncation s'effectue simplement en
divisant par 16 la valeur lue en entrée du CAN). Ensuite, simple
transposition de la valeur tronquée en valeur d'atténuation, selon la
formule suivante
(valeur CAN comprise entre 0 et 1023) :
Valeur atténuation DS1802 = 63 - (CAN / 16)
Quelques exemples :
- Si valeur CAN = 0 (tension de commande de 0 V), alors Att = 63 - (0 / 16) = -63 dB
- Si valeur CAN = 200 (tension de commande de +0,9 V), alors Att = 63 - (200 / 16) = -50 dB
- Si valeur CAN = 840 (tension de commande de +4,1 V), alors Att = 63 - (840 / 16) = -10 dB
- Si valeur CAN = 1023 (tension de commande de +5 V), alors Att = 63 - (1023 / 16) = 0 dB
(à noter que 1023 / 16 = 63.9, je tronque et ne garde que la partie entière)
Décryptage : la plage de la tension de commande qui est comprise entre
0 V et +5 V est divisée en 64 tranches (codage sur 6 bits). L'écart
entre deux pas d'atténuation (de 1 dB) correspond donc à un écart de
tension de 78 mV (5 V / 64).
Tension
de commande
|
Valeur
CAN
|
Valeur DS1802
|
Atténuation
|
+5,00 V
|
1023
|
0
|
0 dB
|
+4,92 V
|
1008
|
1
|
-1 dB
|
+4,84 V
|
992
|
2
|
-2 dB
|
+4,77 V
|
976
|
3
|
-3 dB
|
...
|
...
|
...
|
...
|
+0,23 V
|
48
|
61
|
-61 dB
|
+0,15 V
|
32
|
62
|
-62 dB
|
+0,07 V
|
16
|
63
|
-63 dB
|
0 V
|
0
|
64
|
-90 dB (mute)
|
On remarque tout de suite que plus la tension de commande est élevée et plus le taux d'atténuation est
faible. En d'autres termes, l'amplitude du signal audio en sortie du potentiomètre est plus élevée si la
tension de commande est plus élevée. On pourrait bien entendu faire
l'inverse.
Côté potentiomètre numérique
Le DS1802 est un potentiomètre
bien sympathique et il a souvent été
comparé aux potentiomètres mécaniques de haute qualité (ALPS entre
autres). Pour une somme assez "modique", il offre une très bonne
qualité sonore (grande dynamique et faible distorsion). On peut le
piloter via un bus à trois fils (style SPI ou I2C) ou par le
biais de boutons-poussoirs (dans ce dernier cas, pas besoin de
s'encombrer d'un microcontrôleur). Il est conseillé de faire suivre ce
potentiomètre par
un étage tampon (buffer, suiveur), ce que je fais ici avec un MCP602
qu'on peut remplacer par un NE5532. Le schéma reprend une idée que j'ai
vue plusieurs fois adoptée sur divers sites Internet, à savoir décalage
en tension continue de la broche "inférieure" des potentiomètres (L0 et
L1). Cela permet d'éviter la distorsion par écrêtage qui ne manque pas
de se produire si le signal audio entrant est de "forte amplitude". Le
DS1802 accepte un poil de tension négative même s'il est alimenté
sous une tension unique de 5 V, mais ça ne va pas loin. Pour ma part je
polarise l'entrée des deux potentiomètre à une tension continue de +2,5
V (moitié de la tension d'alim) pour bénéficier du maximum d'amplitude
possible.
Côté logiciel PIC
Le logiciel effectue une acquisition de la
tension de commande toutes
les 100 ms (et donc 10 fois par seconde). Si la tension de commande lue
a
changée par rapport à la valeur lue précédement, la valeur
d'atténuation du potentiomètre numérique est aussitôt mise à jour. Le
temps mis pour transmettre les données au potentiomètre est de 170 us,
la fréquence d'horloge du bus de données est de 100 kHz environ - on ne
risque donc pas
trop de l'entendre même si un poil de ces données de commande
"repissent" dans l'audio. On pourrait fort bien effectuer des
acquisitions plus rapprochées (par exemple 1000 par seconde) mais pour
mon application je n'en vois pas l'intérêt.
Alimentation
Le schéma d'alimentation que je propose permet des essais rapides, mais
ne doit
pas être retenu dans un circuit finalisé (sauf si bien sûr il vous
convient). Une fois le circuit mis au point,
il convient de séparer l'alim 5 V de la section
logique/numérique avec l'alim +5 V de la partie analogique. La méthode
du découplage
par diode/condensateur pour séparer les parties numérique et analogique
donne de meilleurs résultats qu'une alim unique sans précaution
particulière, mais l'idéal reste bien sûr d'alimenter à part la section
analogique
(potentiomètres et AOP de sortie). Oui, je sais que dans nombre de
circuits du commerce on a une alim commune dont la sortie unique est
séparée via de vigoureux découplages à base de selfs et condensateurs.
Pour mon prototype, j'ai utilisé une
alim unique de 5 V pour l'ensemble du circuit, et cela a bien évidement
amené du
bruit de fond pas très sympathique (mais je l'ai fait en connaissance
de cause).
Prototype
Réalisé
sur plaque sans soudure reliée à ma platine EasyPic7 avec cinq fils
volants (alim et commande trois fils). Pour "accélerer" les tests, j'ai
alimenté tous les circuits intégrés sous une unique tension d'alim de
+5 V et n'ai donc pas intégralement respecté mon schéma. En outre, la
distribution de masse n'est pas des plus élégantes et les résultats s'en font
sentir (remontée de bruit). Mais je m'en doutais avant même de
démarrer le générateur
BF.
La méthodologie de mes tests n'est pas très rigoureuse mais elle est
suffisante pour vérifier le bon fonctionnement du système. Premières
mesures effectuées avec signal triangulaire (pour vérifier l'absence
d'écrêtage) puis mesures avec signal rectangulaire pour faciliter le
déclanchement de mon oscillo avec signaux de très faible amplitude.
Dans un
premier temps, je me suis assuré qu'en appliquant un signal BF à
l'entrée du potentiomètre numérique, j'avais bien un signal en sortie
dont l'amplitude dépendait de la tension de commande. Ensuite, j'ai
mesurée l'amplitude du signal de sortie avec une tension de commande de
+5 V et de 0 V et j'ai ensuite monté tout doucement la tension de
commande jusqu'à observer un petit saut de hauteur qui correspond au
passage de -90 dB à -63 dB. Mais pour être franc, il était très
difficile de
voir la différence entre le signal en sortie du potentiomètre avec
atténuation de
-63 dB ou -90 dB, d'une part à cause du bruit de fond trop élevé sur ma
maquette
(fils en l'air et alim commune aux parties numérique et analogique) et
d'autre part à cause du potentiomètre 3/4 de tour utilisé pour délivrer
la tension de commande, qui "crachait" un peu en bout de piste.
Une chose est sûre, cela fonctionne et les valeurs d'atténuation
obtenues sont conformes à celles attendues - tout du moins pour celles
qui sont inférieures (en valeur absolue) à -55 dB, une maquette plus
sérieuse serait requise
pour mesurer les taux d'atténuation les plus élevés.
Quelques valeurs relevées avant de prendre mon café :
- Tension de commande = 4,44 V -> atténuation = -6 dB (rapport en tension de 2)
- Tension de commande = 3,9 V -> atténuation = -12 dB (rapport en tension de 4)
- Tension de commande = 3,3 V -> atténuation = -20 dB (rapport en tension de 10)
Remarque concernant le signal entrant
Lors de mes tous premiers tests, j'ai utilisé un signal d'amplitude 1
Vcac centré sur 0 V (qui comportait donc des alternances négatives de
-0,5 V) et l'entrée se faisait directement sur le DS1802, sans pont
diviseur pour polarisation à Valim/2. Ce qui sortait alors du
DS1802 était un peu écrêté "en bas",
ce qui est logique puisque le max supporté par le composant est de -0,5
V en-dessous de la masse. J'ai ensuite ajouté les 8 résistances R3 à
R10 (quatre
ponts diviseurs, deux pour les entrées G et D et deux pour les sorties
G et D). La distorsion a disparu mais en contrepartie j'avais une forte
remontée du bruit de fond à
cause du +5 V numérique utilisé pour la partie analogique. Pour finir,
je suis revenu à une attaque directe du DS1802 (sans pont de
polarisation) mais avec un signal BF superposé à une tension continue
(offset) de +1 V. Le signal BF se baladait ainsi entre +0,5 V
et +1,5 V au lieu de se balader entre -0,5 V et +0,5 V, et les
résultats étaient très nettement meilleurs. Logique, c'est de l'analogique.
Logiciel du PIC
Le logiciel compilé (*.hex) est disponible
dans l'archive suivante.
VCA
008 - PIC 12F675 - 29/03/2015
Si
vous souhaitez recevoir par la poste un PIC préprogrammé
et prêt à utiliser, merci de consulter la page
PIC - Sources.
Circuit imprimé
Non réalisé, vue 3D pour aperçu général.
Historique
29/03/2015
- Première mise à disposition.