Club robotique de Sophia-Antipolis

Accueil > POBOTpedia > Capteurs > Autres capteurs > Capteur "flex sensor" résistif

Capteur "flex sensor" résistif

jeudi 13 janvier 2011, par Julien H.

Un capteur de flexion : voilà une utilisation originale des propriétés mécaniques des matériaux conducteurs. Cette fois pour un usage purement robotique puisqu’il s’agit de contrôler des moteurs en fonction de la courbure du capteur.

JPEG - 399.4 ko

 Le matériel

On utilise un capteur "Flex Sensor" de la société Spectra Symbol : deux fines couches de métal sont séparées par un polymère conducteur qui se déforme quand on le plie, modifiant la résistance aux bornes des deux couches métalliques.

Le capteur est souple, de taille réduite : extrêmement mince, la longueur du modèle le plus courant (12 centimètres) le rend idéal pour équiper un gant. Oui, c’est un gadget tout droit sorti des films de science fiction tels Retour vers le futur. Un univers qui inspire beaucoup la communauté geek.

Comme il s’agit d’un capteur à résistance variable, il nous faut simplement une résistance pour réaliser un pont diviseur de tension et obtenir ainsi une tension variable que l’on va pouvoir traiter sur une entrée analogique d’un micro-contrôleur.

Pour cet exemple on utilisera donc :

- un capteur Flex Sensor (entre 10 et 20 euros selon le pays)
- une Arduino ou toute carte avec une entrée analogique
- une résistance de 10 kOhms
- quelques fils et une plaquette d’essai.
- un moteur courant continu 5 volts, une led, etc...

Précaution : le connecteur serti dans la bande plastique qui rigidifie le capteur est très fragile lors de la soudure, attention de ne pas sectionner la piste métallique par une température trop élevée.

On peut aussi le fixer sans soudure directement dans une plaquette d’essai Labdec :

JPEG - 364.8 ko

 La manip’

Très simple : on réalise le pont diviseur en plaçant une borne du capteur à la masse, l’autre borne sur l’entrée analogique du micro-contrôleur, puis en plaçant une résistance de 10 kOhms entre cette entrée analogique = borne du capteur et la tension de référence (5 volts).

JPEG - 66.8 ko

On connecte également un petit moteur (je l’ai fait sans contrôleur de puissance type pont en H, en étant assez rapide dans mes tests pour ne pas faire chauffer la carte) à courant continu entre la masse et une sortie PWM de l’Arduino ou du micro-contrôleur que vous utilisez.

JPEG - 435.6 ko

Il ne reste plus qu’à lire la valeur sur l’entrée analogique et à générer un signal PWM de rapport cyclique proportionnel à la flexion du capteur.

 Le code

Attention, adaptez ce code à votre montage et à votre carte Arduino : assurez-vous d’avoir un PWM sur la patte de connexion du moteur. Utilisez par exemple la patte 9 si votre version d’Arduino n’a pas de PWM (parfois indiqué par un en face du numéro sur les inscriptions de la carte) sur la patte 3.

Il se trouve dans les tests Arduino de notre répertoire de code, mais j’en recopie une bonne partie ci-dessous :


/**
* Exemple d’utilisation d’un capteur flexible
* de type "Spectra Symbol"
*
* (c) Julien Holtzer - Association Pobot - Janvier 2011
*
*/

// la valeur minimale qu’il faudra retrancher pour avoir une gamme raisonnable
int zero = 0 ;

void setup()

// Entrée analogique pour le capteur
pinMode(14,INPUT) ; // 14 = analog 0
// Sortie numérique pour le moteur
pinMode(3,OUTPUT) ;

// Moyenne sur 10 échantillons
for (int i = 0 ; i < 10 ; i++)
// division par le nombre d’échantillons
zero += analogRead(0)/10 ;
delay(500) ;

void loop()

// Génération d’un PWM sur la patte 9
// connecté à la borne + d’un petit moteur
// la borne - est à la masse
analogWrite(3,analogRead(0)-zero) ;


Et voilà, après copie dans l’Arduino, le moteur ne bouge pas quand le capteur est au repos, grâce à la soustraction du zéro relatif calculé en 10 itérations lorsqu’on démarre le programme.

Quand on plie le capteur (attention, ça ne fonctionne bien que dans un seul sens de pliure), le moteur accélère ! "It’s aliiive" !

JPEG - 327 ko

Vos commentaires

  • Le 22 février 2012 à 17:01, par Ldoppea En réponse à : Capteur "flex sensor" résistif

    Bonjour,
    J’aimerais acheter ce genre de capteur de flexion pour un projet pour mes études. Mais les prix que je trouve sur le net sont bien supérieurs à ceux que vous annoncez (généralement plus de 17€). Savez-vous où je pourrais en trouver pour moins cher ?

    Très bon tutoriel, simple et efficace :)

    Répondre à ce message

  • Le 16 juin 2013 à 16:55, par Dede En réponse à : Capteur "flex sensor" résistif

    Bonjour,

    Il me semble qu’il y a une petite erreur sur le schéma dans votre tuto. Le retour du moteur se fait sur la pin 9 et non 3 (ou alors il faut changer la borne dans le code et remettre 3).

    Merci pour le tuto ;)

    • Le 19 juin 2013 à 13:14, par Julien H. En réponse à : Capteur "flex sensor" résistif

      Tout à fait, c’est corrigé dans le code. Il faut adapter la patte à la version de la carte arduino utilisée.

    Répondre à ce message

  • Le 6 novembre 2011 à 15:21, par alban En réponse à : Capteur "flex sensor" résistif

    Super tuto ...Merci.. j’avais besoin de comprendre le branchement du capteur ainsi que la resistance necessaire

    Répondre à ce message

Un message, un commentaire ?

modération a priori

Attention, votre message n’apparaîtra qu’après avoir été relu et approuvé.

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici
  • Ce formulaire accepte les raccourcis SPIP [->url] {{gras}} {italique} <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document