Dernière mise à jour :
08/01/2017
Présentation
Ce vumètre stéréo à 16 niveaux (16 points lumineux par voie) a été
conçu pour des besoins pédagogiques - cours auprès d'élèves
en formation "son".
(clic pour aggrandir)
Son cahier des
charges était le suivant :
- balistique (temps de réaction et de relâchement)
commutable. Temps
d'attaque rapide (fonction crêtemètre) ou lent (fonction vumètre).
- seuil d'allumage ajustable de façon indépendante
pour chaque point lumineux de l'échelle, entre -30 dB et +9 dB.
- mémorisation de plusieurs presets utilisateur pour les
paramètres décrits ci-avant.
- affichage lumineux géant (on doit voir distinctement tous les points lumineux du fond d'un amphi)
Avertissements
- Ce projet a fait l'objet d'un dépôt de paternité
auprès de l'INPI
(Institut National de la Propriété Industrielle) sous le numéro 424252.
Il fait partie d'un projet plus ambitieux développé pour des besoins
pédagogiques, qui a fait l'objet d'un mémoire de fin d'année scolaire
pour l'école 3IS où j'ai passé mes études "techniques du son" en
2010-2011, projet global lui aussi protégé à l'INPI.
- Le fait qu'il est possible de spécifier des valeurs de
seuils
quelconque
pour chaque point lumineux de l'échelle peut conduire à des
affichages fantaisites qui peuvent prêter à confusion. Il est donc
important de savoir ce qu'on fait et de dire ce qui doit l'être avant
de le montrer en fonctionnement à des élèves. Avantage : il
est
possible d'inverser le sens de progression global de
l'échelle lumineuse (niveau faible en haut et niveau fort en bas), pour
pouvoir mettre en évidence un taux de
réduction et non une amplitude, comme cela est communément fait sur les
compresseurs de modulation.
Choix de conception
Il
existe plusieurs façons de réaliser un vumètre électronique
dont
le seuil d'allumage de chaque point est ajustable.
Traitements et réglages entièrement faits dans le domaine analogique ou
avec
un soupçon de
numérique. Le simple fait de prévoir des sauvegardes m'a conduit au
tout numérique, et j'ai trouvé là une nouvelle occasion
d'écrire quelques lignes de code pour un PIC. Côté réglages "temps
réels", il me paraissait évident que je devais opter pour des
potentiomètres de tableau pour les temps de montée (attaque) et de
descente
(relâchement). Par contre pour
le réglage des seuils ce n'était pas si évident. L'usage d'un
potentiomètre par point d'échelle est simple à mettre en oeuvre si on
utilise de simples comparateurs de tension, mais il
complique singulièrement les sauvegardes sous forme de presets.
L'usage de
boutons et menus de réglages avec microcontrôleur et affichage LCD
simplifie certes les
sauvegardes, mais rend aussi les manipulations fastidieuses. J'ai donc
opté pour
un mélange des deux technologies, à savoir utilisation
de potentiomètres réels pour définir les différents seuils, dont
les tensions sont exploitées via des convertisseurs analogique /
numérique. Cela donne la possibilité de
sauvegarder et de rappeler directement une configuration parmi
plusieures, et
une reprise automatique en manuel dès qu'un potentiomètre est
manoeuvré. Le signal BF d'entrée est redressé et intégré par un étage
purement analogique qui délivre une tension continue. Cette tension
continue est convertie en numérique dans un PIC et est comparée aux
tensions - enregistrées sous forme elle aussi numérique -
qui constituent les seuils d'allumage des points
lumineux. Le procédé est donc aussi simple dans le fond qu'il ne l'est
en
superficie.
Schéma
Le
coeur du montage repose sur un PIC 18F2520 dont presque toutes les
broches sont
mises à contribution. Pour plus de clarté, le schéma total est divisé
en deux sous-schéma :
-
schéma 015 - Entrées
: étage d'entrée analogique - amplification, redressement et filtrage,
réglage des seuils d'affichage;
-
schéma 015 - Affichage
: section uC (microcontrôleur) et affichage par LED.
Les
liaisons entre les deux sous-schémas sont établies par des points de
liaison. Par exemple, le point marqué Thrs01 visible sur le schéma des
entrées est électriquement relié au point marqué Thrs01
visible
sur le schéma de la section affichage. Voir si nécessaire explications
en page
Conventions schémas
du site.
Schéma 015 - Entrées : étage d'entrée - redressement et
filtrage, réglage des seuils d'affichage
Schéma 015 - Affichage : section uC et affichage par LED.
Circuit d'entrée
L'entrée
du vumètre étant stéréo, on découvre tout naturellement deux sections
identiques pour traiter le signal BF entrant. Le schéma est assez
classique dans le sens où il fait appel à un circuit de redressement
rapide à diodes, suivi de deux cellules d'intégration qui fixe les
temps
d'attaque et de relâchement pour les modes d'affichage moyenné et
crête. Que de termes compliqués pour désigner
simplement un temps de charge ou de décharge plus ou mois rapide de
banals condensateurs... En sortie des cellules d'intégration
(sur les condensateurs Cx) on recueille une tension continue qui suit
l'enveloppe du signal BF et dont la valeur représente
son amplitude électrique au fil du temps. Plus le signal BF possède une amplitude
élevée et plus cette tension continue est élevée. A ce stade, on
pourrait d'ailleurs l'utiliser pour attaquer un circuit d'affichage LED
de type LM3915 comme cela est fait pour le
vumètre 008.
Mais ce n'est
pas ce qui est fait ici, et la tension de mesure est échantillonnée
puis numérisée par le PIC. Décortiquons maintenant en détail ce fameux
circuit d'entrée analogique qui assure amplification, redressement et
filtrage. Comme la situation se présente de la même façon pour les deux
voies gauche et droite, nous n'analyserons que la voie gauche. L'entrée
se fait sur le potentiomètre RV17 monté en diviseur de tension
- en réglage de niveau - et on receuille sur son curseur une
fraction
plus ou moins élevée du signal d'entrée BF appliqué au point InL.
Le condensateur de liaison C17 s'oppose au passage de toute composante
continue qui aurait pu arriver en ce point, et on retrouve notre signal
BF sur l'entrée non-inverseuse du premier AOP U8:A qui est monté en
amplificateur de tension. Ce dernier présente un gain voisin de 10,
soit +20 dB (en fait un petit poil plus, mais retenez l'ordre de
grandeur). Si le signal d'entrée est de très forte amplitude, point
besoin d'amplifier beaucoup ici et on pourra dans ce cas diminuer la
valeur de la résistance R43 (au lieu de 100 kO, mettre une 22 kO pour
un gain voisin de 3, par exemple). L'AOP suivant (U8:B) assure un
redressement des alternances négatives seules, les alternances
positives sont ignorées. L'AOP U8:C inverse la polarité du signal
redressé ce qui fait qu'on retrouve sur sa sortie (broche 8) une
tension continue qui est toujours positive. A ce stade le circuit
réagit de façon rapide pour ne pas dire de façon instantanée et la
tension continue suit fidèlement l'enveloppe du signal d'entrée, sans
aucun retard. C'est bien mais ce n'est pas suffisant pour un affichage
de type vumètre ou crête-mêtre. Pour la fonction vumètre il faut
intégrer ce signal électrique pour le ralentir (ballistique 300 ms) et
pour ce faire on
utilise un simple réseau RC (résistance + condensateur) monté en filtre
passe-bas. Ici la tâche est confiée au couple R52/C19, la résistance
R51 placée en parallèle sur C19 à une valeur tellement élevée que la
décharge du condensateur se fait lentement, c'est la retombée de
l'aiguille du vumètre quand le signal BF diminue ou disparait. Pour ce
qui est des crêtes, il ne faut pas ralentir avec autant de vigueur le
signal rapide dont nous disposions ci-avant (ballistique inférieure à
10 ms) et le temps de retour à
zéro doit être plus rapide. En fait il faut même éviter de le
ralentir et se contenter dans la mesure du possible de mémoriser les
valeurs hautes. Là encore on fait appel à un circuit RC, ici nommé
R49/C18. La valeur de R49, comparée à celle de R52, est bien plus
faible, ce qui garantie une charge bien plus rapide du condensateur du
réseau d'intégration. De même, la valeur de R50 placée en parallèle sur
C18 est plus faible que celle de R51, ce qui assure un temps de
relâchement (décharge du condensateur) plus rapide. Les diodes zener
D37
et D38 de 5,1 V sont obligatoires, elles limitent l'ampleur de la
tension continue arrivant sur les entrées du PIC configurées en entrées
analogiques. Ce serait bête de griller le PIC pour un signal BF un peu
trop vigoureux... Après ça, la suite des opérations se fait dans le
domaine du tout numérique et c'est le PIC qui prend la relève.
Seuils des points lumineux
Les
tensions analogiques utilisées pour définir les seuils sont fournies
par de simples potentiomètres (RV1 à RV16) montés en diviseur de
tension. L'acquisition
(échantillonage et numérisation) des tensions issues du curseur de ces
potentiomètres se fait elle aussi au
travers du convertisseur analogique / numérique
du PIC, dont l'unique entrée interne est routée vers l'une des broches
qu'il comporte via de simples commandes logicielles de sélection de
voie. Comme on souhaite disposer de 16 seuils différents et que le PIC
choisi ne possède que 10 broches pouvant être configurées en entrée
analogique, j'ai ajouté des multiplexeurs analogiques de type CD4052
pour doubler le nombre de voies analogiques mesurables (en fait le
nombre est quadruplé mais on se contente de deux fois plus). Le
circuit CD4052 intègre en un même boîtier deux multiplexeurs à
quatre entrées / une sortie. Notons au passage que les termes
"entrée" et "sortie" peuvent être intervertis car ces multiplexeurs
analogique (qui peuvent aussi servir en numérique) sont de type
bidirectionnels. Une seule des quatre "entrées" (par exemple X1 ou Y2)
peut à un instant donné être connectée sur l'unique "sortie" (X ou Y),
selon l'état logique des entrées de sélection A et B. Remarque : il ne
peut pas y avoir de connexion entre les "entrées" X0 à X3 et la
"sortie" Y, les deux multiplexeurs X et Y sont complètement
indépendants, hormis leurs entrées logiques de commande A et B. Le
tableau qui suit établit la table de vérité (conditions de
fonctionnement) de ces multiplexeurs. Le caractère "-" dans les
cellules qui ne sont pas colorées en vert indique qu'il n'y a pas
liaison électrique entre les deux points concernés.
A
(SelA) |
B
(SelB) |
X-X0
(AnX) |
X-X1
(AnX) |
X-X2
(AnX) |
X-X3
(AnX) |
Y-Y0
(AnY) |
Y-Y1
(AnY) |
Y-Y2
(AnY) |
Y-Y3
(AnY) |
0 |
0 |
Connecté |
- |
- |
- |
Connecté |
- |
- |
- |
0 |
1 |
- |
Connecté |
- |
- |
- |
Connecté |
- |
- |
1 |
0 |
- |
- |
Connecté |
- |
- |
- |
Connecté |
- |
1 |
1 |
- |
- |
- |
Connecté |
- |
- |
- |
Connecté |
Le seuil de
chaque segment lumineux est le même pour les deux voies G et
D, on
ne peut pas spécifier une valeur de seuil différente entre le second
point lumineux gauche et le second point lumineux droit, par exemple.
Une telle possibilité, si elle avait existé, aurait sans doute permis
de plus s'embrouiller les pinceaux et de toute façon je n'en voyais pas
vraiment l'intérêt.
Remarque
concernant le choix des multiplexeurs analogiques : à la place des
CD4052, on peut utiliser des multiplexeurs plus récents, par exemple le
ADG509F de Maxim. La valeur de la résistance à l'état passant RdsOn est
importante mais pas critique si la source des tensions de référence se
fait sous impédance faible, ce qui est le cas ici. Pour le CD4052 elle
est de l'ordre de 100 ohms, ce qui ne pose aucun problème ici, et pour
le ADG509F elle est voisine de 300 ohms.
Mémorisation et rappel des presets utilisateurs
Le
circuit est capable de mémoriser huit configurations complètes, soit 8
x 16 valeurs de seuils. Ces derniers étant chacun définis par un mot de
10
bits (résolution initiale du CAN inclus dans le PIC), cela nous oblige
à utiliser deux octets pour chaque valeur de
seuil. Ce qui demande au total 16 x 16 octets, soit 256 octets
si
ma calculatrice cérébrale ne me
trompe pas en ces temps tourmentés. La sauvegarde se fait dans l'EEPROM
du PIC, laquelle est
capable à tout instant de restituer les valeurs sauvées sur simple
demande. La sauvegarde et le rappel des configurations s'effectue via
un clavier de douze touches tout fait ou réalisé avec douze
boutons-poussoirs classiques. Les huit premiers boutons SW1/P1 à SW8/P8
sont liés aux
numéros de configurations (presets), les quatre derniers SW13 à SW16
permettent la sauvegarde
et le rappel. Les boutons SW9 à SW12 présents sur le
schéma
n'ont actuellement aucun rôle. Mais allez savoir ce que nous prévoit
l'avenir...
Procédure de rappel d'une
configuration
1
- Appuyer sur le bouton SW13/Load. Tous les segments
clignotent 2
fois pour indiquer la bonne prise en compte de l'action.
2
- Appuyer sur le bouton correspondant au numéro de
configuration
désiré.
Le voyant correspondant au preset choisi clignote brièvement pour
confirmer le rappel (si preset N°5, clignotement du segment N°5), puis
tous les segments clignotent 2
fois pour indiquer que le rappel de configuration est terminé. Il
n'est pas nécessaire d'appuyer sur le bouton SW16/Valid pour confirmer
le rappel d'une configuration, car une mauvaise manip avec cette action
est moins "critique".
Remarque
: si vous appuyez sur un bouton de preset SW1/P1 à SW8/P8
alors
que le bouton SW13/Load n'a pas été appuyé au préalable, l'action est
ignorée et tous les segments clignotent juste une fois.
Procédure de sauvegarde
d'une configuration
1 - Appuyer sur le bouton SW14/Save. Tous les segments clignotent 3
fois pour indiquer la bonne prise en compte de l'action.
2
- Appuyer sur le bouton correspondant au numéro de
configuration désiré.
Le voyant correspondant au preset choisi clignote brièvement pour
confirmer la sauvegarde (si preset N°3, clignotement du segment N°3).
3
- Appuyer sur le bouton SW16/Valid pour confirmer l'action. Tous les
segments clignotent 4
fois pour indiquer que la sauvegarde de configuration est terminée.
Vous pouvez aussi appuyer sur le bouton SW15/Cancel pour
annuler
l'opération en cours, et dans ce cas tous les segments clignotent juste
une fois.
Remarque :
si vous appuyez sur
un bouton de preset SW1/P1 à SW8/P8 alors que le bouton
SW14/Save n'a
pas été appuyé au préalable, l'action est ignorée et tous les segments
clignotent juste une fois.
Affichage LED
L'affichage
des deux rubans lumineux de 16 LED chacun conduit ici à
ajouter un
peu de mécanique à celle puissante mais "incomplète" du PIC. Ce dernier
en effet ne dispose pas des 32 broches qu'il nous
faudrait pour
attaquer directement les 32
LED. Pour contourner le problème, j'ai utilisé une technique qui a déjà
fait ses preuves, à savoir utilisation de registres à décalage de type
CD4094 pour envoi des informations (LED allumées ou éteintes)
en
mode série. Cette façon de faire réclame 3 broches au PIC et cette
faible exigeance nous arrange drôlement bien. Et même si vous n'y voyez
rien de drôle, considérez l'évenement comme heureux (c'est grâce à de
petits détails comme celui-ci qu'on se sort parfois de situations
impossibles). Un CD4094 disposant de 8 sorties, on peut se contenter de
quatre pièces pour nos 32 LED. Même pas de gâchis, toutes les broches de sortie
des CD4094 sont utilisées. On aurait pu aussi utiliser la technique du
multiplexage
d'affichage,
mais cela aurait demandé tout de même trop de
broches au PIC et on ne pouvait pas se le permettre ici. Le schéma et
la vue 3D montrent des LED standard, mais j'utiliserai des LED de
puissance haute luminosité (1 W) associées à un étage de commande
adapté.
Bien évidement je ne mettrai pas le jus à fond dans les LED, l'objectif n'étant pas d'aveugler les élèves.
Rafraîchissement affichage
L'acquisition
des 18 tensions analogiques (seize tensions de seuils et deux pour les entrées G et
D) est assurée vingt fois par seconde (période de récurence de
50
ms). Cela
me semble bien suffisant pour nos petits besoins et donne une
fluidité d'affichage qui n'est pas mauvaise même pour celui qui ne
regarde pas. Le temps pris pour le travail d'acquisition des tensions
analogiques est inférieur à 2 ms (environ 1,6 ms) et le temps pris pour
envoyer
l'ensemble des informations LED allumées ou LED éteintes est de l'ordre
de 2,5 ms. Tout ça pour dire que si on le voulait on pourrait même
accélérer
la cadence des rafraîchissements à un rythme de 100 fois par seconde.
Procédure de réglage des seuils
La
procédure qui suit est valable pour une configuration (un preset) et
doit être répétée pour chacune des configurations souhaitées (huit
différentes possibles au maximum). Le
réglage de chaque seuil pour la configuration en cours peut se faire
dans n'importe quel ordre mais il semble plus logique de commencer avec
les segments lumineux de niveau bas et de terminer avec ceux de niveau
haut. Si
les seuils d'allumage des segments lumineux doivent correspondre à des
niveaux de tension très précis, vous devez utiliser un générateur BF
délivrant un signal dont l'amplitude de sortie est parfaitement connue
(affichée par le générateur lui-même ou confirmée par un mesureur BF
externe câblé en parallèle sur la sortie du générateur).
Pour la suite des opérations, nous supposons que vous
disposez d'un tel générateur, ce dernier doit être réglé pour
délivrer un signal de forme sinusoïdale de fréquence 1 kHz qui sera
injecté sur l'entrée gauche ou droite du vumètre.
Procédure de réglage des
seuils
1
- Régler l'amplitude du signal appliqué à l'entrée du vumètre de façon
à ce qu'il corresponde au seuil d'allumage du premier segment
(celui de niveau le plus bas). Tourner doucement le potentiomètre de
seuil N°1 jusqu'à ce que le segment lumineux en question s'allume.
2 - Répéter l'opération pour chaque segment lumineux.
3
- Sauver la configuration en cours dans le preset désiré en appuyant
sur le bouton SAVE puis en appuyant ensuite sur le
bouton correspondant au numéro
de configuration désiré.
Logiciel du PIC
Non disponible actuellement.
Circuit imprimé
En cours de réalisation. Les potentiomètres seront raccordés par deux câbles en nappe 10 conducteurs.
CI au 08/01/2017Historique
08/01/2017
- Première mise à disposition.