La modulation de largeur d’impulsion (PWM) est l’une des techniques les plus importantes utilisées dans les projets d’électronique et d’automatisation du Raspberry Pi. Il permet aux broches GPIO numériques de simuler un contrôle analogique en ajustant le timing du signal plutôt que la tension de sortie.

Présentation du PWM Raspberry Pi
La modulation de largeur d’impulsion (PWM) est une méthode qui permet aux broches GPIO Raspberry Pi de contrôler la puissance de sortie en commutant rapidement un signal numérique ALLUMÉ et ÉTEINT. Au lieu de créer une véritable tension analogique, la PWM modifie la durée pendant laquelle le signal reste ÉLEVÉ à chaque cycle. Ce pourcentage d’arrivée à temps s’appelle le cycle de travail.
Comment fonctionne le PWM sur Raspberry Pi

Un signal PWM commute à plusieurs reprises une broche GPIO Raspberry Pi entre les états HAUT et BAS. Le signal reste numérique, mais les appareils connectés répondent à l’effet moyen de la commutation.
Deux paramètres principaux régulent le fonctionnement de la PWM :
| Paramètre PWM | Signification |
|---|---|
| Fréquence | Combien de fois le signal se répète-t-il par seconde ? |
| Cycle de service | Combien de temps le signal reste ALLUMÉ pendant chaque cycle |
Sur les broches GPIO Raspberry Pi, le HAUT est d’environ 3,3V. Un cycle de service de 50 % signifie que le signal reste ÉLEVÉ la moitié du temps et BAS la moitié du temps. Cela peut donner une impression de demi-lumière à une LED ou réduire la puissance moyenne fournie à un moteur.
Le cycle de travail est calculé en utilisant :
Cycle de travail = Temps ON / Période totale × 100 %
| Cycle de service | Comportement du signal | Effet pratique |
|---|---|---|
| 0 % | Toujours ÉTEINT | Pas de sortie |
| 25 % | ON pendant un quart du cycle | Faible sortie |
| 50 % | ON pendant la moitié du cycle | Production moyenne |
| 75 % | ON pendant les trois quarts du cycle | Haute production |
| 100 % | Toujours ACTIVÉ | Production complète |
Augmenter le cycle de travail augmente la production moyenne, tandis que diminuer le cycle de travail la diminue.
La fréquence PWM est le nombre de cycles PWM par seconde. Elle est mesurée en hertz (Hz).
La fréquence est calculée en utilisant :
f=1/T
| Dispositif | Fréquence typique des PWM |
|---|---|
| LED | Des centaines de Hz ou plus |
| Moteurs DC | Des centaines de Hz à plusieurs kHz |
| Servos | Environ 50 Hz |
| Sortie audio | Des fréquences bien plus élevées |
Une mauvaise fréquence peut provoquer des LED clignotantes, des moteurs bruyants, des servos instables ou une mauvaise qualité audio.
PWM matériel vs PWM logiciel sur Raspberry Pi

| Sujet | PWM matériel | PWM logiciel |
|---|---|---|
| Définition | Utilise du matériel PWM dédié à l’intérieur du processeur Raspberry Pi | Utilise la commutation GPIO contrôlée par logiciel pour créer des impulsions PWM |
| Contrôle du timing | Contrôlé par le matériel | Contrôlé par logiciel et le système d’exploitation Linux |
| Précision du timing | Haut | Modéré |
| Stabilité du signal | Très stable avec moins de tremblement | Le saut peut-il se produire, surtout sous une forte charge CPU ? |
| Utilisation du processeur | Faible utilisation du processeur | Utilisation plus élevée du processeur |
| GPIO Flexibilité | Limité à certaines broches GPIO sélectionnées | Peut fonctionner sur de nombreuses broches GPIO |
| Contrôle de fréquence | Plus précis et stable | Cela dépend de la charge système |
| Performance sous charge | Maintient une sortie stable mieux pendant l’activité en arrière-plan | Peut devenir instable lorsque les tâches en arrière-plan Linux interrompent le timing des impulsions |
| Meilleures applications | Servos, pilotes moteur, ventilateurs, sortie audio, systèmes de contrôle de précision | Gradation LED, projets pour débutants, contrôle à basse vitesse, indicateurs d’état |
| Principal avantage | Sortie PWM fluide et précise | Installation facile et plus d’options GPIO |
| Limitation principale | Disponible uniquement sur certains pins | Chronométrage moins précis |
| Utilisation recommandée | À utiliser quand la précision du timing compte | À utiliser pour des projets simples où de petites erreurs de timing sont acceptables |
Broches et configuration GPIO PWM Raspberry Pi

