Electronique > Réalisations > Affichage / Mesures > Oscilloscope 001

Dernière mise à jour : 21/03/2009

Présentation

Voici un montage assez rigolo, qui permet l'affichage d'un signal audio sur une matrice de 160 leds (10 x 16). Un point lumineux se déplace de gauche à droite, et monte plus ou moins selon l'amplitude du signal audio appliqué à l'entrée. L'effet obtenu est similaire à celui que l'on peut observer sur l'écran d'un oscilloscope dont la base de temps est réglée à une fréquence basse, quand on applique un signal audio sur son entrée. Il est tout à fait possible d'envisager une extension du circuit pour affichage sur un panneau de 30 x 32 leds, mais on peut dans un premier temps, se contenter de 160 leds. Histoire de se faire la main.
Remarque : l'usage en oscilloscope simple est tout à fait possible, mais la résolution verticale n'est que de dix points, ce qui peut se révèler tout de même un peu juste à l'usage.

Schéma

A première vue, c'est très compliqué. A seconde vue, aussi. Mais à la troisième, ça s'arrange. Surtout si vous cliquez sur l'image pour l'agrandir, ou si vous l'imprimez sur une feuille blanche (feuille noire proscrite).

oscilloscope_001


Comment regarder ce montage ?
Comme pour chaque montage qui semble compliqué, il faut trouver les sous-ensembles, ça simplifie considérablement les choses. Ici, il y en a quatre :
- un étage d'entrée pour adaptation d'impédance et de niveau,
- un bargraphe pour le balayage vertical,
- une base de temps pour le balayage horizontal,
- une matrice d'affichage à leds.
Pour vous être agréable, j'ai décomposé le schéma complet en trois sous-ensembles :
- schéma de l'étage d'entrée avec le balayage vertical
- schéma du circuit de balayage horizontal seul
- schéma du panneau d'affichage seul

Etage d'entrée et balayage vertical
Autour des circuits intégrés U1 et U2...

oscilloscope_001_part_1

Etage d'entrée
Autour du circuit intégré U1:A...
Nous avons affaire ici à un amplificateur alternatif non inverseur construit autour d'un AOP (amplificateur opérationnel). Ca commence bien. Ce sous-ensemble aporte un gain fixe d'environ 20 (26 dB), ce qui devrait être amplement suffisant pour pouvoir travailler avec des sources sonores provenant de sortie lignes, même si ces dernières sont un peu faibles. Un potentiomètre monté en diviseur résistif et jouant le rôle de "réglage de volume", est placé en entrée, de telle sorte qu'il devient possible d'ajuster la sensibilité de l'oscilloscope à une large plage de niveaux d'entrée. Une masse virtuelleest constituée grâce aux résistances R3 et R4 de façon à pouvoir faire travailler l'AOP avec une alimentation simple et non symétrique, comme pour le reste du montage. La sortie de l'amplificateur (borne 1 de U1) fournit donc un signal qui peut attaquer sans honte le circuit de redressement qui fait suite, composé des diodes D161 / D162 et condensateurs C3 / C4 dont le seul but est de pouvoir disposer d'une tension continue proportionnelle à l'amplitude du signal d'entrée. La tension continue ainsi élaborée peut ensuite être digérée par le bargraphe utilisé pour le balayage vertical, et basé sur l'emploi d'un LM3914.
Autour du circuit intégré U1:B...
Cette deuxième partie de l'étage d'entrée est reservée aux signaux que l'on ne souhaite pas redresser, et qui seront donc affichés tels qu'ils arrivent. C'est vraiment la fonction oscilloscope. Le couplage d'entrée peut s'effectuer en alternatif ou en continu, selon que le condensateur de liaison C6 est oui ou non court-circuité par l'interrupteur SW1. Le potentiomètre RV4 permet de superposer une tension continue fixe au signal d'entrée, afin de le décaler plus ou moins dans le sens vertical, pour un bon centrage sur "l'écran". Notez que cette entrée n'est pas dotée de potentiomètre de réglage de niveau, la pleine échelle d'affichage verticale ne dépend donc que de la position du potentiomètre RV2 dont il sera fait mention dans quelques lignes.

