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