jeudi 20 novembre 2025

Guide complet pour maîtriser la modulation PWM dans vos projets Arduino

 

Introduction

Dans le monde de l’électronique et de la programmation embarquée, la modulation PWM (Pulse Width Modulation) est l’une des techniques les plus importantes et les plus utilisées pour contrôler la puissance envoyée à un composant. Sur une carte Arduino, le PWM permet de simuler une tension variable grâce à un signal numérique très rapide. Cette méthode est indispensable pour piloter des moteurs, ajuster l’intensité lumineuse d’une LED, gérer la vitesse d’un ventilateur ou encore contrôler la position d’un servo-moteur.

Bien que le PWM soit souvent présenté comme un simple signal ON/OFF, il repose en réalité sur un principe précis : la variation du rapport cyclique. Grâce à Arduino, cette technique devient accessible même aux débutants, tout en offrant suffisamment de possibilités pour répondre aux besoins des projets électroniques les plus avancés. Ce guide détaillé explique le fonctionnement du PWM, son usage avec Arduino, les différences entre PWM standard et signaux spécifiques, ainsi que plusieurs exemples de code utiles.


1. Qu’est-ce que la modulation PWM ?



La modulation PWM, ou modulation de largeur d’impulsion, est une technique qui consiste à allumer et éteindre un signal numérique à une vitesse très élevée. L’idée n’est pas de modifier la tension elle-même, mais le temps pendant lequel le signal reste à l’état HIGH dans un cycle donné.

Vu à l’œil nu, le signal semble constant, car les interruptions sont trop rapides pour être perçues. Pourtant, la puissance moyenne reçue par le composant varie réellement, ce qui permet de simuler une tension intermédiaire.

Ainsi, avec le PWM, un signal numérique peut produire un comportement analogue, ce qui est particulièrement utile puisque les cartes Arduino classiques ne disposent pas de sorties analogiques véritables (seules les entrées peuvent être analogiques).


2. Le duty cycle : clé du fonctionnement du PWM

Le paramètre fondamental du PWM est le duty cycle, ou rapport cyclique. Il correspond au pourcentage du temps pendant lequel le signal est dans l’état HIGH au cours d’un cycle complet.

Voici quelques exemples pour mieux comprendre :

  • 0 % de duty cycle : le signal reste constamment à 0 V → résultat : aucune puissance.

  • 50 % de duty cycle : le signal est HIGH la moitié du temps → puissance moyenne.

  • 100 % de duty cycle : le signal est constamment HIGH → puissance maximale.

Cette modulation permet de contrôler précisément la puissance délivrée à un composant sans avoir besoin d’un convertisseur analogique.

Sur Arduino, la commande PWM est générée automatiquement par la fonction analogWrite(), avec une résolution de 8 bits allant de 0 à 255 :

  • analogWrite(pin, 0) correspond à 0 %,

  • analogWrite(pin, 255) correspond à 100 %,

  • une valeur intermédiaire représente une puissance proportionnelle.


3. Les fréquences PWM sur Arduino

Chaque carte Arduino utilise différents timers internes pour générer des signaux PWM. Par conséquent, les fréquences varient selon les broches utilisées.

Fréquence standard sur Arduino Uno et Nano

  • Environ 490 Hz sur la majorité des sorties PWM : 3, 9, 10, 11

  • Environ 980 Hz sur les pins 5 et 6

Ces fréquences sont étudiées pour être suffisamment rapides pour des applications comme le contrôle de moteurs ou la variation de luminosité de LED, tout en restant faciles à gérer pour le microcontrôleur.


4. Les pins PWM disponibles sur Arduino


Toutes les broches numériques ne peuvent pas produire du PWM. Sur la plupart des cartes Arduino basées sur l’ATmega328P, les broches supportant le PWM sont signalées par le symbole « ~ ».

Pins PWM sur Arduino Uno / Nano

  • 3, 5, 6, 9, 10, 11

Comment reconnaître une pin PWM ?

Sur la carte, un petit symbole ~ est imprimé à côté du numéro de la broche. C’est un indicateur visuel très utile pour les débutants.