Bargraphe pour le balayage vertical
Autour du circuit intégré U2...
Un bargraphe est habituellement utilisé pour visualiser un niveau de tension sur une échelle de leds. Ici, il en est de même, mais au lieu de piloter une échelle de leds, il en pilote seize différentes. Pas en même temps, cela va de soi. Si vous regardez bien le schéma, vous constaterez que les cathodes de toutes les leds d'une même rangée sont cablées ensemble, et sont reliées sur l'une des dix sorties du circuit intégré qui joue le rôle de bargraphe. Dix rangées de leds, dix sorties pour le baregraphe, le compte est bon, aucune rangée de leds n'est lesée. Le circuit intégré U2, utilisé pour assurer le rôle de bargraphe, est un circuit spécialement développé pour cet usage, il s'agit d'un LM3914, que j'ai utilisé à de multiples reprises pour afficher des tensions (voltmètres) ou des niveaux audio (vumètres). La broche 9 de ce circuit est laissée en l'air, pour le faire travailler en mode point (Dot) et non en mode barre (Bar). Cela pour obtenir au final un effet d'affichage de type "oscilloscope" et non de type "analyseur de spectre". Quoique les deux types d'effets sont interressants, à vous de voir ce que vous préférez. Pour utiliser le circuit en mode barre, relier la patte 9 à la borne positive d'alimentation. RV2 permet de définir la borne supérieur d'affichage, il s'agit en quelque sorte du réglage de sensibilité.
Remarque : le LM3914 présente une progression d'affichage linéaire, ce qu'il faut normalement pour un affichage de type oscilloscope. Ceci dit, le montage décrit ici, puisqu'il est plutôt destiné à un usage en audio, peut aussi accueillir un LM3915, fonctionnellement équivalent au LM3914 mais qui présente une progression d'affichage logarithmique.

Base de temps pour le balayage horizontal
Autour des circuits intégrés U3 et U4...

oscilloscope_001_part_2

Cette base de temps sert à déterminer quelle colonne de leds doit être activée à un instant donné. Les anodes de toutes les leds d'une même colonne sont cablées ensemble, et sont reliées sur l'une des seize sorties du circuit intégré U4 (CD4514) qui joue le rôle de décodeur Binaire / Décimal. Seize colonnes de leds, seize sorties pour le décodeur, le compte est bon, aucune colonne de leds n'est laisée. Un décodeur Binaire / Décimal... c'est bien d'en parler, mais ça sert à quoi ? A "transformer" un nombre codé en binaire sur 4 fils - un ou plusieurs de ces fils peuvent être en même temps à l'état logique haut, en un nombre décimal, où une seule sortie parmi seize peut être active à un instant donné. Avions-nous besoin d'utiliser un tel circuit ? Non, pas forcement. Il était également possible d'utiliser un CD4017, qui est un compteur décimal doté d'une seule entrée d'horloge, donc à priori plus facile à mettre en oeuvre. Mais vous devez commencez à me connaitre un peu, j'aime parfois compliquer les choses. Et là en l'occurence, je souhaitais utiliser seize colonnes et non dix colonnes (limite qui aurait été imposée par le CD4017), et comme il fallait dans tous les cas un oscillateur pour incrémenter le compteur, la compliquation n'était pas si grande. J'ai donc opté pour un oscillateur / compteur de type CD4060 pour assurer en même temps le rôle d'oscillateur et le rôle de compteur. Très drôle. Le CD4060 oscille à une fréquence dont la valeur est principalement déterminée par la valeur des composants RV3, R8, R9 et C5. Les sorties binaires Q3 à Q6 sont cablées sur les entrées A, B, C et D du décodeur U4 CD4514. Pour résumer : le CD4060 délivre un mot binaire sur ses sorties Q6 à Q9, mot qui est décrypté par le CD4514. Les sorties Q0 à Q15 du CD4514 passent chacune leur tour à l'état logique haut, ce qui active de façon séquentielle, les seize colonnes de leds (toujours une seule colonne activée à la fois).

Matrice d'affichage à leds
Les 160 leds...

oscilloscope_001_part_3

