Différences entre versions de « Senseur FSR »

De MCHobby - Wiki
Sauter à la navigation Sauter à la recherche
Ligne 170 : Ligne 170 :
 
     Connect one end of FSR to power, the other end to Analog 0.
 
     Connect one end of FSR to power, the other end to Analog 0.
 
     Then connect one end of a 10K resistor from Analog 0 to ground
 
     Then connect one end of a 10K resistor from Analog 0 to ground
     For more information see www.ladyada.net/learn/sensors/fsr.html */
+
 
 +
     Pour plus d'information, voir le wiki de MC Hobby (en Français)
 +
        http://mchobby.be/wiki/index.php?title=Senseur_FSR
 +
    Ou le site de Lady Ada (AdaFruit, en anglais)
 +
        http://www.ladyada.net/learn/sensors/fsr.html  
 +
  */
  
 
   int fsrPin = 0; // the FSR and 10K pulldown are connected to a0
 
   int fsrPin = 0; // the FSR and 10K pulldown are connected to a0

Version du 16 juillet 2012 à 11:21

Introduction

Les FSRs sont des senseurs qui permettent de détecter la pression physique, la torsion et le poids. Ils sont simple à utiliser et financièrement abordables. La photographie ci-dessous présente un FSR, le modèle Interlink 402 pour être préçis. La partie circulaire d'un 12mm de diamètre est la partie sensitive (le senseur).

FSR-INTRO1.jpg

FSR-INTRO2.jpg

Tester un FSR

La meilleure approche pour vérifier comment le FSR fonctionne est encore de le connecter les deux broches du senseur à un multimètre positionné sur "Mesure de résistance". Cela permet de vérifier comment la résistance varie. Etant donné que la résistance peut varier vraiment fort(c'est le cas de ce senseur), un multimètre à détection automatique est particulièrement approprié. Si vous ne disposez pas d'un tel multimètre, modifiez manuellement la sensisibilé de votre multimètre entre 1 MOhm et 100 ohm jusqu'a ce que ce dernier réagisse.

FSR-TESTER.jpg

Brancher un FSR

Puisque les FSRs sont des "résistances", ils ne sont pas polarisés. Cela signifie que vous pouvez les connecter indifféremment dans un sens ou dans l'autre, ils fonctionneront parfaitement!

Dans un breadboard

Les FSRs sont souvent constitués de polymère équipé d'une sérigraphie à base de matériaux conducteurs. Cela signifie qu'ils sont en plastique et que le connecteurs est serti sur cette matériaux délicat.

La meilleure façon de connecter ces senseurs est encore de les enfoncer sur breadboard.

FSR-BRANCHER1.jpg

Un connecteur femelle

Il est également possible d'utiliser un connecteur femelle (heade) ou des pinces crocodiles.

FSR-BRANCHER2.jpg

Un bornier

Ou encore un simple bornier (qui lui sera soudable).

FSR-BRANCHER3.jpg

Utiliser un FSR

Méthode par lecture Analogique de la tension

Le procédé le plus simple pour mesurer un senseur résistif est de connecter une de ses bornes à l'alimentation et l'autre sur une résistance pull-down (elle même branchée sur la masse/GND).

Ensuite, le point situé entre la résustance pull-down et la résistance FSR est raccordée sur un entrée analogique du microcontrôleur (voir exemple ci-dessous mettant en oeuvre un Arduino).

FSR-ReadAnalog1.jpg

FSR-ReadAnalog2.jpg

Sur cet exemple utilise une tension d'alimentation de 5 Volts mais vous pourriez utiliser une tension de 3.3 volts tout aussi facilement.

Dans cette configuration, la tension analogique lue varie entre 0V (la masse/GND) jusqu'a environ 5V (la même tension que la tension d'alimentation).

Voici comment cela fonctionne:

Lorsque l'on presse le FSR, la résistance du senseur FSR diminue. La résistance totale FSR + résistance pull-down diminue également (ordre de grandeur de 100Kohm à 10Kohm). Cela signifie que le courant circulant dans le circuit FSR + Résistance PullDown augmente. En conséquence, la chute de tension aux bornes de la résistance fixe Pull-Down (10KOhm) augmente. Voila l'astuce!

