Skip to Content

Tutoriel sur la résistance à détection de force (FSR) avec Arduino

Tutoriel sur la résistance à détection de force (FSR) avec Arduino

Les FSR sont des capteurs de pression très robustes utilisés dans de nombreuses industries. Vous les trouverez dans des batteries électroniques, des téléphones mobiles, des consoles de jeux portables et bien d’autres appareils électroniques portables. Ces capteurs sont faciles à utiliser et parfaits pour détecter la pression.

Dans ce tutoriel, vous apprendrez comment fonctionne un FSR et comment l’utiliser avec Arduino. J’ai inclus 3 exemples avec un schéma de câblage et du code pour que vous puissiez commencer à expérimenter avec votre capteur.

Je vais d’abord vous montrer le fonctionnement de base du capteur. Ensuite, nous verrons comment utiliser ce capteur comme un interrupteur à bascule. Enfin, je vous montrerai comment utiliser des LEDs pour indiquer la pression appliquée sur le capteur.

Fournitures

Composants matériels

fsr-402-round Capteur FSR 402 (rond) × 1 Amazon
fsr-406-square Capteur FSR 406 (carré) × 1 Amazon
Arduino Uno Rev 3 Arduino Uno Rev3 × 1 Amazon
Plaque d’essai (breadboard) × 1 Amazon
Fils de connexion (jumper wires) ~ 10 Amazon
resistor Boîte d’assortiment de résistances (voir wiring pour les valeurs) × 1 Amazon
red-led LEDs ~ 10 Amazon
Câble USB type A/B × 1 Amazon

Outils

multimeter Multimètre Amazon

Logiciel

Arduino IDEArduino IDE

Makerguides is a participant in affiliate advertising programs designed to provide a means for sites to earn advertising fees by linking to Amazon, AliExpress, Elecrow, and other sites. As an Affiliate we may earn from qualifying purchases.

Comment fonctionne un FSR ?

La résistance d’un FSR dépend de la pression appliquée sur la zone sensible. Plus vous appliquez de pression, plus la résistance diminue. La plage de résistance est en fait assez large : > 10 MΩ (sans pression) à environ 200 Ω (pression maximale). La plupart des FSR peuvent détecter une force allant de 100 g à 10 kg.

Construction de base

Un FSR est composé de deux membranes et d’un adhésif séparateur. Les membranes conductrices sont séparées par un mince espace d’air lorsqu’aucune pression n’est appliquée. L’une des membranes contient deux pistes allant de la queue à la zone sensible (la partie ronde). Ces pistes sont tissées ensemble, mais ne se touchent pas. L’autre membrane est recouverte d’une encre conductrice. Lorsque vous appuyez sur le capteur, l’encre met en court-circuit les deux pistes avec une résistance qui dépend de la pression.

FSR Construction
Construction du FSR

Comment lire un FSR ?

Le graphique ci-dessous montre la courbe résistance vs force pour le capteur FSR 402. Notez que les données sont tracées sur des échelles logarithmiques. La réponse n’est pas linéaire ! Comme vous pouvez le voir, il y a une chute énorme de la résistance dès qu’une petite pression est appliquée. Ensuite, la résistance est inversement proportionnelle à la force appliquée. Vers 10 kg (non montré sur le graphique), le capteur est saturé et une augmentation de la force entraîne peu ou pas de diminution de la résistance.

FSR 402 Resistance vs Force curve
Courbe Résistance vs Force pour FSR 402

Circuit diviseur de tension

Pour mesurer la force appliquée avec un Arduino, vous devez construire un circuit diviseur de tension avec le FSR et une résistance de tirage vers la masse. Ce circuit crée une sortie de tension variable qui peut être lue par l’entrée ADC (convertisseur analogique-numérique) du microcontrôleur.

Voltage divider circuit Interlink FSR 402
Circuit diviseur de tension et courbes Vout vs Force pour différentes valeurs de R. Les données représentent la sortie pour le FSR Interlink 402 avec V+ égal à 5 V. Référence : guide d’intégration Interlink.

Choisir la bonne valeur de résistance pour correspondre à votre capteur peut être un peu délicat et dépend de la plage de force que vous souhaitez mesurer.

Le graphique ci-dessus montre les courbes Vout vs Force pour différentes valeurs de R (la résistance de tirage). Un résistance de 10 kΩ fonctionne bien si vous voulez utiliser le capteur sur toute sa plage de force (100 g à 10 kg).

