Electronique > Réalisations > Affichage / Mesures > Vumètre 018 [Pro]

Dernière mise à jour : 15/04/2018

Présentation

Ce vumètre, qu'on devrait plutôt appeler indicateur de niveau, permet d'afficher l'amplitude des deux voies G et D d'un signal audio stéréo, dans une plage comprise entre -33 dB et +12 dB. 

vumetre_018_pcb_3d_a

Son originalité réside dans la possibilité de choisir la couleur et le niveau de luminosité pour chaque point de l'échelle, de façon individuelle. Le coeur du montage est basé sur un PIC 18F26K22, qui pilote des LED RVB intelligentes WS2812B.

Schéma

Le PIC effectue la mesure des niveaux analogiques, et les affiche sur un double barreau de 16 LED, en mode point (dot) ou ruban (bar).

vumetre_018

La ligne Dot_Bar permet de spécifier le mode d'affichage du vumètre :

Vumètre
Les tensions à mesurer parviennent au CAN du PIC via les résistances R1 et R2. La tension appliquée sur les deux entrées AinL et AinR ne doit pas dépasser 5 V, raison d'être des diodes zener D1 et D2 ajoutées à titre de protection contre d'éventuelles surtensions. Un étage de redressement audio est requis en amont, les tensions fournies peuvent être RMS ou crête (normalement pour un "vrai" vumètre, une constante de temps de 300 ms doit être appliquée). La conversion log (passage de Volt en déciBel) est effectuée par logiciel.
L'affichage à proprement parler est confié à des LED RVB WS2812B : une seule ligne de commande série (SDA, Serial Data) suffit pour piloter la chaîne de 32 LED. Le seul inconvénient de ce type de liaison "1 fil" est la rigueur imposée au "timing" des signaux de commande des LED, puisqu'il n'y a pas de signal d'horloge synchrone. Pour info/rappel, les bits 0 et 1 envoyés aux LED doivent avoir la forme d'un créneau de quelques centaines de ns (350 ns +/-150 ns pour bit à 0, et 700 ns +/-150 ns pour bit à 1). Dit en passant, travailler avec de si faibles durées impose de faire tourner le microcontrôleur assez vite (40 MHz ou 64 MHz n'est pas du luxe). La tache n'est pas si ardue pour autant, car la "tolérance temporelle" WS2812 est assez large, et l'éventuelle dérive en fréquence de l'horloge interne du PIC (notamment en fonction de la température ambiante) est loin de poser un problème. Raison pour laquelle je me suis passé de quartz.

Modification des couleurs de l'affichage LED
Chaque point de l'échelle peut se voir attribuer une couleur et un taux de luminosité quelconque. Comme le vumètre dispose de deux voies mais qu'on n'est pas forcé d'y appliquer un signal stéréo, j'ai jugé opportun de permettre une modification des couleurs individuelles pour les deux canaux d'affichage (sans aucun lien entre 1/G et 2/D). Le vumètre peut stocker jusqu'à 8 configurations d'affichage différentes (8 sets de couleurs), ce qui nécessite 768 octets pour la sauvegarde (le 18F26K22 possède 1024 octets d'EEPROM, c'est parfait). La programmation des couleurs s'effectue via un émulateur de terminal (mon logiciel freeware ComTools convient très bien pour ça) et un adaptateur USB/RS232, mais chacun des sets de couleur peut être rappelé à volonté en autonome (sans ordinateur) grâce au bouton-poussoir SW1 placé sur le vumètre.
Pour modifier la couleur d'un point, il faut tout d'abord spécifier le numéro du SET concerné (SET 1 à 8) puis spécifier la couleur du point désiré (LED 1 à 32) dans le SET sélectionné, au moyen de commandes texte (ASCII) répondant à la syntaxe suivante :

SETx
LEDx = Couleur

- le numéro de SET doit être compris entre 1 et 8
- le numéro de LED doit être compris entre 1 et 32 (1 à 16 pour canal 1/G et 17 à 32 pour canal 2/D).
- la couleur doit être exprimée en hexadécimal "RRGGBB" (valeurs hexa RR pour rouge, GG pour vert et BB pour bleu)
- la ligne de commande doit être terminée par un retour charriot (CR) ou par un saut de ligne (LF)