5. PWM et servo-moteurs : une différence importante

Il est important de noter que les servo-moteurs n’utilisent pas le PWM classique généré par analogWrite().
Ils utilisent un signal spécifique appelé PPM (Pulse Position Modulation) basé sur des impulsions de durée précise entre 500 µs et 2400 µs.

Voici les équivalences typiques :

  • environ 500–600 µs → proche de 0°

  • environ 1500 µs → autour de 90°

  • environ 2300 µs → proche de 180°

Pour simplifier cette gestion, Arduino propose la bibliothèque Servo.h, qui prend en charge la génération correcte des impulsions.
Ainsi, une simple ligne comme :

servo.write(90);

permet de positionner un servo à 90°, sans devoir gérer manuellement la largeur des impulsions.


6. Générer un signal PWM avec Arduino : exemples pratiques

Exemple 1 : Variation de luminosité d’une LED

L’exemple suivant permet de faire varier la lumière d’une LED de manière fluide et continue :

int led = 9; void setup() { pinMode(led, OUTPUT); } void loop() { for (int i = 0; i < 255; i++) { analogWrite(led, i); delay(10); } for (int i = 255; i > 0; i--) { analogWrite(led, i); delay(10); } }

Cet exemple montre comment le PWM peut simuler une tension variable pour régler la luminosité.


Exemple 2 : contrôle d’un moteur DC

Le PWM permet de réguler la vitesse d’un moteur DC :

int motor = 5; void setup() { pinMode(motor, OUTPUT); } void loop() { analogWrite(motor, 150); // Vitesse intermédiaire delay(2000); analogWrite(motor, 255); // Pleine puissance delay(2000); }

Grâce au PWM, contrôler la vitesse d’un moteur devient simple et précis.


7. Applications principales du PWM avec Arduino.


Le PWM est utilisé dans une très grande variété de projets :

• Diminution ou augmentation progressive de la luminosité

Pour les panneaux lumineux, LED RGB, lampes intelligentes.

• Contrôle de moteurs DC

Idéal pour construire :

  • voitures robotisées,

  • ventilateurs,

  • pompes miniatures.

• Régulation de puissance

Chauffages, résistances, modules thermoélectriques.

• Contrôle de servos (via Servo.h)

Pour la robotique, les bras articulés, les scanners ultrasoniques.

• Gestion du bruit et du chauffage dans les ventilateurs

Le PWM permet une gestion silencieuse et maîtrisée.


8. Limites et précautions du PWM


Bien que très utile, le PWM Arduino a quelques limites :

  • Résolution limitée à 8 bits

  • Fréquence fixe (certains moteurs préfèrent du 20 kHz ou plus)

  • Peut créer du bruit électrique sur les moteurs

  • Impossible sur toutes les broches

  • Certaines bibliothèques utilisent les mêmes timers et peuvent entrer en conflit (Servo, Tone, IRremote)

Malgré cela, le PWM Arduino reste suffisant pour la majorité des projets éducatifs et prototypes.


Conclusion

Le signal PWM constitue un outil incontournable dans la conception de projets électroniques avec Arduino. Grâce à cette technique de modulation, il devient possible de contrôler avec précision la puissance fournie à une grande variété de composants : LEDs, moteurs, chauffages, ventilateurs ou servos. Facile à mettre en place à l’aide de la fonction analogWrite(), le PWM combine simplicité et efficacité, rendant les projets plus flexibles et plus intuitifs.

Comprendre le fonctionnement du Duty cycle, connaître les limitations de la carte Arduino et savoir choisir la bonne broche pour le PWM sont autant d’éléments essentiels pour travailler proprement et efficacement. Une fois maîtrisé, ce concept ouvre la porte à des réalisations créatives, robustes et innovantes dans l’univers Arduino.

Aucun commentaire:

Enregistrer un commentaire

Servo-moteur avec Arduino

Servo-moteur avec Arduino : Guide complet du fonctionnement, du branchement et de la programmation. Introduction Le servo-moteur est l’un ...