Leçon 7

Modulation de largeur d'impulsions

Que signifie modulation de largeur d'impulsions ?

Jusqu’à présent, dans les exemples précédents nous avons vu l’émission de signaux numériques par le biais des broches numériques et de digitalWrite(pinLed,1) pour allumer ou éteindre une LED . Ces signaux numériques ont soit une valeur égale à LOW, c’est à dire 0V, soit une valeur égale à HIGH, soit 5V.
Mais cette méthode ne nous permet pas, par exemple, de régler la luminosité de la LED. Pour pouvoir faire cela, il serait nécessaire de pouvoir disposer de sorties permettant des tensions intermédiaires entre 0 et 1.
Le principe est de construire un signal qui est alternativement LOW et HIGH et de répéter très vite cette alternance. La LED est donc alternativement allumée et éteinte mais le cycle est tellement rapide que l'oeil humain ne le détecte pas et nous avons l’illusion d’une LED allumée en permanence.
Prenons par exemple une période de 10ms.
Si la LED est allumée pendant 5ms et éteinte pendant 5ms, comme sur la figure ci-dessous, l’impression sera une luminosité de 50% de la luminosité maximum

Si la LED est allumée pendant 1ms et éteinte pendant 9ms, l’impression sera une luminosité de 10% comme sur la figure ci-dessous.

Le pourcentage de temps passé à l’état HIGH sur la période du signal est appelé le rapport cyclique. Il varie donc de 0%, le signal est tout le temps LOW, à 100%, le signal est tout le temps HIGH.

Pour fixer le rapport cyclique de la PWM nous utiliserrons l'instruction analogWrite(pin,valeur). valeur est un entier compris entre 0 et 255 et qui va définir la part de temps pendant laquelle le pin sera à l’état HAUT durant chaque intervalle (255 correspondra à 100% du temps d’intervalle à l’état HAUT).
Le rapport cyclique n’étant pas donné de 0 à 100 mais de 0 à 255, il faut donc faire une règle de 3 pour calculer la valeur à appliquer pour le rapport cyclique voulu. Par exemple, la valeur à appliquer pour un rapport cyclique de 75% sera égal à 75 x 255/100 = 191. Et on écrira analogWrite(pin,191).

Et enfin seule les broches dont le numéro est précédé par une tilde (~) sont des broches de sorties digitales. Arduino en possède six, les broches 3, 5, 6, 9,10 et 11.

Exercice 1

Reproduire le montage ci-dessous puis écrire le code correspondant.

Ajouter une LED qui fonctionnera en alternance avec la première LED. Autrement dit lorsque la première est en luminisité maximale, la deuxième est en luminosité minimale.

Exercice 2

Dans cet exercice nous allons utiliser une LED RGB (red, green, blue).

Cette LED a quatre pattes, une pour le rouge, la plus longue est la catode (-) puis nous avons le vert et le bleu.
Reproduisez le montage ci-dessous où les résistance font 220 Ω puis recopiez le code.

Modifiez les valeurs des variables redValue, greenValue et blueValue en utilisant des entiers de 0 à 255.

Exercice 3

On fait varier l'intensité lumineuse de la lampe en fonction de la lumière ambiante saisie par une photorésistance.
Reproduire le montage ci-dessous et recopiez le code.

Vous proposerez un nouveau montage et un nouveau programme qui utilisera trois photorésistances et une LED RGB. Une photorésistance réglera la proportion de rouge, l'autre de bleu et enfin la dernière de vert.