La couleur et le niveau de luminosité sont définis par les trois valeurs hexadécimales RR, GG et BB (valeurs comprises entre 00 et FF). Voici quelques exemples :

CouleurLuminositéRRGGBB
Bleu100%
0000FF
Bleu50%00007F
Rouge100%FF0000
Rouge10%200000
Jaune100%FFFF00
Jaune25%404000

Par exemple pour que la LED "0 dB" du canal 1/G (LED#12) s'allume en bleu au lieu de s'allumer en jaune, il faut envoyer la commande suivante :

LED12=0000FF[CR] // LED #12 en bleu


vumetre_018_preview_001b

Pour effacer les modifications et revenir aux paramètres d'origine, il faut envoyer la commande RESET suivie du numéro du SET concerné (pour n'effacer que le SET spécifié) ou envoyer la commande RESETALL pour traiter en une passe les 8 SET :

RESET2[CR] // rétablit les valeurs d'origine pour le SET #2 uniquement
RESETALL[CR] // rétablit les valeurs d'origine pour les 8 SETs

Remarque : la modification des couleurs est possible sur la version pro, mais pas sur la version allégée (LE) gratuite disponible ici.

Alimentation
Le circuit s'alimente sous une tension de +5 V, avec un courant moyen qui dépend des couleurs et du taux d'éclairement choisis pour chaque point, ainsi que du mode d'affichage :
- en mode point, deux LED RVB au maximum sont allumées : 40 mA max si rouge, vert ou bleu; 120 mA max si blanc
- en mode barre, on peut avoir 32 LED RVB allumées en même temps, soit 96 LED ! Cela engendre une consommation de 640 mA max si chaque point active une seule couleur (rouge, vert ou bleu). Et la consommation grimple allègrement à 1920 mA si tous les points sont affichés en blanc (bien entendu, ce choix n'est pas souhaité). N'oubliez pas que pour obtenir la couleur jaune, on active les LED rouge et verte...
Pour pouvoir bénéficier du mode ruban en toutes circonstances, l'alimentation 5 V doit pouvoir délivrer au moins 2000 mA (2 A). Mais dans la pratique, avec les couleurs traditionnelles et un taux de luminosité abaissé (pour ne pas éblouir l'utilisateur), une alimentation capable de débiter un courant de 1 A suffira (c'est ce que j'ai utilisé pour mon proto). Et puis oui me direz-vous, les LED "clignotent", ce qui réduit le courant moyen consommé. Oui, oui. Mais les musiques à la dynamique très compressée et toujours plein pot, vous connaissez ?

Prototype

Réalisé avec 4 barreaux de 8 LED chacun (5050+WS2812), on se rend vite compte de l'incroyable facilité de réalisation pratique !

vumetre_018_proto_001b vumetre_018_proto_001c

Heureusement que la luminosité est ajustable, car à plein pot on s'en prend plein la vue, ce qui n'est pas la finalité première d'un vumètre... à moins de le destiner à une application en extérieur.

vumetre_018_proto_001d vumetre_018_proto_001e
Ajustage luminosité à 100 % et à 50%

vumetre_018_proto_001f 
Ajustage luminosité à 10 %

Je ferai également des tests avec des ensembles de LED circulaires, que j'ai déjà commandés (12, 16 et 24 LED).

led_5050_ws2812_ring_12_001a led_5050_ws2812_ring_24_001a

Et nul doute qu'une petite vidéo de démonstration sera la bienvenue !

Circuit imprimé

Non réalisé.

Logiciel du PIC

Le logiciel allégé (LE) disponible en libre téléchargement ici ne permet pas de modifier les couleurs de chaque point.
Vumètre 018 - PIC 18F26K22 - LE (15/04/2018)
Si vous souhaitez recevoir par la poste un PIC préprogrammé et prêt à utiliser, merci de consulter la page PIC - Sources.

Historique

15/04/2018
- Première mise à disposition.