dimanche 8 juillet 2018

Capteur de force résistif et Arduino


Un capteur de force résistif (aussi appelé "résistance à capteur de force" ou FSR pour "force sensing resistor") est un petit dispositif dont la résistance électrique varie selon la pression qui lui est appliquée (à ne pas confondre avec un capteur piézoélectrique qui, lui, génère une tension lorsqu'on le soumet à une pression).

Fabriqué à partir d'un polymère conducteur, un tel capteur est facile à utiliser puisque sa résistance varie de façon importante avec la force (contrairement à une jauge de contrainte, dont l'utilisation nécessite un pont de Wheatstone capable de détecter de très faibles variations de résistance).  De plus, ces capteurs sont très petits, minces et flexibles.  Ils ne sont toutefois pas appropriés pour des mesures de précision (on parle au mieux d'une précision de 5% à 10%) et chaque capteur doit être calibré individuellement (soumis à la même force, deux capteurs de même modèle n'auront pas nécessairement la même résistance).

Grâce à ce genre de capteur, on peut construire, par exemple, un instrument de musique sensible à la force exercée par les doigts de musicien: le son pourra être différent selon que vous appuyez fortement ou pas sur la touche.

J'ai fait quelques tests avec le modèle RP-C7.6-LT (choisi à cause de son prix très modique).  Je n'ai pas trouvé de fiche technique complète mais, selon les informations fournies par le vendeur, ce capteur est conçu pour réagir à des forces situées entre 20 grammes et 1500 grammes.

Il est habituellement déconseillé de souder les connecteurs de ce genre de capteur, car la chaleur pourrait abîmer sa partie active.  J'ai d'abord essayé d'insérer les broches du capteur directement dans une breadboard, mais le contact se faisait mal et les broches ressortaient d'elles-mêmes (broches trop courtes, peut-être).  J'ai obtenu de meilleurs résultats en insérant les broches du capteur dans un bornier à vis, lui-même placé sur une breadboard.

J'ai ensuite utilisé un multimètre afin d'observer comment varie la résistance de mon capteur lorsque je le soumet à différentes forces.


Lorsqu'aucune force n'est exercée sur le capteur, le multimètre indique une résistance infinie.  Une légère pression sur le capteur produit une résistance plutôt instable qui peut tourner autour de 20 kΩ à 25 kΩ.   La résistance est ensuite de plus en plus faible à mesure qu'on augmente la force, jusqu'à atteindre une valeur minimale d'environ 1,5 kΩ.

Pour brancher le capteur sur un microcontrôleur (une carte Arduino, par exemple), il faut que cette résistance variable provoque une tension variable.  Pour ce faire, nous allons construire le traditionnel circuit diviseur de tension, en plaçant notre capteur de force en série avec une résistance fixe, et en branchant la jonction des deux résistances à une entrée analogique de l'Arduino:

Deux versions sont possibles, selon nos besoins: dans le circuit A, la tension mesurée à l'entrée A0 augmente à mesure qu'on augmente la force sur le capteur (puisque cette augmentation de force a pour effet de diminuer la résistance du capteur), alors que dans le circuit B, la tension mesurée à l'entrée A0 diminue à mesure qu'on augmente la force sur le capteur.

Il nous reste à choisir la valeur de la résistance fixe.  En général, on souhaite que la variation de résistance de notre capteur cause une forte variation de tension à l'entrée analogique du microcontrôleur.  La plus grande variation de tension est obtenue pour une résistance fixe égale à la racine carrée du produit des résistances extrêmes pouvant être atteintes par le capteur:

Rfixe = (Rmin * Rmax)1/2

(Si vous vous y connaissez un peu en calcul différentiel, il s'agit de la valeur pour laquelle la dérivée de la variation de la tension est nulle).

Dans mon cas, en considérant que la résistance de mon capteur peut varier entre Rmin  = 1,5 kΩ et Rmax = 25 kΩ, la résistance fixe pour laquelle la variation de tension est la plus grande est d'environ 6 kΩ:

Rfixe = (Rmin * Rmax)1/2 = (1,5 * 25)1/2 = 6 kΩ

Toutefois:  même si ce n'est pas spécifié dans les informations fournies par le vendeur de mon capteur, on conseille généralement de ne pas dépasser un courant maximal d'environ 1 mA par cm2 de surface utile du capteur (il s'agit de la région circulaire qui porte un motif constitué de droites parallèles).  Sur mon capteur, ce cercle a un diamètre de 6 mm, donc une aire de 0,3 cm2...il ne faudrait pas que le courant traversant le capteur dépasse significativement 0,3 mA!

Avec une tension de 5 V, la résistance totale doit être d'au moins 16,7 kΩ pour que le courant ne dépasse pas 0,3 mA.  Puisque la résistance du capteur ne descend pas en dessous de 1,5 kΩ, j'ai donc besoin d'au moins 15 kΩ comme résistance fixe: c'est ce que j'ai utilisé.  La variation de tension ne sera pas aussi grande que si j'avais utilisé une résistance fixe de 6 kΩ , mais je m'assure que le courant ne dépassera pas la valeur maximale admissible.

Il va sans dire que vous devrez faire vos propre calculs en utilisant les valeurs extrêmes du capteur de force que vous utiliserez.

Voici donc mon circuit: un capteur de force résistif, une résistance de 15 kΩ, et une carte Arduino.



On peu ensuite utiliser le sketch "AnalogReadSerial", disponibles dans le menu Exemples, pour afficher les valeurs dans le moniteur série.





Le reste dépend de votre imagination: la force exercée sur le capteur peut servir à allumer des LEDs, faire tourner un servomoteur, modifier la fréquence d'un son...


Yves Pelletier   (TwitterFacebook)

Aucun commentaire:

Enregistrer un commentaire