Electronique > Réalisations > Amplificateur commandé en tension (VCA) 008b

Dernière mise à jour : 05/04/2015

Présentation

Le VCA proposé ici est dérivé de mon VCA 008 à base de DS1802. Il fait appel à un potentiomètre numérique MAX4510 de type log (courbe de variation adaptée à l'audio) et à un PIC 12F675 qui traduit une tension continue en une commande d'atténuation interprêtée par le potentiomètre.

vca_008b_pcb_3d_a vca_008b_pcb_3d_b

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 à -62 dB, avec un Mute "automatique" de -86 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. Je n'ai pas mesuré la bande passante du circuit mais selon le fabricant Maxim elle est censée couvrir la plage 0 à 70 kHz. L'alimentation du montage s'effectue sous une tension simple de +5 V. Pour un système alimenté sous 3,3 V, il faut remplacer le MAX5410 par un MAX5408 (même brochage, amusez-vous bien).

Schéma

Schéma plus simple que celui équipé du DS1802. Mais avec de la bonne volonté, on peut le compliquer un peu. Au niveau du câblage par exemple.

vca_008b

La section alimentation n'est pas représentée, mais je pense que vous savez où chercher ;-)

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 MAX5410/MAX5408 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). Comme la commande du potentiomètre se fait sur 5 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 cinq bits de poids faible, cette troncation s'effectue en divisant par 32 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 MAX5410 = 31 - (CAN / 32)

Quelques exemples :
- Si valeur CAN = 0 (tension de commande de 0 V), alors Att = 31 - (0 / 32) = -62 dB
- Si valeur CAN = 200 (tension de commande de +0,9 V), alors Att = 31 - (200 / 32) = -48 dB
- Si valeur CAN = 840 (tension de commande de +4,1 V), alors Att = 31 - (840 / 32) = -12 dB
- Si valeur CAN = 1023 (tension de commande de +5 V), alors Att = 31 - (1023 / 32) = 0 dB
(à noter que 1023 / 32 = 31.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 32 tranches (codage sur 5 bits, valeurs 0 à 31). L'écart entre deux pas d'atténuation est de 2 dB et correspond donc à un écart de tension de 156 mV (5 V / 32).

Tension de commande
Valeur CAN
Valeur MAX5410
Atténuation
+5,00 V
1023
0
0 dB
+4,84 V
990
1
-2 dB
+4,67 V
959
2
-4 dB
...
...
...
...
+0,32 V
95
30
-60 dB
+0,15 V
33
31
-62 dB

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 (moins atténuée devrait-on dire) si la tension de commande est plus élevée. Obtenir l'effet inverse est également possible. Le mute est enclenché par une commande à part, on ne peut pas se contenter d'envoyer la valeur 32 au MAX5410. Cela demande un peu plus de lecture dans le datasheet mais ce n'est pas insurmontable, la preuve j'y arrive. A noter que les valeurs données ci-avant sont valables pour un MAX5410 alimenté sous 5 V. Si vous souhaitez utiliser un MAX5408 alimenté sous 3,3 V, pensez que la tension de commande ne doit pas excéder 3,3 V (valeur pour une atténuation nulle et niveau de sortie audio maximal).

Côté potentiomètre numérique
Contrairement au DS1802 qui offre un pas de variation de 1 dB, le MAX5408 offre un pas de 2 dB. Pour un réglage de volume cela suffit, même si à priori ce nombre de pas semble bien faible. Pour mon générateur d'enveloppe programmable élaboré en parallèle, j'ai toutefois préféré utiliser le DS1802 d'une part pour le pas de réglage plus précis, mais aussi à cause du type de boîtier (je suis toujours plus à l'aise avec les composants traversants).

Côté logiciel PIC
Au démarage, le logiciel effectue une transition douce (soft start) entre le max d'atténuation (-62 dB) et la valeur d'atténuation qui correspond à la tension de commande (-30 dB avec tension de commande de 2,5 V, par exemple). Le logiciel effectue ensuite une acquisition de la tension de commande à un rythme de 10 fois par seconde. Si celle-ci a changée par rapport à la valeur lue précédement, la valeur d'atténuation du potentiomètre numérique est mise à jour. Le temps mis pour transmettre les données au potentiomètre est de 180 us et la fréquence d'horloge du bus de données est de 100 kHz environ. Aucun intérêt ici à accélerer ce rythme, qu'on pourrait multiplier par 10 si on le souhaitait.

Alimentation
Pour mes tests, j'ai utilisé une alim 5 V commune à l'ensemble des circuits intégrés. Comme pour le VCA 008, j'ai été confronté à niveau de bruit assez élevé en sortie du montage (1 à 2 mVcac, soit -60 dB par rapport à mon signal utile de 1 Vcac), mais rien de surprenant ni d'alarmant vu le câblage du prototype.

Prototype

Réalisé sur plaque sans soudure reliée à ma platine EasyPic7 avec cinq fils volants (alim et commande trois fils). Pour les tests, j'ai alimenté tous les circuits intégrés sous une unique tension d'alim de +5 V. La distribution de masse n'est pas des plus soignées mais le montage fonctionne, malgré le surplus de bruit ramené par ce câblage de fortune. Le rapport S/B (signal/bruit) peut être amélioré d'au moins 20 dB avec un câblage soigné et une alim propre, vous n'aurez pas de mal à faire mieux que ce que j'ai fait là.

vca_008b_proto_001a vca_008b_proto_001b 

Pour ma maquette, la difficulté principale a été de "grossir" le plan de câblage du circuit intégré MAX5410, qui n'est pas des plus facile à manipuler. Pour cela j'ai utilisé un morceau de plaque d'expérimentation pré-percée au pas de 2,54 mm, et me suis servi des petits brins d'un fil de cuivre souple pour assurer les liaisons entre le composant CMS et les broches d'une barette sécable (elles aussi espacées de 2,54 mm, ça simplifie les choses).

vca_008b_proto_001c vca_008b_proto_001e vca_008b_proto_001f vca_008b_proto_001i

Pour faciliter la tâche de soudage des bouts de fil sur les broches très rapprochées du potentiomètre numérique, j'ai tordu vers le haut une broche sur deux. J'avais un peu peur de les casser mais au final tout s'est bien passé. Il m'a tout de même fallu une bonne demi-heure pour souder les 16 brins de cuivre et me forcer à me détendre. Pour les tests, j'ai opéré de la même façon qu'avec mon VCA 008 à base de DS1802 : un générateur BF (signal rectangulaire de 1 Vcac avec offset de 1 Vdc), un oscilloscope et quelques relevé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

Résultats conformes à ceux attendus. Mêmes relevés qu'avec le VCA 008, la seule différence est le pas de réglage qui passe de 1 dB à 2 dB. Là encore, à cause du bruit de fond, difficile de faire la différence entre atténuation de -62 dB et mute à -86 dB.

Logiciel du PIC

Le logiciel compilé (*.hex) est disponible dans l'archive suivante.
VCA 008b - PIC 12F675 - 05/04/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

05/04/2015
- Première mise à disposition.