> >

C'est quoi la PWM sur l'arduino ? Qu'est-ce que le signal PWM | Tutoriel Arduino ? 👨‍💻


Qu'est-ce-que la PWM de l'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.

Sommaire :

Quel est le matériel utilisé dans ce tutoriel ?
Qu'est-ce que la PWM de l'arduino ?
Comment modifier la tension avec le signal PWM ?
Qu'elles sont les broches ou pins arduino générant la PWM ?
Mesure à l'oscilloscope du signal PWM
Comment programmer l'Arduino pour exploiter la PWM ?
Programmation Arduino pour la variation de vitesse
Découverte du signal PWM de l'arduino en vidéo


C'est quoi la PWM sur l'arduino ? Matériel utilisé dans cet article ? :

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'essai breadboard (optionnel).

Matériel utilisé visualiser la PWM de l'arduino
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.


C'est quoi la PWM sur l'arduino ? 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.
Visualisation d'une tension analogique en sortie
Vue d'une tension analogique

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

Visualisation d'une tension logique 5V
Vue d'une tension 5V niveau HIGH
Visualisation d'une tension logique 0V
Vue d'une tension 0V niveau LOW
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).
Signal tout ou rien TOR d'une sortie Digitale arduino
Signal tout ou rien (TOR)

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 ?


C'est quoi la PWM sur l'arduino ? 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.
Variation de la valeur moyenne de la tension en sortie PWM arduino
Changement de la valeur moyenne de la tension
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.

Signal PWM égal à 255 émis par la carte Arduino et alimentant un voyant, rapport cyclique 100%

Signal PWM égal à 230 émis par la carte Arduino et alimentant un voyant, rapport cyclique 90%

Signal PWM égal à 128 émis par la carte Arduino et alimentant un voyant, rapport cyclique 50%

Signal PWM égal à 25 mis par la carte Arduino et alimentant un voyant, rapport cyclique 10%

Signal PWM égal à 0 émis par la carte Arduino et alimentant un voyant, rapport cyclique 0%


C'est quoi la PWM sur l'arduino ? Qu'elles sont les broches ou pins arduino 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
repérage des broches arduino UNO compatibles avec la PWM
Pins Arduino repérées compatible avec la PWM

C'est quoi la PWM sur l'arduino ? 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 :
Branchement de l'arduino pour mesurer le signal PWM
Raccordement de l'oscilloscope sur 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).
Mesure à l'oscilloscope de l'augmentation du rapport cyclique
Augmentation du rapport cyclique PWM de 0 à 255
Mesure à l'oscilloscope de la diminution du rapport cyclique
Diminution du rapport cyclique PWM de 255 à 0

C'est quoi la PWM sur l'arduino ? 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.
void setup() {
pinMode(broche_PWM, OUTPUT); // Pin 10 Arduino en sortie 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

Vous pouvez retrouver d'autres exemples de programmes utilisant la PWM dans l'article sur la variation de vitesse d'un moteur à courant continu.



C'est quoi la PWM sur l'arduino ? Découverte du signal PWM de l'arduino en vidéo :

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.


Réseau sociaux
Recherche personnalisée
Si vous aimez les articles, n'hésitez pas à faire vos achats sur Amazon via ce lien, ils me permettront de recevoir une commission grâce au programme Partenaires Amazon EU.