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.

vca_008_pcb_3d_a

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...

vca_008

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.

vca_008_proto_001a vca_008_proto_001b vca_008_proto_001c

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.

vca_008_proto_001_graphe_001a vca_008_proto_001_graphe_001b vca_008_proto_001_graphe_001c

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.

vca_008_proto_001_graphe_001e vca_008_proto_001_graphe_001f vca_008_proto_001_graphe_001g vca_008_proto_001_graphe_001h

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.