Numérotation GPIO et broches matérielles PWM
Raspberry Pi utilise plusieurs systèmes de numérotation GPIO. La plupart des bibliothèques Python modernes utilisent la numérotation BCM, tandis que la numérotation physique fait référence à l’emplacement réel des broches sur l’en-tête.
| Type de numérotation | Signification |
|---|---|
| Numérotation BCM | La numérotation GPIO Broadcom est utilisée en interne |
| Numérotation physique des broches | Positions réelles des broches d’en-tête |
| Numérotation WiringPi | Ancien système de numérotation obsolète |
Vérifiez toujours la numérotation GPIO avant de câbler le matériel.
Broches PWM matérielles courantes
| BCM GPIO | Épingle physique | Canal PWM | Usage courant |
|---|---|---|---|
| GPIO12 | Broche 32 | PWM0 | LED, moteurs, servos |
| GPIO13 | Broche 33 | PWM1 | LED, moteurs, servos |
| GPIO18 | Broche 12 | PWM0 | Audio, servos, contrôle moteur |
| GPIO19 | Broche 35 | PWM1 | Audio, servos, contrôle moteur |
GPIO18 est couramment utilisé car il prend en charge la PWM matérielle et est largement pris en charge dans les tutoriels et bibliothèques PWM.
Bibliothèques PWM et configuration
Bibliothèques PWM courantes de Raspberry Pi
| Bibliothèque | Objectif principal | Notes |
|---|---|---|
| RPi.GPIO | Contrôle basique GPIO et PWM | Accessible aux débutants |
| GPIOZERO | Contrôle simplifié des appareils | Interface de haut niveau |
| Pigpio | Synchronisation précise et PWM avancé | Prend en charge la synchronisation DMA |
| lgpio | Contrôle GPIO moderne | Accès de niveau inférieur |
Paramètres de configuration typiques des PWM
| Paramètre | Description |
|---|---|
| Fréquence | Vitesse de commutation PWM |
| Cycle de service | Pourcentage du temps ON |
| Broche GPIO | Broche de sortie PWM sélectionnée |
| Mode PWM | PWM matériel ou logiciel PWM |
Limitations de la PWM et sécurité du câblage
Le matériel Raspberry Pi PWM présente plusieurs limitations qui deviennent importantes en robotique, contrôle moteur, systèmes audio et applications industrielles.
| Limitation | Explication |
|---|---|
| Canaux PWM limités | Seul un petit nombre de sorties matérielles PWM sont disponibles |
| Fonctions partagées | Certaines broches GPIO partagent des périphériques |
| Conflits audio | Le PWM peut entrer en conflit avec l’audio embarqué |
| Restrictions de broches | Toutes les broches GPIO ne supportent pas le PWM matériel |
| Partage de fréquence | Certains canaux PWM partagent des sources d’horloge |
| Dépendance DMA | Les méthodes PWM avancées peuvent utiliser des ressources DMA |
Beaucoup de problèmes de PWM sont causés par des erreurs de câblage plutôt que par des problèmes logiciels.
| Erreur de câblage | Pourquoi cela compte |
|---|---|
| Mélange BCM et numérotation physique | Contrôle la mauvaise broche GPIO |
| Connexion directe des moteurs au GPIO | Peut endommager Raspberry Pi |
| Terrain d’entente manquant | Causes de signaux instables |
| Dépasser les limites de courant GPIO | Peut endommager de façon permanente les broches GPIO |
| Diode à reculer manquant | Les pics de tension peuvent endommager les composants |
| Mauvaise connexion de tension | Les broches GPIO ne supportent que la logique 3,3V |
| Fils de démarrage desserrés | Causes de signaux PWM instables |
Composants de protection recommandés
| Composant | But |
|---|---|
| MOSFET | Commuter en toute sécurité des charges à courant élevé |
| Conducteur de pont en H | Contrôle la vitesse et la direction du moteur |
| Diode de retour de rebond | Protège contre les pics de tension inductifs |
| Alimentation externe | Moteur en toute sécurité |
| Optocoupler | Assure l’isolation électrique |
Applications PWM Raspberry Pi
Systèmes de gradation LED

La PWM est largement utilisée dans les projets LED Raspberry Pi car elle peut contrôler la luminosité sans nécessiter une véritable broche de sortie analogique. En modifiant le cycle de travail, les LED peuvent paraître plus faibles ou plus lumineuses. Cela est utile pour le contrôle de luminosité LED, le mélange des couleurs RGB, l’éclairage décoratif, les systèmes de luminosité adaptative et les indicateurs d’état. Une fréquence PWM suffisamment élevée doit être utilisée pour éviter le scintillement visible.
Contrôle de la vitesse du moteur

