MLI (PWM) 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.

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

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 varierla vitesse d'un moteur.

Le récepteur ne percevra plus simplement l'état BAS (0V) ou l'état HAUT (5V), mais une multitude de tensionsintermé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 = 255 ↔️ Rapport cyclique = 100% ↔️ Tension = 5V.

Exemples :

PWM = 25 ↔️ Rapport cyclique = 10% (25/255)↔️

Tension = 0,5V (5Vx10%)

PWM = 127 ↔️ Rapport cyclique = 50% (127/255)↔️

Tension = 2,5V (5Vx50%)

PWM = 230 ↔️ Rapport cyclique = 90% (230/255) ↔️ Tension = 4,5V (5Vx90%).

MéthodeQuestion

si PWM=50 que vaut la tension moyenne ?

si PWM=150 que vaut la tension moyenne ?

Si je veux une tension moyenne de 4V, quelle doit-être le PWM ?

Si je veux une tension moyenne de 1,25V, quelle doit-être le PWM ?