Electronique > Réalisations > Indicateur valeur PWM (MLI) 001

Dernière mise à jour : 10/10/2010

Présentation

Cet indicateur permet de visualiser le rapport cyclique d'un signal PWM sur une plage de 0% à 100% à l'aide d'une échelle de 10 LEDs, et donc par sous-plages de 10%. Une première LED pour la plage 0-10%, une seconde LED pour la plage 10-20%, etc jusqu'à la dixième LED pour la plage 90-100%.

indic_pwm_001_pcb_3d_a

Voir aussi modulation de largeur d'impulsion (PWM / MLI).

Schéma

Le montage est construit autour d'un circuit intégré programmable de type PIC 12F675.

indic_pwm_001

Le schéma peut être décomposé en deux parties :
- étage d'entrée analogique
- circuit d'affichage.

Etage d'entrée analogique
Cet étage permet de convertir la valeur de rapport cyclique du signal rectangulaire appliqué sur l'entrée In en une tension continue proportionnelle Vin. Il est conçu pour fournir une tension proche de 0 V pour un rapport cyclique de 0% et une tension proche de +5 V pour un rapport cyclique de 100%. Au début, mon montage ne donnait pas ce que je voulais : j'obtenais bien +5 V pour le 100% mais j'obtenais +2 V au lieu de 0 V pour le 0%. J'avais tout bêtement inversé les connexions de Drain et Source de Q1 / BS250. Je peux dire que j'ai cherché un bon moment avant de trouver la faute car ça fonctionnait presque bien ! Les deux transistors Q1 et Q2 sont censés ne jamais conduire en même temps, ce qui est important car si c'était le cas on aurait un beau court-circuit entre masse et +5 V et les deux loulous ne feraient pas long feu. Pour bien faire, il faut que la tension commune aux grilles de ces deux transistors soit vraiment proche de 0 V pour le niveau logique bas et vraiment proche de +5 V pour le niveau logique haut. C'est pourquoi je me suis permis d'ajouter un troisième transistor en entrée, qui "adapte" en quelque sorte le signal rectangulaire d'entrée dont on souhaite connaitre le rapport cyclique, dans le cas où il n'est pas "conforme". La conversion PWM en tension continue est assurée par le tandem R7 / C1 qui constituent un réseau RC intégrateur. Les valeurs données à ces deux composants ne sont pas vraiment critiques mais contribuent à la stabilité de l'affichage en fonction de la fréquence du signal d'entrée. Si on veut un affichage stable à des fréquences très basses, on est obligé d'augmenter la valeur du condensateur C1. Mais en faisant cela, le condensateur met plus de temps pour se charger à sa valeur "nominale". C'est un problème que l'on rencontre aussi sur les convertisseurs fréquence / tension, et pour lequel une solution consiste à ajouter un filtre passe-bas plus performant. Mais le mieux est toujours d'essayer par vous-même. Pour commencer je vous recommande les valeurs 1 kO et 220 uF, la valeur du condensateur pouvant sans problème être ajustée entre 100 uF et 1000 uF. Pour finir sa course dans le domaine analogique, la tension moyennée (intégrée par R7 et C1) est envoyée sur une des broches du PIC qui est configurée en entrée analogique (GP0/AN0).

Circuit d'affichage
Le circuit d'affichage est quasiment identique à celui de mon vumètre 012a. Il y a quelques modification de code logiciel mais c'était plus pour faire du ménage et renommer les procédures. Ah si, une petite différence tout de même au niveau de la fréquence de raffraichissement : ici on met à jour l'affichage 100 fois par seconde (100 Hz), alors que pour le vumètre la mise à jour était de 1000 fois par secondes (1 KHz). C'est un détail. Bref, un principe de fonctionnement tout bête, on échantillonne la tension appliquée sur l'entrée GP0/AN0 et en fonction de la valeur lue, on allume telle ou telle LED. La LED D1 s'allume quand le rapport cyclique du signal d'entrée est compris entre 0 et 10% (tension Vin comprise entre 0 V et 500 mV), la LED D2 s'allume quand le rapport cyclique est compris entre 10 et 20% (tension Vin comprise entre 500 mV et 1,0 V), et ainsi de suite jusqu'à la LED D10 qui s'allume pour un rapport cyclique compris entre 90 et 100% (tension Vin comprise entre 4,5 V et 5,0 V). On peut noter un léger sintillement entre deux LED adjacentes quand le rapport cyclique se trouve sur une zone de transistion. C'est tout à fait normal et c'est surtout visible si la fréquence d'entrée à une fréquence basse. On peut limiter le phénomène en augmentant la valeur de C1, mais il faut alors un peu plus de temps au système pour se stabiliser. L'affichage se fait de façon multiplexée afin de pouvoir piloter les dix LED avec le minimum de fils de commande (ici 4 fils seulement).

Peut-on se passer du PIC ?
Bien sûr ! La tension disponible au point commun R7 / C1 (Vin) peut être lue telle quelle sur un voltmètre quelconque. La plage de mesure s'étend de 0 V à +5 V, à vous de faire mentalement la conversion entre tension lue et pourcentage rapport cyclique. Par exemple si vous lisez une tension de 1 V, cela signifie que le rapport cyclique est de 20% (un cinquième de la pleine échelle). Une bonne chose serait de diviser par cinq la tension Vin avant de l'appliquer au voltmètre (avec un pont diviseur résistif). Une tension de +1 V correspondrait ainsi à un rapport cyclique de 100%, une tension de +0,2 V correspondrait à un rapport cyclique de 20%. Et si vous divisez encore par 10 (donc division totale par 50) pour travailler sur une pleine échelle de 0 à 100 mV, chaque mV lu représente directement la valeur du rapport cyclique. C'est à mon avis le plus simple, mais libre à vous d'envisager d'autres cas de figure le cas échéant.

Logiciel PIC

Le fichier binaire compilé *.hex à flasher dans le PIC et les fichiers de code source sont compris dans l'archive zip ci-jointe.
Indicateur valeur PWM 001 - 12F675 - (10/10/2010)
Si vous souhaitez recevoir par la poste un PIC préprogrammé et prêt à utiliser, merci de consulter la page PIC - Sources.

Circuit imprimé

Circuit imprimé presque fini.