Electronique > Réalisations > Affichage / Mesures > Vumètre 012

Dernière mise à jour : 29/08/2010

Présentation

Vumètres mono ou stéréo 12 LED par voie, basé sur un PIC dont on exploite très peu de sorties logiques pour alimenter la totalité des LED. 

vumetre_012_16f88_pcb_3d_a vumetre_012_12f675_pcb_3d_a

Quatre fils seulement pour la version mono 12 LED et huit fils seulement pour la version stéréo 2 x 12 LED. Deux schémas sont proposés ici :
- Schéma 012a : affichage mono 1 x 12 LED avec PIC 12F675
- Schéma 012b : affichage stéréo 2 x 12 LED avec PIC 16F88 (peut être utilisé en 2 x mono)
- Schéma 012c : affichage stéréo 2 x 16 LED avec PIC 16F88, mode barregraphe et mémorisation des crêtes : non décrit ici, voir page Vumètre 012c.
Un excellent exercice pour apprendre une méthode de multiplexage "avancée", qui sort un peu des sentiers battus. Je ne suis pas à l'origine de cette idée, cela va de soi ;-)

Avertissements


Schéma 012a - Vumètre mono 12 LED avec PIC 12F675

Le schéma qui suit montre à quel point il est facile de disposer d'une commande de 12 LED avec 4 fils seulement.

vumetre_012a

Le fonctionnement général de ce vumètre mono est totalement identique à celui du vumètre stéréo qui suit. Les explications qui seront données par la suite s'appliquent donc à l'identique aux deux systèmes mono et stéréo.

Schéma 012b - Vumètre stéréo 2 x 12 LED avec PIC 16F88

Et avec la même technique, le schéma qui suit montre comment il est possible de commander 24 LED avec 8 fils seulement. Facilité sur le papier, mais il fallait y penser...

vumetre_012b

Et celui qui y a pensé en premier est un artiste. Je connaissais le multiplexage "classique" qui consiste à alimenter plusieurs afficheurs sept segments les uns après les autres de façon tellement rapide qu'on n'y vois que du feu, mais je ne connaissais pas cette méthode qui permet de réduire encore plus le nombre de fils de commande. Une fois que j'ai vu le cablage sur un schéma existant, j'ai pensé avoir compris le principe et me suis empressé de le mettre en pratique avant même d'en lire plus sur le sujet. Et bien entendu, je me suis planté...

Principe de base adopté pour l'affichage

Le principe général du circuit repose sur le multiplexage temporel : même si à un instant donné on a l'impression que plusieurs LED sont allumées, il n'y en a toujours qu'une seule (sur une rangée de douze) qui l'est. L'illusion est obtenue en allumant plusieurs LED les unes après les autres de façon suffisement rapide pour que la persistance rétiniène soit trop grande pour permettre au cerveau de se rendre compte de la supercherie. Mais le plus simple pour le moment est de prendre quelques exemples pour en comprendre les grandes lignes. Commençons par voir combien de LED peuvent être cablées avec quatre fils de commandes, que nous appellerons pour l'occasion A, B, C et D. Ce n'est pas très compliqué en fait : on voit que l'on peut câbler une première LED entre le fil A et le fil B, une seconde LED entre A et C, une troisième LED entre A et D, une quatrième LED entre B et C, etc. Ce qui nous amène à un maximum de 6 LED pour quatre fils, comme le montre le schéma suivant :

vumetre_012b_xxxx.

Si maintenant on décide de câbler une LED en parallèle tête-bêche sur chacune des six LED précédentes, cela porte le nombre de LED à douze, sans qu'aucun fil de commande supplémentaire n'ait besoin d'être ajouté.

vumetre_012a_xxxx

Dès lors, on imagine bien que pour chaque groupe de deux LED montées tête-bêche (groupe de LED D1 et D2 ou groupe D3 et D4 par exemple), une seule des deux peut être allumée à un instant donné, que la commande soit assurée avec une tension alternative ou avec une tension continue. Voyons maintenant ce qu'il faut faire pour allumer une ou plusieurs LED, et pour commencer, décidons d'allumer la LED D1, et elle seule.

Illumination de la LED D1
Sur le schéma qui précède, on constate que cette LED à son anode sur le fil de commande A, et sa cathode sur le fil de commande B. Comme nous travaillons ici avec des niveaux logiques TTL 0 V ou +5 V, nous n'avons guère le choix, et les quatre possibilités qui s'offrent à nous sont les suivantes :

Tension sur fil A
Tension sur fil B
Etat de la LED D1
0 V
0 V
Eteinte
0 V
+5 V
Eteinte
+5 V
0 V
Allumée
+5 V
+5 V
Eteinte

La LED ne peut s'allumer que pour une seule des quatres combinaisons possibles, sachant que le cablage utilisé est le suivant, où chaque point A à D peut individuellement être mis à la masse (0 V) ou au +5 V grâce aux inverseurs mécaniques SW1 à SW4 :

vumetre_012c_xxxx

