Qu'est-ce que le signal PWM | Tutoriel Arduino ? 👨💻
Lorsque l'on souhaite varier
la vitesse d'un moteur à courant continu ou modifier la luminosité d'une LED ou encore pour changer les couleurs d'une LED RGB,
il est nécessaire d'avoir une variation de la tension. Cette variation de la tension est réalisable avec certaines sorties digitales de l'arduino afin de créer un
pseudo signal analogique en utilisant la PWM.
Mais qu'est-ce que le signal PWM ? Comment paramétrer et exploiter cette émission du signal numérique ?
Découvrez dans cet article le principe de la PWM et comment s'en servir dans les montages électroniques utilisant une carte Arduino.
Afin de vous présenter le principe du signal PWM qui est envoyé par la carte de développement Arduino, j'utiliserai les composants ou appareils suivants :
• Une Arduino Uno ou compatible et son câble USB.
• Un oscilloscope analogique.
• Des conducteurs pour plaque d'essai ou fils de prototypage (mâle/mâle, mâle/femelle, femelle/femelle).
• Une platine d'expérimentation ou plaque d'essaibreadboard (optionnel).
L'oscilloscope me permettra de visualiser à partir de son écran la forme du signal PWM afin d'expliquer plus facilement comment varie cette information électrique.
Il sera notamment possible d'observer le rapport cyclique symbolisant la variation du signal électrique PWM.
Qu'est-ce que la PWM de l'arduino ? :
Tout d'abord PWM sont les Initiales de Pulse Width Modulation que l'on
traduit en français par MLI (Modulation de Largeur d'Impulsion).
Quand on souhaite faire varier la luminosité d'une diode (LED), la couleur des LEDs RGB ou faire de la variation de vitesse d'un moteur DC, il est nécessaire de générer un signal analogique.
Or l'arduino est équipée de broches analogiques en entrées mais ne peuvent pas être utilisées en sorties.
Afin de varier artificiellement la tension en sortie de l'Arduino, il nous faudra utiliser certaines broches digitales de la carte. Mais par définition, une broche digitale
ne délivre qu'un signal binaire (0 ou 1), c'est-à-dire que le signal électrique en sortie ne peut avoir que deux valeurs soit HIGH
(niveau Haut = 5V) ou LOW (niveau Bas = 0V).
Les broches digitales compatibles PWM vont permettre d'émettre un signal numérique disposant de 256 valeurs différentes
(résolution de 8 bits soit 28 = 256) et non plus seulement 2 valeurs (Tout ou Rien TOR ou binaire).
Vous vous demandez peut-être comment modifier la valeur de la tension avec une sortie digitale alors qu'elle ne peut avoir que deux valeurs 5V ou 0V ?
Comment modifier la tension avec le signal PWM ? :
Pour générer une tension variable ou pseudo analogique en sortie d'une broche digitale de l'Arduino, il va falloir changer très rapidement l'état de la sortie.
En effet, le fait de passer d'un état LOW à HIGH très vite cela va engendrer la variation de la valeur moyenne de la tension.
Or, c'est ce changement de la valeur moyenne du signal électrique va changer la luminosité d'une LED ou varier la vitesse d'un moteur.
Le récepteur ne percevra plus simplement l'état BAS (0V) ou l'état HAUT (5V), mais une multitude de tensions intermédiaires qui vont varier de 0V à 5V avec une résolution de 256 valeurs possibles.
Ce pseudo signal analogique est possible car la fréquence de commutation entre les niveaux HAUT et BAS est élevée : 500 Hz soit 500 fois par seconde. Le changement d'état étant très rapide, le récepteur y est donc insensible, comme notre œil avec le clignotement des tubes fluorescent avec le signal alternatif sinusoïdal 50Hz.
Afin de déterminer quelle tension moyenne on souhaite appliquer au récepteur, il faudra modifier le rapport cyclique, c'est-à-dire la durée du maintient au niveau HIGH ou HAUT du signal de sortie.
Ainsi, le rapport cyclique pourra varier de 0% (tension nulle 0V) jusqu'à 100% (Tension égale à 5V). Par contre au niveau de l'arduino,
ce n'est pas une valeur comprise entre 0 et 100 qui sera réglée mais une valeur numérique comprise entre 0 et 255 (8 bits).
En faisant une règle de trois ou un produit en croix, il est possible de déterminer pour chaque entier (PWM) compris entre 0 et 255 la valeur du rapport cyclique ou la tension
moyenne en sortie de l'arduino :
• PWM = 0 ↔️ Rapport cyclique = 0% ↔️ Tension = 0V.
• PWM = 33 ↔️ Rapport cyclique = 10% ↔️ Tension = 0,5V.
• PWM = 127 ↔️ Rapport cyclique = 50% ↔️ Tension = 2,5V.
• PWM = 230 ↔️ Rapport cyclique = 90% ↔️ Tension = 4,5V.
• PWM = 255 ↔️ Rapport cyclique = 100% ↔️ Tension = 5V.
Pour illustrer ces propos voici une animation gif permettant de visualiser le rapport cyclique mais à une fréquence très faible de presque 1Hz qui est donc visible à l'œil.
Qu'elles sont les broches ou pinsarduino générant la PWM ? :
Pour générer un signal PWM ou un signal MLI avec une arduino, il faut utiliser une broche compatible avec cette modulation du signal.
Voici en fonction de la carte de développement Arduino ou compatible que vous utilisez les broches disponibles permettant d'envoyer le signal PWM :
Type ou Modèle d'Arduino
Broches disponibles PWM
Uno, Pro Mini, Nano
3, 5, 6, 9, 10 et 11
Leonardo
3, 5, 6, 9, 10, 11 et 13
Due
2 à 13
Zero
2 à 13
Mega
2 à 13 et 44 à 46
Mesure à l'oscilloscope du signal PWM :
Pour visualiser le signal PWM et le changement du rapport cyclique je vais utiliser un oscilloscope analogique raccordé sur la sortie digitale 10 configurée en PWM.
Voici le schéma de raccordement de l'appareil de mesure sur les broches de l'arduino :
Grâce à l'oscilloscope il est possible de voir à quoi ressemble le signal PWM, c'est un signal carré de période 2ms (fréquence 500 Hz) dont l'amplitude est de 5V.
Pour obtenir une modification de la valeur moyenne de la tension, il faut changer le rapport cyclique, c'est-à-dire le temps de maintient à l'état HIGH (5V) du signal.
Sur les enregistrements ci-dessous, le programme utilisé génère une augmentation de la PWM de 0 à 255 puis une diminution de la PWM de 255 à 0.
Les traits horizontaux rouges représentent une visualisation de la valeur moyenne de la tension (1V/DIV).
Comment programmer l'Arduino pour exploiter la PWM ? :
Pour utiliser l'Arduino afin d'émettre
en sortie digitale un signal PWM, il est nécessaire de paramétrer la carte de développement au moyen de lignes de commande.
• Dans un premier temps il faut choisir parmi l'une des broches de l'arduino celle(s) à utiliser pour émettre le signal PWM.
int broche_PWM = 10; // Déclaration de la Pin 10 Arduino
• Ensuite on peut créer une variable int qui variera de 0 à 255.
int Valeur_PWM = 0; // Variable PWM image de la consigne de 0 à 255
• Dans le setup, il faut déclarer la broche choisie en tant que sortie digitale pour émettre la PWM.
• Dans le programme, on demande à l'arduino d'envoyer sur la broche programmée, un signal PWM (numérique) de valeur comprise entre 0 et 255 (choix du rapport cyclique).
analogWrite(broche_PWM,Valeur_PWM); // Envoi du signal PWM sur la sortie numérique 10
Pour comprendre le principe de la PWM générée par l'Arduino, vous pouvez consulter ce tutoriel en vidéo dans lequel je reprends la mesure électrique à l'oscilloscope afin de
visualiser la forme du signal PWM et sa variation sur l'écran de l'oscillo.
📌 Politique de Confidentialité |
Cet article peut inclure du contenu sponsorisé et rémunérédes, des liens d'affiliation, notamment des liens Amazon (programme Partenaire Amazon EU) me permettant de toucher une commission au pourcentage sur la vente des produits affiliés (sans augmentation de prix pour l'acheteur).
❤️💟 Si vous aimez les articles et pour soutenir le développement du site n'hésitez pas à partager sur les réseaux sociaux