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%.
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.
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.