Ce que nous montre le tableau est finalement bien logique : la tension sur A (anode de la LED) doit être plus grande que la tension appliquée sur B (cathode de la LED), pour que la LED D1 s'allume. Remarque : pour des raisons de simplification, on ne parle pas des résistances série utilisées pour la limitation de courant dans les LED (R1 à R4), mais celles-ci sont bien prévues et toujours indispensables (il existe bien un cas particulier où on pourrait s'en passer mais ce point ne sera pas abordé ici).
Bien, la LED D1 s'allume comme on le souhaite, mais apparaît comme qui dirait un petit problème : deux autres LED s'allument en plus de D1, il s'agit des LEDs D3 et D5.

vumetre_012a_0001.gif

Ce qui est tout à fait normal puisque les points C et D sont également porté à un potentiel inférieur à celui auquel est porté le point A. Hum, ça se complique un peu, dirait-on. Mais nous ne sommes pas manchot, et supposons rapidement qu'il suffit de porter les points C et D à un potentiel de +5 V pour que les LEDs D3 et D5 s'éteignent. Voilà ce que celà donne :

vumetre_012a_1101.gif

Les LED D3 et D5 s'éteignent bien, mais maintenant ce sont les LED D8 et D10 qui s'allument... On peut bien faire le tour des possibilités qui s'offrent à nous avec les seize combinaisons rendues possibles par les quatre fils de commande :

vumetre_012a_0000.gifvumetre_012a_0001.gif
vumetre_012a_0010.gifvumetre_012a_0011.gif
vumetre_012a_0100.gifvumetre_012a_0101.gif
vumetre_012a_0110.gifvumetre_012a_0111.gif
vumetre_012a_1000.gifvumetre_012a_1001.gif
vumetre_012a_1010.gifvumetre_012a_1011.gif
vumetre_012a_1100.gifvumetre_012a_1101.gif
vumetre_012a_1110.gifvumetre_012a_1111.gif

Il faut se rendre à l'évidence, il est totalement impossible de n'avoir qu'une seule LED allumée à un instant donné, en adoptant cette méthode. La solution ? Déconnecter totalement du circuit toutes les LED que l'on ne veut pas allumer. Comment celà ? En mettant les sorties désirées en mode haute impédance (HiZ), ou encore en les spécifiant comme entrées et non comme sorties. Chaque sortie doit donc pouvoir prendre trois états différents possibles : un état logique bas (0V), un état logique haut (+5V) ou un état haute impédance (déconnecté). En opérant de cette façon, il est maintenant possible de commander l'allumage d'une et une seule LED à la fois. Dans les schémas précédents, les carrés bleus sur les fils de liaison représentaient une tension nulle égale à zéro volt, et les carrés rouges représentaient une tension positive. Dans le schéma qui suit, des carrés de couleur grise apparaissent : il représentent une liaison déconnectée.

affichage_multiplexage_002_ex_001a

En procédant ainsi, les LED qui s'allumaient en "parasite" sont désormais éteintes, et ne reste allumée que la LED que l'on veut voir s'allumer. Là ça fonctionne bien, le principe est posé. Pour plus de détails concernant ce mode de multiplexage, merci de vous reporter à la page Affichage et multiplexage.

Remarque concernant le multiplexage
Le multiplexage existe toujours d'un point de vue câblage électrique, c'est bien la seule façon de réduire le nombre de fils de commande pour un nombre élevé de LED à allumer. Mais la fonction de multiplexage d'affichage n'est pas vraiment mise en oeuvre quand l'affichage se fait en mode point. En effet, on ne cherche pas dans ce cas à donner l'illusion que plusieurs LED sont allumées en même temps pour former un ruban (une barre). Par contre en mode ruban, le multiplexage est incontournable puisque les LED ne peuvent être allumées en même temps. Entre chaque séquence d'acquisition de la ou des tensions d'entrée analogiques, il faut donc allumer à tour de rôle toutes les LEDs qui doivent l'être. Et cela doit être fait très rapidement pour que l'oeil ne percoive aucun scintillement gênant. Dans le cas où les douze LED doivent être allumées, et en admettant que la fréquence minimale de commutation pour chaque LED doit être de 25 Hz au minimum, cela conduit à un rythme de balayage de 25 x 12 soit 300 Hz.

Logiciels du PIC

Les codes source et fichiers binaires compilés (*.hex) sont disponibles dans l'archive dont le lien suit. La version 012a mono qui était déjà fonctionnelle depuis plus d'un an a été mise à jour pour pouvoir être compilée dans MikroPascal Pro V3.80 (la version précédement utilisée étant la V8.3). La fréquence de rafraichissement de cette version 012a mono a été augmentée au passage (de 10 Hz elle passe à plus de 100 Hz).
Vumètre 012a - Version mono 1 x 12 LED avec PIC 12F675 (MikroPascal Pro V3.80) - 29/08/2010
Vumètre 012b - Version stéréo 2 x 12 LED avec PIC 16F88 (MikroPascal Pro V3.80) - 29/08/2010
Vumètre 012 (versions 012a mono et 012b stéréo) - 29/08/2010
Vumètre 012c - Version stéréo 2 x 16 LED avec PIC 16F88 (MikroPascal Pro V5.00) - 18/09/2011 : voir page Vumètre 012c.
Si vous souhaitez recevoir par la poste un PIC préprogrammé et prêt à utiliser, merci de consulter la page PIC - Sources.

Circuits imprimés

Non réalisés, vues 3D uniquement là pour donner un aperçu des composants utilisés.