La PWM est couramment utilisée pour contrôler la vitesse des moteurs en courant continu dans les roues robotiques, pompes, ventilateurs, systèmes de convoyeurs et actionneurs automatisés. Au lieu de modifier directement la tension d’alimentation, le PWM ajuste la puissance moyenne fournie au moteur. Des cycles de service plus élevés augmentent généralement la vitesse du moteur, tandis que des cycles plus faibles la réduisent. Des pilotes de moteurs externes sont nécessaires car les broches GPIO du Raspberry Pi ne peuvent pas piloter les moteurs en toute sécurité.
Contrôle de la position des servomoteurs

Les servomoteurs utilisent des impulsions de commande répétitives où la largeur d’impulsion détermine la position dans les bras robotiques, les systèmes de caméras panoramique-inclinaison, les véhicules RC et les systèmes d’automatisation. De petites erreurs de calage peuvent provoquer des secousses, des bourdonnements ou des mouvements instables, donc un timing PWM stable est important pour un contrôle fiable des servos.
Génération du signal audio

Le Raspberry Pi PWM peut générer des tonalités simples, des alarmes, des buzzers et des signaux audio basiques en changeant de broches GPIO à des fréquences audibles. La PWM est utile pour une sortie sonore intégrée simple, mais elle ne peut pas remplacer entièrement un DAC dédié pour des applications audio de haute qualité.
Applications industrielles et IoT

La PWM est utile dans les systèmes industriels et IoT Raspberry Pi car elle peut contrôler les sorties matérielles ajustables. Les applications courantes incluent l’agriculture intelligente, la surveillance environnementale, les systèmes CVC, l’automatisation industrielle et les systèmes de contrôle IoT. La PWM contrôle fréquemment les ventilateurs, pompes, vannes, systèmes d’éclairage et actionneurs.
Raspberry Pi vs Arduino pour le PWM