Exemple de calcul

La tension de sortie (Vout) que nous mesurons avec l’Arduino est décrite par l’équation suivante :

Vout = Vcc x R / (R + Rfsr)

Ainsi, la tension est inversement proportionnelle à la résistance du FSR. Notez que la tension de sortie mesurée est la chute de tension à travers la résistance de tirage, pas à travers le FSR.

Quand aucune force n’est appliquée, la résistance du FSR sera très élevée, prenons 10 MΩ comme exemple. J’ai utilisé une résistance de tirage de 10 kΩ et un Vcc de 5 V pour ce tutoriel, ce qui donne la sortie suivante sans force appliquée :

Vout = 5 V x 10 kΩ / (10 kΩ + 10 MΩ) = 0,005 V

Donc presque 0 V. Si vous appuyez très fort sur le FSR, la résistance descendra à environ 200 Ω. Cela donne la tension de sortie suivante :

Vout = 5 V x 10 kΩ / (10 kΩ + 200 Ω) = 4,9 V

Comme vous pouvez le voir, vous devriez pouvoir mesurer une tension de sortie entre 0 et 4,9 V selon la force appliquée sur le capteur.

Spécifications du FSR

La technologie utilisée dans les FSR est brevetée par Interlink Electronics, en activité depuis 1985. Les types de FSR les plus courants que vous trouverez sont les Interlink FSR 402  et FSR 406.

Voici les spécifications du capteur rond 402 que j’ai utilisé dans ce tutoriel.

Spécifications du FSR 402

Force d’activation ~0,1 N minimum
Plage de sensibilité à la force ~0,1 N – 100 N
Plage de résistance >10 MΩ (circuit ouvert) – ~200 Ω
Résolution de la force Continue (analogique)
Répétabilité de la force ± 6 %
Zone active Ø 12,7 mm
Épaisseur nominale 0,55 mm
Course de l’interrupteur 0,15 mm
Durée de vie > 10 millions d’actions
Alimentation N’importe laquelle ! Consomme moins de 1 mA, selon la résistance utilisée dans le diviseur de tension.
Coût Check price

Pour plus d’informations, vous pouvez consulter la fiche technique ici. Elle inclut aussi les données des autres capteurs de la série 400.

Connexion à un FSR

Vous pouvez facilement connecter un FSR en utilisant une breadboard.

La façon la plus simple de connecter un FSR est d’utiliser une breadboard. Cela fonctionne très bien pour le prototypage et les tests. Si vous avez besoin d’une solution plus permanente, je recommande vivement le Amphenol FCI Connecteur Clincher. Vous pouvez simplement clipser ces connecteurs autour des pistes argentées du capteur et y attacher facilement des câbles jumper ou Dupont.

Amphenol clincher connector
Connecteur Clincher Amphenol FCI

Avertissement

Il n’est PAS recommandé de souder directement sur les pistes argentées exposées du capteur. Le substrat fondra pendant la soudure et la soudure ne tiendra pas. Ne pliez pas ou ne froissez pas la queue du FSR si vous la courbez ; cela peut provoquer des ruptures dans les pistes argentées imprimées. Interlink recommande un rayon de courbure minimum de 2,5 mm.

Tester un FSR

La façon la plus simple de vérifier si votre FSR fonctionne correctement est de le connecter à un multimètre. J’ai utilisé des pinces crocodiles pour connecter le multimètre aux broches exposées du capteur. Mettez votre capteur en mode mesure de résistance (Ω) et vous devriez voir la valeur de résistance changer lorsque vous appuyez sur le capteur.

Testing an FSR Force Sensitive Resistor
Mesure du changement de résistance lors de l’application d’une charge.

Comme la plage de résistance est très large (200 kΩ à 200 Ω), il est préférable d’utiliser un multimètre avec fonction autorange. Si vous n’en avez pas, essayez différentes plages. 200 kΩ devrait vous permettre de voir la majeure partie de la plage.

Câblage – Connexion d’un capteur de force (FSR) à Arduino UNO

Maintenant que vous savez que le capteur fonctionne correctement, il est temps de le connecter à l’Arduino. Nous utiliserons une breadboard et des fils de connexion, car c’est la façon la plus simple de prototyper un circuit.

