PWM (Pulse Width Modulation)
La PWM en français la MLI (Modulation de Largeur d'Impulsion) permet de générer une tension pseudo variable (analogique) à partir d'une tension binaire de 0-5V (numérique).
Générer une tension analogique est indispensable pour faire fonctionner certains actionneur :
Servomoteur
Moteur courant continu
Modifier luminosité d'une LED
Changer la couleur d'une LED RGB
...
Définition : Principe
Le principe consiste à mettre une sortie à l'état 1 pendant un certain temps puis de la basculer à l'état 0 pendant une autre durée.
Si l'alternance (la fréquence) est assez rapide, on peut considérer que la tension obtenue sur la sortie correspond à la durée des passages à l’état haut divisée par le temps.
Dans cette exemple, l’état haut est présent 50% (5/10) du temps. On dit que le rapport cyclique est de 50%. On peut considérer que la sortie est à 2,5V (5*50/100).
Ici, l'état haut est présent 20% (2/10) du temps. Rapport cyclique 20% et tension de sortie 1V (5*20/100).
Définition : Les Sorties PWM
Seules les sorties marquées avec le ~ (tilde) permettent de générer le PWM.
Sur l'arduino : 3,5,6,9,10 et 11.
La fréquence du signal n'est pas la même selon les sorties :
490Hz : 3,9,10 et 11
980Hz : 5 et 6
Définition : analogWrite(Sortie, RapportCyclique)
La fonction qui permet de fixer le rapport cyclique est analogWrite.
Sortie : numéro de la broche PWM.
RapportCyclique : un nombre entre 0 et 255. 0->0% - 255->100%
Définition : Variation de la luminosité d'une LED
Allumer en boucle une LED de 0 à 100% et de 100% à 0.
const int LED = 5;
void setup()
{
pinMode(LED, OUTPUT);
pinMode(LED, OUTPUT);
}
void loop()
{
for (int i = 0; i <= 255; i++)
{
analogWrite(LED, i);
delay(50);
}
for (int i = 255; i >= 0; i--)
{
analogWrite(LED, i);
delay(50);
}
}