| Catégorie | Framboise Pi | Arduino |
|---|---|---|
| Système d’exploitation | Exécute Linux OS | Exécute un firmware simple |
| Puissance de traitement | Puissance de traitement plus élevée pour des applications avancées | Puissance de calcul réduite mais optimisé pour les tâches de contrôle |
| Synchronisation PWM | Moins prévisible grâce au système d’exploitation multitâche | Comportement PWM en temps réel plus prévisible |
| Latence | Latence modérée | Latence plus faible avec une réponse matérielle plus rapide |
| Contrôle matériel | Accès indirect au matériel via OS et bibliothèques | Accès direct au matériel |
| Stabilité PWM | Bon pour le PWM polyvalent | Mieux pour un contrôle moteur stable et des boucles de contrôle |
| Réseautage | Excellent support réseau et IoT | Réseau limité sans modules supplémentaires |
| Multitâche | Peut exécuter des serveurs, scripts, bases de données et plusieurs applications | Capacité limitée de multitâche |
| Programmation | Programmation facile de haut niveau avec Python | Programmation simple de bas niveau avec l’IDE Arduino |
| Électronique débutante | Idéal pour les débutants axés sur les logiciels | Excellent pour les débutants en électronique |
| Automatisation intelligente | Excellent pour les systèmes d’automatisation intelligents connectés | Bon pour l’automatisation autonome |
| Contrôle moteur en temps réel | Performance modérée | Excellente performance |
| Chronométrage de précision | Précision de synchronisation modérée | Excellente précision du timing |
| Meilleurs cas d’utilisation | Systèmes IoT, automatisation intelligente, surveillance à distance, projets basés sur Linux | Moteurs, servos, robotique, contrôle embarqué, PWM en temps réel |
| Principal avantage | Combine le PWM avec des logiciels avancés et des réseaux | Fournit un contrôle PWM en temps réel précis et stable |
Dépannage du PWM Raspberry Pi
| Problème | Cause possible | Correction recommandée |
|---|---|---|
| Le signal ne fonctionne pas | Mauvaise numérotation GPIO | Vérifiez si le code utilise BCM, physique ou un autre système de numérotation. |
| Le signal ne fonctionne pas | Mauvais câblage | Revérifiez les connexions GPIO, le placement des résistances et la masse partagée. |
| Le signal ne fonctionne pas | Broche non supportée | Vérifiez si la broche sélectionnée supporte la PWM matérielle ou logicielle. |
| Le signal ne fonctionne pas | Problème de bibliothèque ou d’autorisation | Vérifiez l’installation de la bibliothèque GPIO, les permissions et les commandes de configuration. |
| Nervement servo | Alimentation faible | Utilisez une alimentation séparée pour le servo. |
| Nervement servo | Terrain d’entente manquant | Connecte la masse du Raspberry Pi à la masse de l’alimentation servo. |
| Nervement servo | Instabilité logicielle PWM | Utilisez du matériel PWM ou une bibliothèque plus stable comme pigpio. |
| Nervement servo | Bruit électrique | Raccourcir les fils et améliorer le filtrage de puissance ou la disposition du câblage. |
| Clignotement des LED | Fréquence trop basse | Augmentez la fréquence PWM jusqu’à ce que le scintillement ne soit plus visible. |
| Clignotement des LED | Mauvais câblage | Vérifiez les valeurs des résistances, les connexions desserrées et la qualité du câblage. |
| Bruit moteur ou instabilité | Alimentation faible | Utilisez une alimentation externe pour moteur au lieu d’alimenter le moteur depuis GPIO. |
| Bruit moteur ou instabilité | Composants de protection manquants | Utilisez un driver moteur approprié et ajoutez des composants de protection comme une diode à recul variable si nécessaire. |
| Bruit moteur ou instabilité | Fréquence incorrecte | Ajustez la fréquence PWM pour qu’elle corresponde au moteur et au circuit du pilote. |
| Erreurs de pigpio | Démon qui ne fonctionne pas | Démarrez ou redémarrez le démon pigpio. |
| Erreurs de pigpio | Conflits GPIO | Vérifiez si un autre programme utilise déjà la même broche GPIO. |
Foire aux questions [FAQ]
Pourquoi la PWM est-elle importante sur Raspberry Pi alors que les broches GPIO sont uniquement numériques ?
La PWM permet aux broches GPIO Raspberry Pi de simuler un contrôle analogique en basculant rapidement les signaux entre états HAUT et BAS. Au lieu de modifier directement la tension, la PWM modifie le cycle de travail pour contrôler la livraison moyenne de puissance. Cela permet d’atténuer les LED, d’ajuster la vitesse du moteur, de contrôler la position des servomoteurs et de gérer les ventilateurs à l’aide de broches GPIO numériques standard.
Quand doit-on utiliser la PWM matérielle à la place de la PWM logicielle sur Raspberry Pi ?
La PWM matérielle est meilleure pour les applications nécessitant un timing stable et une génération d’impulsions précise, telles que les servos, les pilotes moteur, la sortie audio et la robotique. Parce que le matériel dédié contrôle le signal, il produit moins de gigue et utilise moins de ressources CPU. La PWM logicielle est généralement suffisante pour des tâches plus simples comme la gradation des LED ou les indicateurs d’état, où de petites erreurs de calage sont moins perceptibles.
Pourquoi une fréquence PWM incorrecte peut-elle causer des problèmes dans les projets Raspberry Pi ?
Différents appareils réagissent le mieux à différentes fréquences PWM. Si la fréquence est trop basse, les LED peuvent clignoter visiblement, les moteurs peuvent produire du bruit ou des mouvements brusques, et les servos peuvent devenir instables. Des fréquences très élevées peuvent également réduire la résolution des PWM ou augmenter les besoins de traitement. Choisir la bonne fréquence améliore les performances, la fluidité et la fiabilité.
Pourquoi les moteurs et servos ne devraient-ils jamais se connecter directement aux broches GPIO du Raspberry Pi ?
Les broches GPIO Raspberry Pi ne supportent que les signaux logiques 3,3V à faible courant et ne peuvent pas alimenter en toute sécurité les moteurs ou les servomoteurs directement. Les dispositifs à fort courant peuvent endommager les broches GPIO, créer des pics de tension ou provoquer un fonctionnement instable. Des pilotes externes, des MOSFET, des circuits H-bridge, des diodes flyback et des alimentations séparées aident à protéger le Raspberry Pi et à améliorer la fiabilité des PWM.
Pourquoi Arduino est-il souvent meilleur pour un contrôle précis de la PWM que Raspberry Pi ?
Les cartes Arduino sont conçues pour un contrôle matériel en temps réel et exécutent un firmware simple sans système d’exploitation multitâche. Cela permet un timing PWM plus prévisible, une latence plus faible et une meilleure stabilité pour les moteurs, servos et boucles de contrôle. Raspberry Pi est plus performant en réseau, applications Linux, systèmes IoT et automatisation intelligente, mais l’activité en arrière-plan Linux peut affecter la précision du timing PWM.