PWM : Pulse Width Modulation
Автор: PBElectronique
Загружено: 2016-03-20
Просмотров: 14390
Описание:
https://pbelectronique.com/site/index...
Dans la programmation de PIC, on veut parfois faire varier la tension à la sortie d'une patte du microcontrôleur. Pour ce faire, il faut utiliser la technique qui s'appelle PWM.
Cette technique fonctionne seulement avec quelques pins sur un microcontrôleur. Par exemple, sur le PIC16F628A, il y a seulement la pin RB3 (pin 9). Sur d'autres PICs, il peut y en avoir plus ou aucune qui ont cette fonction. Pour savoir si une pin utilise la fonction PWM, on doit regarder dans les fiches techniques du microcontrôleur. S'il l'utilise, il va être écrit CCP. C'est le nom du module. C pour capture, C pour compare et P pour PWM (Pulse width modulation).
Depuis le début des cours sur la programmation des PICs, je vous ai dit que lorsqu'on envoi un 1 logique, on obtient 5V et lorsqu'on envoi un 0, on obtient 0V. Mais comment faire pour avoir une tension entre zéro et cinq volts?
Pour faire varier la tension à la sortie d'une pin du micro-contrôleur, on utilise la fréquence. On crée une onde rectangulaire avec le module CCP, ce qui nous permet de jouer avec les hauts et les bas. Pour avoir parfaitement 50% de puissance à la sortie, on doit avoir le même temps d'une période à un niveau haut qu'à un niveau bas. On fait donc osciller haut, bas, haut, bas... plusieurs fois par secondes, ce qui, à l'oeil nue, ne paraît absolument pas. On obtient une tension de sortie moyenne de 2.5V (50%) si on est sous 5V.
Pour avoir un différent pourcentage à la sortie, on a juste à augmenter le temps au niveau haut de la période et réduire le temps au niveau bas ou l'inverse pour diminuer le pourcentage. De cette manière, on va obtenir n'importe quel tension à la sortie.
On appelle ce ratio de niveau haut et bas, le cycle d'usage (duty cycle). Pour calculer le cycle d'usage, il suffit de diviser le temps au niveau haut par le temps total de la période. Ex.:
Duty cycle = (3 us/6 us) = cycle d'usage de 50%.
Alors, nous devrions obtenir une tension moyenne de sortie de 50% de la tension total. Sous 5V, on obtiendrait une tension moyenne de 2.5V.
Pour le programmer dans MikroC Pro, il y a déjà 4 fonctions pré-établies, qui nous permet de contrôler le PWM. La première s'appelle, PWM_Init. Cette fonction nous aide à établir la fréquence du PWM. Par exemple, PWM_Init(5000); Cela dit au microcontrôleur qu'il doit osciller à une fréquence de 5 kHz. Habituellement, 5 kHz fonctionne super bien. Il et important de noté que si on a plusieurs pin de PWM sur le même micro-contrôleur, on ne peut pas leur donner différentes fréquence, car ils utilisent tous le même Timer interne. Il faut noté que si on utilise une fréquence trop élevé (tel que mentionné dans la vidéo) et que le microcontrôleur ne peut pas supporter cette fréquence, il y aura des disfonctionnement du module PWM. À l'inverse, une fréquence beaucoup trop faible aura pour effet de ne pas donner une tension moyenne, mais plutôt un clignotement à la broche de sortie.
La deuxième fonction s'appelle, PWM_Set_Duty. Cette fonction sert à établir la tension moyenne à la sortie sur microcontrôleur. Étant donné que nous fonctionnons avec un registre de 8 bits, on doit écrire un nombre de 0 à 255 entre parenthèse. Par exemple, PWM_Set_Duty(192); En inscrivant 192, on donne, à la sortie, une tension moyenne de 75%.
Finalement, les deux dernières fonctions vont ensemble. On a PWM_Start, ce qui démarre le PWM et PWM_Stop, ce qui arrête le PWM.
Si vous n'utilisez pas MikroC Pro et ses librairies internes, il vous faudra lire la documentation du microcontrôleur. Comme mentionné un peu plus haut, le module PWM fait partie du groupe CCP. Il vous faut activer certains registres pour faire l'initialisation du PWM et d'autres pour contrôler le cycle d'usage. Voici un exemple des registres à gérer pour le PWM du PIC16F887.
• PR2
• T2CON
• CCPRxL
• CCPxCON
Il y a les registres pour l'interruption, le timer 2 et les registres du module CCP à configurer pour le bon fonctionnement du PWM. Aussi, dans les fiches techniques, on retrouve plusieurs formules pour calculer la largeur d'impulsion de sortie ou encore et pour calculer le cycle d'usage en fonction de notre configuration des registres.
Повторяем попытку...
Доступные форматы для скачивания:
Скачать видео
-
Информация по загрузке: