- Qu'est-ce qu'un signal PWM?
- Comment convertir le signal PWM en tension analogique?
- Schéma:
- Programmation du MSP pour le signal PWM:
- Contrôle de la luminosité de la LED avec PWM:
Ce tutoriel fait partie d'une série de tutoriels sur le LaunchPad MSP430G2 dans lesquels nous apprenons à utiliser le LaunchPad MSP430G2 de Texas Instruments. Jusqu'à présent, nous avons appris les bases de la carte et avons couvert comment lire la tension analogique, l'interface LCD avec MSP430G2, etc. Nous passons maintenant à l'étape suivante d'apprentissage sur PWM dans MSP430G2. Nous ferons cela en contrôlant la luminosité d'une LED en faisant varier le potentiomètre. Ainsi le potentiomètre sera attaché à une broche analogique du MSP430 pour lire sa tension analogique, il est donc recommandé de savoir passer par le tutoriel ADC avant de continuer.
Qu'est-ce qu'un signal PWM?
La modulation de largeur d'impulsion (PWM) est un signal numérique le plus couramment utilisé dans les circuits de commande. Ce signal est réglé haut (3,3 v) et bas (0 v) dans un temps et une vitesse prédéfinis. Le temps pendant lequel le signal reste haut est appelé «temps de marche» et le temps pendant lequel le signal reste bas est appelé «temps d'arrêt». Il existe deux paramètres importants pour un PWM, comme indiqué ci-dessous:
Cycle de service du PWM:
Le pourcentage de temps pendant lequel le signal PWM reste HAUT (temps d'activation) est appelé comme facteur de marche. Si le signal est toujours activé, il est en cycle de service de 100% et s'il est toujours désactivé, il est en cycle de service de 0%.
Cycle de service = temps d'activation / (temps d'activation + temps d'arrêt)
Fréquence d'un PWM:
La fréquence d'un signal PWM détermine à quelle vitesse un PWM complète une période. Une période est complète ON et OFF d'un signal PWM comme indiqué dans la figure ci-dessus. Dans notre tutoriel, la fréquence est de 500 Hz car il s'agit de la valeur par défaut définie par l'EDI Energia.
Il existe une pléthore d'applications pour les signaux PWM en temps réel, mais pour vous donner une idée, le signal PWM peut être utilisé pour contrôler les servomoteurs et peut également être converti en tension analogique qui peut contrôler la luminosité de la luminosité d'une LED. Apprenons un peu comment cela pourrait être fait.
Voici quelques exemples de PWM avec d'autres microcontrôleurs:
- Génération de PWM à l'aide du microcontrôleur PIC avec MPLAB et XC8
- Commande de servomoteur avec Raspberry Pi
- Gradateur LED basé sur Arduino utilisant PWM
Vérifiez tous les projets liés au PWM ici.
Comment convertir le signal PWM en tension analogique?
Pour les signaux PWM à la tension analogique, nous pouvons utiliser un circuit appelé filtre RC. Il s'agit d'un circuit simple et le plus couramment utilisé à cette fin. Le circuit comprend juste une résistance et un condensateur en série, comme indiqué dans le circuit ci-dessous.
Donc, ce qui se passe essentiellement ici, c'est que lorsque le signal PWM est élevé, le condensateur se charge à travers la résistance et lorsque le signal PWM devient faible, le condensateur se décharge à travers la charge stockée. De cette façon, nous aurons toujours une tension constante à la sortie qui sera proportionnelle au cycle de service PWM.
Dans le graphique ci-dessus, celui de couleur jaune est le signal PWM et celui de couleur bleue est la tension analogique de sortie. Comme vous pouvez le voir, l'onde de sortie ne sera pas une onde DC pure mais elle devrait très bien fonctionner pour notre application. Si vous avez besoin d'une onde CC pure pour un autre type d'application, vous devez concevoir un circuit de commutation.
Schéma:
Le schéma de circuit est assez simple; il a juste un potentiomètre et une résistance et un condensateur pour former un circuit RC et la Led elle-même. Le potentiomètre est utilisé pour fournir une tension analogique sur la base de laquelle le cycle de service du signal PWM peut être contrôlé. La sortie du potentiomètre est connectée à la broche P1.0 qui peut lire les tensions analogiques. Ensuite, nous devons produire un signal PWM, ce qui peut être fait en utilisant la broche P1.2, ce signal PWM est ensuite envoyé au circuit de filtre RC pour convertir le signal PWM en tension analogique qui est ensuite transmise à la LED.
Il est très important de comprendre que toutes les broches de la carte MSP ne peuvent pas lire la tension analogique ou générer des broches PWM. Les broches spécifiques qui peuvent effectuer les tâches spécifiques sont indiquées dans la figure ci-dessous. Utilisez toujours ceci comme guide pour sélectionner vos broches pour la programmation.
Assemblez le circuit complet comme indiqué ci-dessus, vous pouvez utiliser une maquette et quelques fils de cavalier et effectuer facilement les connexions. Une fois les connexions effectuées, ma carte ressemblait à celle illustrée ci-dessous.
Programmation du MSP pour le signal PWM:
Une fois le matériel prêt, nous pouvons commencer notre programmation. La première chose dans un programme est de déclarer les broches que nous allons utiliser. Ici, nous allons utiliser la broche numéro 4 (P1.2) comme broche de sortie car elle a la capacité de générer PWM. Nous créons donc une variable et assignons le nom de la broche afin qu'il soit facile de s'y référer plus tard dans le programme. Le programme complet est donné à la fin.
int PWMpin = 4; // Nous utilisons la 4ème broche du module MSP comme broche PWM
Ensuite, nous entrons dans la fonction de configuration . Quel que soit le code que nous est écrit ici sera exécutée qu'une seule fois, ici, nous déclarons que utilisons cette 4 e broches comme une broche de sortie depuis PWM est fonction de sortie. Notez que nous avons utilisé la variable PWMpin ici au lieu du nombre 4 pour que le code ait l'air plus significatif
void setup () { pinMode (PWMpin, OUTPUT); // Le PEMpin est défini comme Outptut }
Enfin, nous entrons dans la fonction de boucle . Tout ce que nous écrivons ici est exécuté encore et encore. Dans ce programme, nous devons lire la tension analogique et générer un signal PWM en conséquence et cela doit se produire encore et encore. Commençons donc par lire la tension analogique de la broche A0 puisque nous y sommes connectés au potentiomètre.
Ici, nous lisons la valeur à l'aide de la fonction AanalogRead , cette fonction renverra une valeur de 0 à 1024 en fonction de la valeur de la tension appliquée à la broche. Nous stockons ensuite cette valeur dans une variable appelée «val» comme indiqué ci-dessous
int val = analogRead (A0); // lire la valeur ADC de la broche A0
Nous devons convertir les valeurs de 0 à 1024 de l'ADC en valeurs de 0 à 255 pour les donner à la fonction PWM. Pourquoi devrions-nous convertir cela? Je vais le dire sous peu, mais pour l'instant, rappelez-vous simplement que nous devons nous convertir. Pour convertir un ensemble de valeurs en un autre ensemble de valeurs, Energia dispose d'une fonction de carte similaire à Arduino. Nous convertissons donc les valeurs de 0-1204 en 0-255 et les sauvegardons dans la variable «val».
val = carte (val , 0, 1023, 0, 255); // L'ADC donnera une valeur de 0-1023 la convertira en 0-255
Nous avons maintenant une valeur variable de 0 à 255 en fonction de la position du potentiomètre. Tout ce que nous avons à faire est d' utiliser cette valeur sur la broche PWM, cela peut être fait en utilisant la ligne suivante.
analogWrite (PWMpin, val); // Ecrit cette valeur sur la broche PWM.
Revenons à la question de savoir pourquoi 0-255 est écrit sur la broche PWM. Cette valeur 0-255 décide du cycle de service du signal PWM. Par exemple, si la valeur du signal est 0, cela signifie que le rapport cyclique est de 0% pour 127, il est de 50% et pour 255, il est de 100% exactement comme ce qui est montré et expliqué en haut de cet article.
Contrôle de la luminosité de la LED avec PWM:
Une fois que vous avez compris le matériel et le code, il est temps de vous amuser avec le fonctionnement du circuit. Téléchargez le code sur la carte MSP430G2 et tournez le bouton du potentiomètre. Lorsque vous tournez le bouton, la tension sur la broche 2 varie, ce qui sera lu par le microcontrôleur et en fonction de la tension, les signaux PWM seront générés sur la broche 4. Plus la tension est élevée, plus le rapport cyclique sera important et vice versa.
Ce signal PWM est ensuite converti en tension analogique pour allumer une LED. La luminosité de la LED est directement proportionnelle au cycle de service du signal PWM. Outre la LED sur la carte d'expérimentation, vous pouvez également remarquer la LED smd (couleur rouge) variant sa luminosité similaire à la LED de la planche à pain. Cette LED est également connectée à la même broche, mais elle n'a pas de réseau RC, elle clignote donc très rapidement. Vous pouvez secouer le tableau dans une pièce sombre pour vérifier sa nature scintillante. Le travail complet peut également être vu dans la vidéo ci-dessous.
C'est tout pour le moment, nous avons appris à utiliser les signaux PWM sur la carte MSP430G2.Dans notre prochain tutoriel, nous allons apprendre à quel point il est facile de contrôler un servomoteur en utilisant les mêmes signaux PWM. Si vous avez des doutes, postez-les dans la section commentaires ci-dessous ou sur les forums d'aide technique.