4.2 Programmation des capteurs et des actuateurs analogiques

Comme nos microcontrôleurs sont faits pour produire des sorties numériques, et non des variations de voltage, on doit programmer des modulations de largeur d’impulsion pour simuler des sorties analogiques et contrôler des actuateurs analogiques. Le principe est d’alterner un signal de sortie selon une certaine proportion. C’est l’inverse quand on veut lire une entrée analogique. Le signal reçu peut alors avoir une infinité de variations qui seront converties en données discrètes, traitables par l’informatique.


4.2.1 Modulation de largeur d’impulsion

La figure suivante montre plusieurs options de modulation de largeur d’impulsion avec des proportions différentes. Plus la proportion est grande, plus on simule une sortie analogique élevée.

Modulateur de largeur d'impulsion à des proportions successives de 0%, 25%, 50%, 75% et 100%.

Figure 68 — Modulation de largeur d’impulsion The arduino.cc team, Pwm 5steps, CC BY-SA 3.0

4.2.1.1 Programmation de sorties analogiques avec Arduino

Avec Arduino, il existe déjà la commande analogWrite(broche, valeur) qui permet d’envoyer une MLI sur une broche de sortie. La valeur doit être entre 0 et 255. Cette commande ne permet pas de choisir la fréquence des cycles, mais elle est utile pour la plupart des actuateurs analogiques. Par exemple, elle permet de choisir l’intensité ou de varier la luminosité d’une DEL. Cependant, elle ne permet pas de créer différentes notes de musique sur les actuateurs sonores.

Figure 69 — Exemple de sortie analogique avec Arduino

Figure 69 — Exemple de sortie analogique avec Arduino

Vidéo 38 : Connexion et programmation des actuateurs analogiques sur le simulateur d’Arduino

Vidéo 39 : Programmation de sortie analogique avec Arduino IDE

Sur Arduino, il existe aussi la commande tone(broche, fréquence) qui peut être utilisée pour générer une MLI de 50 % sur une broche de sortie, mais en choisissant la fréquence du signal, ce qui permet de faire jouer des notes de musique différentes sur un élément piézoélectrique. On peut créer un seul son à la fois et on peut utiliser la commande noTone(broche) pour l’arrêter.

Figure 70 — Exemple de code de sortie analogique musicale avec Arduino

Figure 70 — Exemple de code de sortie analogique musicale avec Arduino

Vidéo 40 : Programmation de sorties analogiques musicales avec le simulateur d’Arduino

4.2.1.2 Programmation de sorties analogiques avec Raspberry Pi

Sur le Raspberry Pi, on peut créer un objet PWM en Python pour lequel nous allons choisir la fréquence et la proportion. Cela se fait avec les commandes MLI = GPIO.PWM(broche, fréquence) et MLI.start(proportion) où la proportion est entre 0 % et 100 %. Par la suite, celle-ci peut être modifiée avec la commande MLI.ChangeDutyCycle(proportion). Par contre si on veut changer la fréquence, il faudra arrêter le signal et en créer un nouveau.

Figure 71 — Exemple de sortie analogique avec Raspberry Pi

Figure 71 — Exemple de sortie analogique avec Raspberry Pi

Vidéo 41 : Programmation de sortie analogique avec le simulateur GPIO

Vidéo 42 : Programmation de sortie analogique avec Raspberry Pi


4.2.2 Lecture d’entrées analogiques sur Arduino

Comme l’Arduino possède des broches dédiées à lire des entrées analogiques, on peut facilement y connecter des capteurs analogiques, comme un potentiomètre, une photorésistance ou autre, et utiliser la commande analogRead(broche) pour obtenir une valeur qui sera de 0 à 1023.

Figure 72 — Lecture d’entrée analogique avec Arduino 

Figure 72 — Lecture d’entrée analogique avec Arduino 

Vidéo 43 : Connexion et programmation de capteurs analogiques avec le simulateur d’Arduino

Vidéo 44 : Lecture d’entrées analogiques avec Arduino IDE