Ou vous mettez au point un quelconque système automatisé qui requiert qu'une résistance soit modifiée automatiquement par un programme exécuté par un microcontrôleur?
Une solution possible consisterait à construire un robot qui se chargera de tourner le potentiomètre pour vous :-) , mais l'utilisation d'un potentiomètre numérique vous permettra probablement d'atteindre votre but beaucoup plus facilement.
Comme son nom l'indique, un potentiomètre numérique est une résistance variable. Pour faire varier cette résistance, on envoie au potentiomètre une instruction numérique au moyen du protocole SPI (contrairement aux potentiomètres conventionnels, un potentiomètre numérique ne comporte donc aucune partie mobile).
Dans cet article, je vais contrôler un potentiomètre MCP41100 (100 kΩ) fabriqué par Microchip au moyen d'un Arduino Uno. La marche à suivre est identique pour les modèles MCP41050 (50 kΩ) et MCP41010 (10 kΩ).
Branchements
Ce potentiomètre numérique prend la forme d'un circuit intégré DIP à 8 broches.
Deux pins servent à alimenter la puce: la pin 4 se branche dans une des connection "GND" de l'Arduino, et la pin 8 se branche dans la sortie 5 V de l'Arduino.
Trois pins se chargent de la réception des données numérique émises par l'Arduino. Comme pour tous les périphériques utilisant le protocole SPI, la pin 1 (chip select) se branche de préférence sur la sortie 10 de l'Arduino, la pin 2 (serial clock) sur la sortie 13 de l'Arduino, et la pin 3 (données numérique) va dans la sortie MOSI (11) de l'Arduino (les connexions sont différentes si vous utilisez un Arduino Mega).
Finalement, les trois autres pins du circuit intégré constituent les sorties du potentiomètre: la résistance entre les pins 5 et 7 demeurera constante (à la valeur maximale d'environ 100 kΩ), mais on pourra varier à volonté la résistance entre la pin 6 (l'équivalent du curseur d'un potentiomètre conventionnel) et la pin 5, et la résistance entre la pin 6 et la pin 7.
Pour cette expérience, j'ai branché un multimètre (réglé en mode "ohmmètre") aux pins 6 et 7.
Résumé des connexions:
Potentiomètre | Arduino |
1 | 10 |
2 | 13 |
3 | 11 |
4 | GND |
8 | 5 V |
Programmation
À la lecture de la fiche technique, on constate que, pour régler la résistance, il faut envoyer au potentiomètre un premier message d'un octet indiquant la commande à effectuer. Pour la commande "write data" (la seule qui me semble utile), il faut envoyer le nombre binaire xx01xx01 dans lequel la valeur des x n'a aucune importance. Si on remplace les x par des 0, on envoie donc le nombre binaire 00010001, qui correspond au nombre hexadécimal 11, ou tout simplement au nombre décimal 17.
Il faut ensuite envoyer un deuxième message d'un octet: un nombre entre 0 et 255 qui indique à quelle valeur la résistance doit être réglée (0 pour la valeur minimale, 255 pour la valeur maximale).
Voici donc un sketch qui règle d'abord la résistance à sa valeur minimale pendant 10 secondes (mon multimètre affiche alors 145 Ω), puis à sa valeur maximale (mon multimètre affiche 90.9 kΩ), puis finalement à une valeur médiane (45.8 kΩ).
Yves Pelletier (Twitter: @ElectroAmateur)