Force (Kg) Force (N) Résistance FSR (FSR + R) Ohms Courant dans FSR+R Tension aux bornes de R
None None Infini Infini! 0 mA 0V
0.02 Kg 0.2 N 30 Kohm 40 Kohm 0.13 mA 1.3 V
0.11 Kg 1 N 6 Kohm 16 Kohm 0.31 mA 3.1 V
1.1 Kg 10 N 1 Kohm 11 Kohm 0.45 mA 4.5 V
11 Kg 100 N 250 ohm 10.25 Kohm 0.49 mA 4.9 V

Cette table indique approximativement la tension analogique basé sur le montage FSR + Résistance Pull-Down de 10 Kohms et une source de tension de 5 Volts.

Notez que la méthode présente une évolution linéaire de la résistivité mais que cela ne produit pas de tension linéaire! C'est parce que l'équation de la tension est:

Vo = Vcc ( R / (R + FSR) )

En fait, la tension est proportionnelle à l'inverse de la résistance FSR.

Exemple simple

Raccordez le senseur FSR comme présenté dans l'exemple précédent. Ajoutons également une LED (et sa résistance) sur la Pin 11.

FSR-SAMLE1.jpg

FSR-SAMLE2.jpg

Ce sketch va lire la tension sur l'entrée analogique et utilise cette valeur pour déterminer la luminosité de la LED.

Plus vous pressez le senseur FSR et plus la LED sera lumineuse! Souvenez-vous que la LED doit être branchée sur une sortie PWM pour contrôler sa lunimosité, nous utilisons la pin 11 dans cet exemple.

Cet exemple par du principe que vous disposé déjà des notions de base de programmation avec Arduino.

  /* sketch de test pour senseur FSR .
    Connectez une borne du FSR à +5V, l'autre sur la pin Analog 0.
    Connectez ensuite une résistance de 10 Ko entre la pin Analog 0 et la masse/GND.
    Connectez une LED de la pin 11 à la massge/GND VIA une résistance.

    Pour plus d'information, voir le wiki de MC Hobby (en Français)
        http://mchobby.be/wiki/index.php?title=Senseur_FSR
    Ou le site de Lady Ada (AdaFruit, en anglais)
        http://www.ladyada.net/learn/sensors/fsr.html 
  */

  int fsrAnalogPin = 0; // FSR branché sur pin Analog 0
  int LEDpin = 11; // connecter LED rouge sur pin 11 (pin PWM)
  int fsrReading;  // Lecture analogique de la tension du pont 
                   //    diviseur FSR + Resistance Pull-Down
  int LEDbrightness;

  void setup(void) {
    Serial.begin(9600); // Envoi de message de déboggage sur connexion série
                        // Visible dans le Moniteur Série d'Arduino IDE
    pinMode(LEDpin, OUTPUT);
  }

  void loop(void) {
    fsrReading = analogRead(fsrAnalogPin);
    Serial.print("Analog reading = ");
    Serial.println(fsrReading);
    // Nous devons convertir la valeur analogique lue (0-1023) 
    // en une valeur utilisable par analogWrite (0-255).
    // C'est ce que fait l'instruction map!
    LEDbrightness = map(fsrReading, 0, 1023, 0, 255);
    // LED gets brighter the harder you press
    analogWrite(LEDpin, LEDbrightness);
    delay(100);
  }

Mesures FSR analogique (code simple)

Here is a code example for measuring the FSR on an analog pin.

FSR-SAMLE2-1.jpg

FSR-SAMLE2-2.jpg

FSR-SAMLE2-3.jpg

This code doesn't do any calculations, it just prints out what it interprets as the amount of pressure in a qualitative manner. For most projects, this is pretty much all thats needed!

  /* FSR simple testing sketch.
    Connect one end of FSR to power, the other end to Analog 0.
    Then connect one end of a 10K resistor from Analog 0 to ground

    Pour plus d'information, voir le wiki de MC Hobby (en Français)
        http://mchobby.be/wiki/index.php?title=Senseur_FSR
    Ou le site de Lady Ada (AdaFruit, en anglais)
        http://www.ladyada.net/learn/sensors/fsr.html 
  */

  int fsrPin = 0; // the FSR and 10K pulldown are connected to a0
  int fsrReading; // the analog reading from the FSR resistor divider
  
  void setup(void) {
    // We'll send debugging information via the Serial monitor
    Serial.begin(9600);
  }
  
  void loop(void) {
    fsrReading = analogRead(fsrPin);
    Serial.print("Analog reading = ");
    Serial.print(fsrReading); // the raw analog reading
    // We'll have a few threshholds, qualitatively determined
    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(1000);
  } 