Comme mentionné dans l’introduction, vous devez créer un circuit avec une résistance de tirage de 10 kΩ.

Le schéma de câblage ci-dessous montre comment connecter le capteur FSR à l’Arduino. Notez qu’un FSR n’est pas polarisé, comme les résistances classiques. Il n’y a pas de côté positif ou négatif, connectez-le simplement dans l’orientation que vous souhaitez.

FSR with Arduino wiring diagram
Schéma de câblage FSR avec Arduino UNO

Connectez une des broches du FSR à l’alimentation (5 V, mais 3,3 V fonctionne aussi très bien) et l’autre broche à l’entrée analogique de l’Arduino (A0). La résistance de tirage de 10 kΩ est connectée entre GND et A0.

Example 1 Connecting an FSR to Arduino UNO
Capteur de force sur breadboard

1. Exemple de code Arduino avec FSR – Lecture de tension analogique

Maintenant que vous avez câblé le capteur, vous pouvez téléverser le code exemple suivant avec l’IDE Arduino.

Ce sketch lira les données du capteur depuis l’entrée analogique de l’Arduino et affichera la sortie dans le moniteur série.

Comme mentionné précédemment, la tension de sortie du capteur sera comprise entre 0 V (pas de pression) et environ 5 V (pression maximale). Les cartes Arduino contiennent un convertisseur analogique-numérique 10 bits multicanal. Cela signifie qu’il convertira la tension d’entrée entre 0 et 5 V en valeurs entières entre 0 et 1023. Vous devriez donc voir une valeur entre 0 et 1023 dans le moniteur série, selon la force avec laquelle vous pressez le capteur.

/* Simple example code for Force Sensitive Resistor (FSR) 
  with Arduino. More info: https://www.makerguides.com */

// Define FSR pin:
#define fsrpin A0

//Define variable to store sensor readings:
int fsrreading; //Variable to store FSR value

void setup() {
  // Begin serial communication at a baud rate of 9600:
  Serial.begin(9600);
}

void loop() {
  // Read the FSR pin and store the output as fsrreading:
  fsrreading = analogRead(fsrpin);

  // Print the fsrreading in the serial monitor:
  // Print the string "Analog reading = ".
  Serial.print("Analog reading = ");
  // Print the fsrreading:
  Serial.print(fsrreading);

  // We can set some threshholds to display how much pressure is roughly applied:
  if (fsrreading < 10) {
    Serial.println(" - No pressure");
  } else if (fsrreading < 200) {
    Serial.println(" - Light touch");
  } else if (fsrreading < 500) {
    Serial.println(" - Light squeeze");
  } else if (fsrreading < 800) {
    Serial.println(" - Medium squeeze");
  } else {
    Serial.println(" - Big squeeze");
  }

  delay(500); //Delay 500 ms.
}

Vous devriez voir la sortie suivante dans le moniteur série :

FSR serial monitor
Sortie du moniteur série

Assurez-vous que le moniteur série est aussi réglé sur un débit en bauds de 9600.

2. Utiliser un capteur de force (FSR) comme interrupteur à bascule

Dans cet exemple, vous utiliserez le capteur FSR comme un interrupteur à bascule. Vous pouvez utiliser ce programme pour contrôler toutes sortes d’autres fonctions, ici pour allumer et éteindre une LED.

Vous devrez ajouter une LED avec une résistance au circuit, comme montré dans le schéma ci-dessous.

Force sensitive resistor (FSR) with Arduino and LED wiring diagram
Schéma de câblage FSR avec Arduino et LED

La broche négative de la LED (la plus courte) est connectée à GND via une résistance et la broche positive au pin digital 2. La valeur de la résistance dépend de la couleur de la LED utilisée. Vous pouvez utiliser les valeurs suivantes comme guide :

  • Bleu, Vert, Blanc ou UV : 68 Ω
  • Rouge, Jaune ou Jaune-Vert : 150 Ω

Si vous n’avez pas ces valeurs de résistance, essayez d’en trouver une proche. Vous pouvez aussi mettre plusieurs résistances en série pour obtenir la valeur correcte.

Le sketch ci-dessous bascule la LED on/off lorsque vous appuyez sur le FSR. Il regarde la valeur de l’entrée analogique et change l’état de la LED lorsque la valeur dépasse 500. Cela signifie qu’une pression très légère ne sera pas détectée.

