Conversion Numérique/Analogique – PWM
En principe, un port numérique ne peut délivrer qu’une information « tout ou rien » : allumé/éteint. La tension sur la sortie numérique ne peut être que 0V ou 5V, jamais entre les deux.
Le hachage
Mais si on la fait varier très rapidement (0V-5V-0V-5V-…) la valeur moyenne est différente. Et en jouant sur la durée des états hauts (5V) et états bas (0V), on modifie la valeur de cette tension moyenne, à volonté.
Cette technique s’appelle la Modulation de Largeur d’Impulsion (MLI) – ou PWM (Pulse Width Modulation) en anglais.
Un signal PMW est caractérisé par :
- sa fréquence (environ 500Hz par défaut pour un Arduino, mais elle est modifiable)
- son amplitude (5V sur un port numérique d’Arduino)
- son rapport cyclique (0% = 0V continu → 100% = 5V continus)
Des signaux de toute forme …
On peut également générer (dans les limites des capacités de l’Arduino) générer des signaux de formes très diverses :
Voir/télécharger l’application sur Geogebra
Arduino et PWM
Seuls les ports numériques précédés d’un « ~ » sont capables de faire de la MLI,
sur un Arduino Uno par exemple, cela concerne les ports 3, 5, 6, 9, 10 et 11 :
Du coté programme, le signal PWM est généré par une simple fonction :
analogWrite(port_numérique_PWM, valeur);
valeur
doit être un entier (int
) compris entre 0 (rapport cyclique 0%) et 255 (rapport cyclique 100%).