Mesures FSR analogique (code avancé)

This Arduino sketch that assumes you have the FSR wired up as above, with a 10K? pull down resistor and the sensor is read on Analog 0 pin. It is pretty advanced and will measure the approximate Newton force measured by the FSR. This can be pretty useful for calibrating what forces you think the FSR will experience.

FSR-SAMLE3-1.jpg

FSR-SAMLE3-2.jpg

FSR-SAMLE3-3.jpg

/* FSR testing sketch.
  Connect one end of FSR to power, the other end to Analog 0.
  Then connect one end of a 10K resistor from Analog 0 to ground
  For more information see www.ladyada.net/learn/sensors/fsr.html */

int fsrPin = 0; // the FSR and 10K pulldown are connected to a0
int fsrReading; // the analog reading from the FSR resistor divider
int fsrVoltage; // the analog reading converted to voltage
unsigned long fsrResistance; // The voltage converted to resistance, can be very big so make "long"
unsigned long fsrConductance;
long fsrForce; // Finally, the resistance converted to force

void setup(void) {
    Serial.begin(9600); // We'll send debugging information via the Serial monitor
}

void loop(void) {
    fsrReading = analogRead(fsrPin);
    Serial.print("Analog reading = ");
    Serial.println(fsrReading);
    // analog voltage reading ranges from about 0 to 1023 which maps to 0V to 5V (= 5000mV)
    fsrVoltage = map(fsrReading, 0, 1023, 0, 5000);
    Serial.print("Voltage reading in mV = ");
    Serial.println(fsrVoltage);
    if (fsrVoltage == 0) {
    Serial.println("No pressure");
    } else {
    // The voltage = Vcc * R / (R + FSR) where R = 10K and Vcc = 5V
    // so FSR = ((Vcc - V) * R) / V yay math!
    fsrResistance = 5000 - fsrVoltage; // fsrVoltage is in millivolts so 5V = 5000mV
    fsrResistance *= 10000; // 10K resistor
    fsrResistance /= fsrVoltage;
    Serial.print("FSR resistance in ohms = ");
    Serial.println(fsrResistance);
    fsrConductance = 1000000; // we measure in micromhos so
    fsrConductance /= fsrResistance;
    Serial.print("Conductance in microMhos: ");
    Serial.println(fsrConductance);
    // Use the two FSR guide graphs to approximate the force
    if (fsrConductance <= 1000) {
    fsrForce = fsrConductance / 80;
    Serial.print("Force in Newtons: ");
    Serial.println(fsrForce);
    } else {
    fsrForce = fsrConductance - 1000;
    fsrForce /= 30;
    Serial.print("Force in Newtons: ");
    Serial.println(fsrForce);
    }
    }
    Serial.println("--------------------");
    delay(1000);
}

BONUS! Lecture d'un sans entrée Analogique

Blabla

Source

Où Acheter

  • Le Senseur FSR est disponible chez MCHobby
  • Le senseur Flex est également disponible chez MCHobby.
  • MC Hobby vous propose également des borniers et breadboard visible sur cette page.

Toute référence, mention ou extrait de cette traduction doit être explicitement accompagné du texte suivant : «  Traduction par MCHobby (www.MCHobby.be) - Vente de kit et composants » avec un lien vers la source (donc cette page) et ce quelque soit le média utilisé.

L'utilisation commercial de la traduction (texte) et/ou réalisation, même partielle, pourrait être soumis à redevance. Dans tous les cas de figures, vous devez également obtenir l'accord du(des) détenteur initial des droits. Celui de MC Hobby s'arrêtant au travail de traduction proprement dit.

Traduit avec l'autorisation d'AdaFruit Industries - Translated with the permission from Adafruit Industries - www.adafruit.com