Cet exemple inclut aussi un anti-rebond et est basé sur le Arduino Switch tutoriel.

/* Example code to use Force Sensitive Resistor (FSR) 
   as toggle switch to control LED. 
   More info: https://www.makerguides.com */

// Define pins:
#define fsrpin A0
#define ledpin 2

// Define variables:
int fsrreading; // The current reading from the FSR
int state = HIGH; // The current state of the output pin
int previous = 0; // The previous reading from the FSR
// The follow variables are long's because the time, 
// measured in miliseconds, will quickly become a 
// bigger number than can be stored in an int
long time = 0;  // The last time the output pin was toggled
long debounce = 40; // The debounce time, increase if the output flickers

void setup() {
  // Begin serial communication at a baud rate of 9600:
  Serial.begin(9600);
  // Set ledpin as output:
  pinMode(ledpin, OUTPUT);
}

void loop() {
  // Read the FSR pin and store the output as fsrreading:
  fsrreading = analogRead(fsrpin);

  // Print the fsrreading in the serial monitor:
  Serial.println(fsrreading);

  // If the input just went from below 500 to above 500 
  // and we've waited long enough to ignore any noise on the circuit, 
  // toggle the output pin and remember the time:
  if (fsrreading > 500 && previous < 500 && millis() - time > debounce) {
    if (state == HIGH)
      state = LOW;
    else
      state = HIGH;
    time = millis();
  }

  digitalWrite(ledpin, state);

  previous = fsrreading;
}

3. Contrôler plusieurs LEDs avec un FSR comme capteur de pression

L’exemple ci-dessous permet de visualiser facilement la pression appliquée sur le FSR. Plus vous appuyez fort, plus de LEDs s’allument.

Vous pouvez câbler les LEDs de la même manière qu’avant, voir le schéma ci-dessous. Les LEDs sont connectées aux pins digitaux 2 à 7. Le FSR est aussi connecté comme précédemment.

FSR-with-many-LEDS-and-Arduino-wiring-diagram-schematic-pinout
Schéma de câblage FSR avec plusieurs LEDs et Arduino

Comme la tension de sortie du FSR est non linéaire, j’ai défini une plage personnalisée pour l’allumage de chaque LED. Vous devrez peut-être ajuster cela légèrement pour votre propre capteur.

/* Arduino example code to control multiple LEDs with a 
   Force Sensitive Resistor (FSR) as pressure sensor. 
   More info: https://www.makerguides.com */

// Define pins:
#define fsrpin A0
#define led1 2
#define led2 3
#define led3 4
#define led4 5
#define led5 6
#define led6 7

// Define variables:
int fsrreading;

void setup() {
  // Begin serial communication at a baud rate of 9600:
  Serial.begin(9600);
  // Set LED pins as output:
  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
  pinMode(led3, OUTPUT);
  pinMode(led4, OUTPUT);
  pinMode(led5, OUTPUT);
  pinMode(led6, OUTPUT);
}

void loop() {
  // Read the FSR pin and store the output as fsrreading:
  fsrreading = analogRead(fsrpin);

  // Print the fsrreading in the serial monitor:
  Serial.println(fsrreading);

  // Control the LEDs:
  if (fsrreading > 200) {
    digitalWrite(led1, HIGH);
  }
  else digitalWrite(led1, LOW);
  if (fsrreading > 450) {
    digitalWrite(led2, HIGH);
  }
  else digitalWrite(led2, LOW);
  if (fsrreading > 550) {
    digitalWrite(led3, HIGH);
  }
  else digitalWrite(led3, LOW);
  if (fsrreading > 650) {
    digitalWrite(led4, HIGH);
  }
  else digitalWrite(led4, LOW);
  if (fsrreading > 800) {
    digitalWrite(led5, HIGH);
  }
  else digitalWrite(led5, LOW);
  if (fsrreading > 900) {
    digitalWrite(led6, HIGH);
  }
  else digitalWrite(led6, LOW);
}

Fichiers CAO

Vous trouverez ci-dessous tous les fichiers CAO pour les capteurs de la série Interlink 400.

Conclusion

Dans cet article, je vous ai montré comment fonctionne un FSR et comment l’utiliser avec Arduino.

Si vous avez des questions, des suggestions, ou si vous pensez que des éléments manquent dans ce tutoriel, veuillez laisser un commentaire ci-dessous.