Main

Référence : Langage Arduino : [ Mini | Standard | Etendue | Maxi ] Librairies : [ Vue d'ensemble | Synthèse ] Infos : [ Comparaison | Changements ]

La génération d'impulsion modulée en largeur (ou PWM - Pulse Width Modulation)


L'exemple "Fading" montre comment utiliser une sortie "analogique" (PWM) pour atténuer la luminosité d'une LED. Cet exemple est disponible depuis le logiciel Arduino dans le menu : File->Sketchbook->Examples->Analog (Fichier > Programmes > Exemples > Analog ).

La modulation de la largeur d'impulsion (MLI ou PWM), est une technique pour obtenir des effets d'allure analogique avec des broches numériques. Le contrôle numérique est utilisé pour créer une onde carrée, un signal basculant entre un niveau HAUT et BAS, 0V et 5V. Cette succession de niveaux HAUT/BAS peut simuler des tensions entre le niveau HAUT (5 Volts) et le niveau BAS (0 Volts) en faisant varier la proportion du temps où le signal est HAUT sur la proportion de temps où le signal est BAS. La durée du temps du niveau HAUT est appelé largeur d'impulsion, ou encore "duty cycle" (cycle de travail en français). Pour obtenir une variation analogique, il suffit de changer ou de modifier cette largeur d'impulsion. En répétant la succession de niveaux HAUT/BAS assez rapidement avec une LED par exemple, le résultat est semblable à celui que l'on obtiendrait en contrôlant la luminosité de la LED avec une tension régulière entre 0 et 5V.

Dans le graphique ci-dessous, les lignes vertes représentent une période de temps régulière. Cette durée, ou période, est l'inverse de la fréquence du signal PWM (qui est une onde carrée). En d'autres termes, avec une fréquence PWM générée par la carte Arduino de l'ordre de 500 hz, l'espace entre 2 lignes mesure 2 millisecondes. Un appel de la fonction analogWrite(valeur) utilise une valeur comprise entre 0 et 255, tel que analogWrite(255) utilise 100% du cycle (toujours au niveau HAUT), et analogWrite(127) utilise 50% du cycle de travail (la moitié du temps) par exemple. La valeur 0 correspond ainsi à 0% du cycle de travail (duty cycle).

Une fois que vous avez lancé ce programme d'exemple, prenez votre carte Arduino et secouez-là dans les deux sens. Ce que vous êtes en train de faire ici est essentiellement de représenter le temps dans l'espace. Pour vos yeux, le mouvement rend flou chaque clignotement de LED sous forme d'une ligne. Lorsque la luminsoté de la LED varie, ces petites lignes grandissent et raccourcissent en longueur. Maintenant vous voyez la largeur d'impulsion.

Ecrit par Timothy Hirzel

Commentaires utilisateurs


Page d'accueil de la référence Arduino en français

Corrections, suggestions et nouvelle documentation peuvent être postées sur le Forum Arduino ou à l'adresse suivante : support_at_mon-club-elec_point_fr

Le texte original de la référence Arduino est sous licence Creative Commons Attribution-ShareAlike 3.0 . Les exemples de code dans la référence sont dans le domaine public.

La présente traduction française commentée a été réalisée par Xavier HINAULT (2010-2012) (www.mon-club-elec.fr) et est sous licence Creative Commons Attribution-ShareAlike 3.0.

Traduction de la page originale : http://arduino.cc/en/Tutorial/PWM