Les leds sont cablées en matrice, comme vous l'avez peut-être déjà remarqué ou compris à la lecture des lignes précédentes. Le pilotage des 160 leds ne requiert ainsi que 26 fils de liaison : 16 fils pour les colonnes et 10 fils pour les rangées. Une seule sortie du LM3914 est rendue active à la fois (sur ce circuit intégré, les sorties actives sont à la masse car réalisée au travers d'un transistor en collecteur ouvert), et une seule sortie du CD4514 peut être active à la fois (à l'état haut). En conséquence, et à tout instant, une seule led peut être allumée à la fois. Si le signal d'entrée est faible, c'est une des leds du bas qui s'allume, et si le signal d'entrée est fort, c'est une des leds du haut qui s'allume. A un instant donné, c'est la colonne N°1 qui est active, et quelques temps après, c'est la deuxième colonne de leds qui l'est. Puis c'est la troisième qui s'active, puis la quatrième, etc. Après activation de la colonne N° 16, c'est la première colonne qui reprend du service. La vitesse de transition d'une colonne à la suivante dépend du réglage de RV3, et se fera selon vos préférences. Pour ma part, je trouve que l'effet est interressant quand les seize colonnes sont balayées en une seconde ou en un peu moins de temps. Au delà de une seconde, on se rend moins bien compte de l'évolution de l'amplitude du signal audio entrant, ça fait plus "jeux aléatoire" que "vumètre" ou "oscilloscope". A des fréquences très elevées, on visualise mieux les fréquences élevées du signal audio, mais personnellement, j'aime un peu moins. Pour la vitesse de balayage horizontale, c'est vraiment à vous de faire ce qu'il faut, je ne peux plus rien pour vous.

Pas d'amplificateur de courant pour les leds !

Je sens que l'on va une fois encore m'attaquer sur ce point. "Impossible d'allumer des leds avec un CD4514 qui ne peut pas délivrer plus de quelques mA sur ses sorties, cela est totalement impossible !". Mais voyez-vous je suis têtu, je l'ai encore fait et ça fonctionne très bien comme ça. Les leds récentes que j'utilise s'éclairant très bien avec quelques mA, voire même quelques centaines de uA, je n'ai point envie d'ajouter de la circuiterie pour disposer de 20 mA là où 1 à 4 mA suffisent. C'est un choix personnel, ce montage est déjà assez "compliqué" comme ça. Si vraiment vous souhaitez que les leds s'allument plus fort, ou plus simplement si vous souhaitez utiliser des leds datant de 20 ans (qui éclairent très peu sous 4 mA), alors là oui, je conseille l'insertion de circuits buffers ou de transistors sur les seize sorties du CD4514. A titre d'exemple, les leds visibles sur la photo de gauche qui suit ont plus de 20 ans, regardez comment elles s'éclairent (sans buffer et avec alim 9 V). La photo de droite quant à elle montre comment s'éclaire une des leds que j'ai achetées pour cet oscilloscope : le courant qui la traverse n'est que de quelques uA (oui, j'ai bien dit quelques micro-ampères, c'est mon corps qui fait office de résistance série). Croyez-vous que les photos soient truquées ?

oscilloscope_001_proto_001g led_alim_corps_001b

Disons pour simplifier que l'on peut voir les choses de deux façons :
- soit on utilise des leds standards peu coûteuses produisant un flux lumineux de quelques mcd (millicandellas) à 20 mA, et dans ce cas il est conseillé d'ajouter des buffers de courant (CD4050 par exemple);
- soit on utilise des leds de type haute luminosité (500 mcd ou plus) certes un peu plus chères mais dont le flux lumineux est amplement suffisant même avec seulement 1 à 5 mA (cablâge direct, sans ajout de composants).
On peut aussi évoquer la vitesse de balayage, qui donne une impression de luminosité moindre quand ça va vite, c'est un des "défauts" du multiplexage. Mais dans le cas présent, cette vitesse de balayage n'est pas forcement très importante et l'effet d'atténuation lumineuse est moins prononcé. Pour ma part, j'ai opté pour des leds vertes de 20000 mcd. Cela peut sembler exagéré, mais j'ai fais ce choix pour les raisons suivantes :
- éclairage plus que suffisant à 1 mA, mais surtout avec ajustage aisé en intensité (grâce au LM3914 qui dispose de la broche de réglage idoine);
- possibilité d'espacer plus les leds et d'augmenter leur luminosité, pour disposer d'une surface d'affichage plus grande (avec panneau avant légèrement diffusant);
- le prix des leds haute luminosité est il est vrai plus élevé, mais on trouve de très bonnes affaires sur le net.
Vous avez le circuit de base, commencez avec ça et brodez autour comme bon vous chante.

Prototype

Réalisé sur plaque d'expérimentation sans soudure, avec pour commencer les tests, seulement un bandeau de 4 x 10 leds (suffisant pour valider le fonctionnement général).

oscilloscope_001_proto_001a oscilloscope_001_proto_001b oscilloscope_001_proto_001c

Sur la photo de droite, étage d'entrée. En pratique, j'ai testé le montage avec un micro electret directement connecté en entrée et relié au +9V via une résistance de 2K2 (montage sur page Alimentation d'un microphone electret). Le LM3914 avec le peu de composants annexes, doit se sentir bien seul... et j'ai mis une led sur une des sorties du CD4060 pour confirmer le bon fonctionnement de l'oscillation.

oscilloscope_001_proto_001d oscilloscope_001_proto_001e

Côté cablâge des leds, un matriçage réalisé avec des bouts de fils et des straps à base de queues de composants :

oscilloscope_001_proto_001f oscilloscope_001_proto_001g

Anecdote
Un copain m'a donné par le passé, des blocs d'afficheurs multipoints, matricés en 5 x 7 points, de type DLO7135. Sur le moment, je me suis dit "Chouette, je vais les utiliser pour réaliser un oscilloscope miniature." Avant même de chercher le brochage sur internet, j'ai sorti une pile 9V avec son coupleur, une résistance de 1K, comptant sonder les 14 pattes de l'afficheur afin de retrouver les rangées d'anodes et de cathodes. Quelle surprise de constater que dans certains cas plusieurs leds s'allumaient en même temps en ne touchant que deux pattes ! Je ne suis pas resté bête jusqu'au bout : j'ai cherché le datasheet du composant sur internet, et ai alors découvert qu'il s'agissait non pas de simples leds câblées en matrice, mais d'un circuit intégré complet comportant un circuit de décodage et un générateur de caractères ASCII ! Bref, inutilisable pour mon application. Pas grave, on retourne vers les leds classiques ;-)

Proto avec matrice de 160 leds
La matrice de leds m'a demandé pas mal de temps pour sa réalisation. Je ne savais pas trop au départ comment faire pour que tout soit bien aligné. Je me suis déjà cassé la tête avec des simples vumètres, alors avec 16 rangées de 10 leds, je ne vous racconte pas...

oscilloscope_001_proto_001h oscilloscope_001_proto_001i
Leds pas encore soudées et encore moins alignées...

Pour minimiser les dégats, j'ai commencé par adopter un support fait de boitiers de DVD, de façon à ce que toutes les leds reposent de la même façon sur la table de travail. Puis j'ai soudé les leds du pourtour, en m'assurant qu'elles étaient bien alignées en hauteur, choses importante puisque ces leds de périphérie servaient de "référence".

oscilloscope_001_proto_001j

J'ai ensuite pris mon mal en patience et ai effectué les 320 soudures correspondant aux 160 leds. Puis j'ai assuré ensuite les liaisons entre anodes, puis entre cathodes, avec du fil électrique fin. Chose simplifié par l'utilisation d'une plaque à pastilles (et non à bandes) et à une longueur suffisante laissée aux pattes des leds. Pour assurer l'isolation entre les rangées de cathodes communes et celles des anodes communes, j'ai procédé en deux "couches" : une à même les pastilles de cuivre, et l'autre surélevée par des picôts utilisés comme "support de fil à linge". Sur la deuxième photo ci-après, on voit bien les lignes de fils en quadrillage et pas sur la même hauteur.

oscilloscope_001_proto_001k oscilloscope_001_proto_001l

Une fois tout le cablage réalisé, j'ai vérifié les leds une par une, avec une simple pile et deux résistances série.

oscilloscope_001_proto_001m oscilloscope_001_proto_001n

Sur les 160 leds, 3 étaient deffectueuses (une en court-circuit franc et deux coupées), leur remplacement a été vite fait. Les tests ont ensuite pû commencer avec le circuit de commande établi sur la plaque d'expérimentation sans soudure dont je m'étais servi pour les premiers tests. Ma fidèle assistante m'a bien aidé pour les tests en grandeur nature. Les photos qui suivent ne rendent pas très bien la réalité car le temps d'ouverture de l'APN n'est pas "compatible" avec la base de temps horizontale de l'oscilloscope, mais ça peut peut-être donner une idée.

oscilloscope_001_proto_001p oscilloscope_001_proto_001o oscilloscope_001_proto_001q

Pour la dernière photo, je voulais voir quel effet visuel on pouvait obtenir en rendant flou les points lumineux, avec l'arrière pensée d'utiliser un écran légèrement diffusant pour cacher les leds.

10 rangées de leds câblées au lieu de 16
Vous avez l'oeil fin et vous avez remarqué sur les photos que quelques fils électriques de la matrice des 160 leds n'étaient pas connectés. Bien vu ! En fait, je me suis planté lors de l'orientaiton des leds, les anodes et les cathodes ont été interverties, donnant ainsi une matrice de 10 colonnes de 16 leds au lieu de 16 colonnes de 10 leds. En toute franchise, je n'avais pas du tout le courage de dessouder et ressouder toutes les leds. Je me suis même surpris à n'émettre aucun juron !

Circuit imprimé

Je prévois de réaliser deux platines séparées : un circuit pour la commande et un autre pour l'affichage. Liaison entre les deux par deux petits câbles en nappes.

Corrections et remarques

14/03/2009
- J'ai refait l'étage d'entrée, avec pour principale modification, l'ajout d'un redresseur, qui pourra être ignoré si vous souhaitez visualiser une source de tension autre qu'une source audio.
- Ajout de l'entrée J1' de type "continu / alternatif" sans redressement.