[ Arduino 501] Généralités sur les capteurs

Ce premier chapitre va vous présenter un peu ce que sont les capteurs, à quoi ils servent, où-est-ce qu’on en trouve, etc. leur taille, leur forme et j’en passe. Je vais simplement vous faire découvrir le monde des capteurs qui, vous allez le voir, est merveilleux !
[adsense]

Capteur et Transducteur

Un capteur est un dispositif capable de transformer une grandeur physique (telle que la température, la pression, la lumière, etc.) en une autre grandeur physique manipulable. On peut d’ailleurs prendre des exemples : un microphone est un capteur qui permet de transformer une onde sonore en un signal électrique ; un autre capteur tel qu’une photorésistance permet de transformer un signal lumineux en résistance variable selon son intensité.

Pour nous, utiliser un thermomètre à mercure risque d’être difficile avec Arduino, car ce capteur ne délivre pas d’information électrique ou de résistance qui varie. Il s’agit seulement d’un niveau de liquide. Tandis qu’utiliser un microphone ou une photorésistance sera beaucoup plus facile. On distingue deux types de capteurs.

Capteurs Transducteurs passifs


Photorésistance

Ces capteurs ont pour objet de « transformer » ou plus exactement : donner une image de la grandeur physique qu’ils mesurent par une résistance électrique variable (en fait il s’agit d’une impédance, mais restons simples). Par exemple, le potentiomètre donne une résistance qui varie selon la position de son axe. Pour ce qui est de leur utilisation, il faudra nécessairement les utiliser avec un montage pour pouvoir les utiliser avec Arduino. Nous aurons l’occasion de voir tout cela en détail plus loin. Ainsi, il ne s’agit pas réellement de capteur, mais de transducteurs car nous sommes obligés de devoir utiliser un montage additionnel pour assurer une conversion de la grandeur mesurée en un signal électrique exploitable.

Ce sont principalement des transducteurs que nous allons mettre en œuvre dans le cours. Puisqu’ils ont l’avantage de pouvoir fonctionner seul et donc cela vous permettra de vous exercer au niveau électronique ! 😈

Capteurs actifs


Thermocouple

Cette autre catégorie de capteur est un peu spéciale et ne recense que très peu de capteurs en son sein. Il s’agit de capteur dont la grandeur physique elle-même mesurée va directement établir une relation électrique de sortie. C’est-à-dire qu’en sortie de ce type de capteur, il y aura une grandeur électrique, sans adjonction de tension à ses bornes. On peut dire que la présence de la tension (ou différence de potentiel, plus exactement) est générée par la grandeur physique. Nous n’entrerons pas dans le détail de ces capteurs et resterons dans ce qui est abordable à votre niveau.

Les autres capteurs

En fait, il n’en existe pas réellement d’autres…

Ces « autres capteurs », dont je parle, sont les capteurs ou détecteurs tout prêts que l’on peut acheter dans le commerce, entre autres les détecteurs de mouvements ou capteur de distance. Ils ne font pas partie des deux catégories précédemment citées, puisqu’ils possèdent toute une électronique d’adaptation qui va s’occuper d’adapter la grandeur physique mesurée par le capteur et agir en fonction. Par exemple allumer une ampoule lorsqu’il détecte un mouvement. Sachez cependant qu’il en existe beaucoup d’autres ! Ce sont donc bien des capteurs qui utilisent un ou des transducteurs. On pourra en fabriquer également, nous serons même obligés afin d’utiliser les transducteurs que je vais vous faire découvrir.

Retenez donc bien la différence entre transducteur et capteur : un transducteur permet de donner une image de la grandeur physique mesurée par une autre grandeur physique, mais il doit être additionné à un montage pour être utilisé ; un capteur est nécessairement constitué d’un transducteur et d’un montage qui adapte la grandeur physique donnée par le transducteur en une information facilement manipulable.

Un capteur, ça capte !

Un capteur, on l’a vu, est donc constitué d’un transducteur et d’une électronique d’adaptation. Le transducteur va d’abord mesurer la grandeur physique à mesurer, par exemple la luminosité. Il va donner une image de cette grandeur grâce à une autre grandeur, dans ce cas une résistance électrique variable. Et l’électronique d’adaptation va se charger, par exemple, de « transformer » cette grandeur en une tension électrique image de la grandeur mesurée. Attention cependant, cela ne veut pas dire que la sortie sera toujours une tension variable. Ainsi, on pourrait par exemple plutôt avoir un courant variable (et tension fixe), ou carrément un message via une liaison de communication (voir série par exemple). Un capteur plus simple par exemple pourrait simplement nous délivrer un niveau logique pour donner une information telle que « obstacle présent/absent ».

A gauche se trouve la grandeur physique mesurable. En sortie du transducteur c’est une autre grandeur physique, manipulable cette fois. Et en sortie de l’électronique d’adaptation, c’est l’information qui peut être sous forme de signal électrique ou d’une simple image de la grandeur physique mesurée par une autre grandeur physique telle qu’une tension électrique ou un courant.

Mesure, le rôle du transducteur

Gardons notre exemple avec un capteur, pardon, transducteur qui mesure la luminosité. Le transducteur qui opère avec cette grandeur est une photorésistance ou LDR (Light Depending Resistor). C’est une résistance photo-sensible, ou si vous préférez qui réagit à la lumière. La relation établie par la photorésistance entre la luminosité et sa résistance de sortie permet d’avoir une image de l’intensité lumineuse par une résistance électrique qui varie selon cette intensité. Voici son symbole électrique et une petite photo d’identité :

Une photorésistance
Symbole de la photorésistance

On a donc, en sortie du transducteur, une relation du type y en fonction de x : \(y = f(x)\). Il s’agit simplement du rapport entre la grandeur physique d’entrée du capteur et sa grandeur physique de sortie. Ici, le rapport entre la luminosité et la résistance électrique de sortie. Dans les docs techniques, vous trouverez toujours ce rapport exprimé sous forme graphique (on appelle ça une courbe caractéristique). Ici, nous avons donc la résistance en fonction de la lumière :

Caractéristique d'une photorésistance

L’intérêt d’adapter

Adapter pour quoi faire ? Eh bien je pense déjà avoir répondu à cette question, mais reprenons les explications avec l’exemple ci-dessus. La photorésistance va fournir une résistance électrique qui fluctue selon la luminosité de façon quasi-proportionnelle (en fait ce n’est pas réellement le cas, mais faisons comme si 🙄 ). Eh bien, que va-t-on faire d’une telle grandeur ? Est-ce que nous pouvons l’utiliser avec notre carte Arduino ? Directement ce n’est pas possible. Nous sommes obligé de l’adapter en une tension qui varie de façon proportionnelle à cette résistance, puisque nous ne sommes pas capable de mesurer une résistance directement. Ensuite nous pourrons simplement utiliser la fonction analogRead() pour lire la valeur mesurée. Néanmoins, il faudra certainement faire des calculs dans le programme pour donner une réelle image de la luminosité. Et ensuite, éventuellement, afficher cette grandeur ou la transmettre par la liaison série (ou l’utiliser de la manière qui vous fait plaisir 😛 ! ). De nouveau, voici la relation établissant le rapport entre les deux grandeurs physiques d’entré et de sortie d’un transducteur :

\(y = f(x)\)

A partir de cette relation, on va pouvoir gérer l’électronique d’adaptation pour faire en sorte d’établir une nouvelle relation qui soit également une image de la mesure réalisée par le capteur. C’est à dire que l’on va créer une image proportionnelle de la grandeur physique délivrée en sortie du capteur par une nouvelle grandeur physique qui sera, cette fois-ci, bien mieux exploitable. En l’occurrence une tension dans notre cas. La nouvelle relation sera du style y prime (attention, il ne s’agit pas de la dérivée de y mais de y image) en fonction de y :

\(y’ = g(y)\)

Ce qui revient à dire que y prime est la relation de sortie du capteur en fonction de la grandeur de mesure d’entré. Soit :

\(y’ = g(y) y’ = g(f(x))\)

Concrètement, nous retrouvons ces formules dans chaque partie du capteur :

L’électronique d’adaptation

Elle sera propre à chaque capteur. Cependant, je l’ai énoncé au début de ce chapitre, nous utiliserons principalement des transducteurs qui ont en sortie une résistance électrique variable. L’électronique d’adaptation sera donc quasiment la même pour tous. La seule chose qui changera certainement, c’est le programme. Oui car la carte Arduino fait partie intégrante du capteur puisque c’est avec elle que nous allons « fabriquer » nos capteurs. Le programme sera donc différent pour chaque capteur, d’autant plus qu’ils n’ont pas tous les mêmes relations de sortie… vous l’aurez compris, on aura de quoi s’amuser ! 😛 Pour conclure sur l’intérieur du capteur, rentrons dans la partie électronique d’adaptation. La carte Arduino faisant partie de cette électronique, on va avoir un schéma tel que celui-ci :

A l’entrée de l’électronique d’adaptation se trouve la grandeur de sortie du transducteur ; à la sortie de l’électronique d’adaptation se trouve la grandeur de sortie du capteur. On peut après faire ce que l’on veut de la mesure prise par le capteur. Toujours avec la carte Arduino, dans une autre fonction du programme, on pourra alors transformer la valeur mesurée pour la transmettre via la liaison série ou simplement l’afficher sur un écran LCD, voir l’utiliser dans une fonction qui détermine si la mesure dépasse un seuil limite afin de fermer les volets quand il fait nuit…

Les caractéristiques d’un capteur

Pour terminer cette introduction générale sur les capteurs, nous allons aborder les caractéristiques essentielles à connaitre.

Les critères à ne pas négliger

La plage de mesure

La plage de mesure, ou gamme de mesure, est la première chose à regarder dans le choix d’un capteur ou d’un transducteur. C’est elle qui définit si vous allez pouvoir mesurer la grandeur physique sur une grande plage ou non. Par exemple pouvoir mesurer une température de -50°C à +200°C. Tout dépendra de ce que vous voudrez mesurer.

La précision

La précision est le deuxième critère de choix le plus important. En effet, si votre capteur de température a une précision de 1°C, vous aurez du mal à l’utiliser dans un projet qui demande une précision de mesure de températures de 0.1°C ! En règle générale, la précision est plus grande lorsque la plage de mesure est faible et inversement elle devient moins grande lorsque la plage de mesure augmente. Il est en effet assez difficile de fabriquer des capteurs qui ont une plage de mesure très grande par exemple un voltmètre qui mesurerait jusqu’à 1000V avec une précision de 0.001V ! Et puis, c’est rarement utile d’avoir ces deux paramètres à leur valeur la plus élevée (grande plage de mesure et grande précision). Dans un cas le plus général, à prix égal un capteur qui mesure une plus grande plage aura surement une précision plus faible qu’un capteur mesurant une plage plus réduite.

Sa tension d’alimentation

Il est en effet important de savoir à quelle tension il fonctionne, pour ne pas avoir de mauvaise surprises lorsque l’on veut l’utiliser !

D’autres caractéristiques à connaitre

La résolution

Certains capteurs proposent une sortie via une communication (série, I²C, SPI…). Du coup, la sortie est dite « numérique » (puisqu’on récupère une information logique plutôt qu’analogique). Un facteur à prendre en compte est la résolution proposée. Certains capteurs seront donc sur 8 bits (la valeur de sortie sera codé sur 256 niveaux), d’autres 10 bits, 16 bits, 32 bits… Il est évident que plus la résolution est élevée et plus la précision offerte est grande.

La reproductibilité

Ce facteur sert à déterminer la fiabilité d’une mesure. Si par exemple vous souhaitez mesurer une température à 0.1°C près, et que le capteur que vous utilisez oscille entre 10.3° et 10.8°C lorsque vous faites une série de mesures consécutives dans un intervalle de temps court, vous n’êtes pas précis. La reproductibilité est donc le critère servant à exprimer la fiabilité d’une mesure au travers de répétitions consécutives, et le cas échéant exprime l’écart-type et la dispersion de ces dernières. Si la dispersion est élevée, il peut-être utile de faire plusieurs mesures en un court-temps pour ensuite faire une moyenne de ces dernières.

Le temps de réponse

Comme son nom l’indique, cela détermine la vitesse à laquelle le capteur réagit par rapport au changement de l’environnement. Par exemple, les changements de température sont des phénomènes souvent lents à mesurer. Si vous passez le capteur d’un milieu très chaud à un milieu très froid, le capteur va mettre du temps (quelques secondes) pour proposer une information fiable. A contrario, certains capteurs réagissent très vite et ont donc un temps de réponse très faible.

La bande passante

Cette caractéristique est plus difficile à comprendre et est lié au temps de réponse. Elle correspond à la capacité du capteur à répondre aux sollicitations de son environnement. Si sa bande passante est élevée, il peut mesurer aussi bien des phénomènes lents que des phénomènes rapides. Si au contraire elle est faible, sa capacité à mesurer des phénomènes lents ou rapides sera réduite sur une certaine plage de fréquences.

La gamme de température d’utilisation

Ce titre est assez explicite. En effet, lorsque l’on mesure certains phénomènes physiques, le capteur doit avoir une certaine réponse. Cependant, il arrive que le phénomène soit conditionné par la température. Le capteur doit donc être utilisé dans certaines conditions pour avoir une réponse correcte (et ne pas être détérioré).

Lorsque vous utilisez un capteur pour la première fois, il est souvent utile de pratiquer un étalonnage. Cette opération consiste à prendre quelques mesures pour vérifier/corriger la justesse de sa caractéristique par rapport à la datasheet ou aux conditions ambiantes.

Nous verrons tout au long des chapitres certaines caractéristiques. Après ce sera à vous de choisir vos capteurs en fonction des caractéristiques dont vous aurez besoin.

Une expérience (bonne ou mauvaise) à partager ? Des questions à poser ? Des conseils à donner ? Ne soyez pas timide !

Laisser un commentaire

  1. Bonjour, j’utilise une arduino avec un capteur ultrason, j’ai mis delay de 1s entre chaque prise de mesure mais je trouve que le délai entre chaque mesure est trop court, j’ai donc voulu réduire le temps mais cela me pause des problèmes. J’utilise une télécommande IR, sauf que lorsque j’appuie sur le bouton pour stopper les mesures, la pause se lance une fois sur 10 car le capteur n’a pas le temps de capter à cause du capteur ultrason. Je voulais savoir comment faire pour que l’appui du bouton soit repéré immédiatement ?
    C’est a dire que lorsque j’appuie sur un bouton, cela agit quoi qu’il arrive, même si le capteur fait ses mesures.
    J’espère avoir été clair car c’est difficile d’expliquer :/

    • Pour être tranquille de ce cote la il y a deux solutions :
      + Se passer de pulseIn qui est bloquante et utiliser millis() pour contrôler le temps a chaque passage dans la loop
      + Utiliser une interruption sur la broche ou l’infra rouge est connecté

      • Merci de ta réponse . Je n’utilise pas de pulseIn ou alors je ne vois pas ou ^^ et je ne sais pas trop comment placer millis() car je suis encore débutant je ne sais pas tous pour le moment ^^
        Pour la deuxième solution je l’ai comprise mais je ne vois pas du tout comment faire .

        • Pour continuer je te propose d’en discuter sur un forum externe, ce sera plus pratique 🙂 Je traîne souvent sur le forum « Systèmes et Matériel » du site ZesteDeSavoir nouvellement sorti. Tu pourras ainsi nous montrer ton code, ce sera plus simple pour te répondre 🙂

          • Et bien je vais aller créer un poste sur ce forum dans la partie matériel et systemes , je remettrai mon problème , plus mon code qui est d’ailleurs un peu en bordel donc je vais ranger un peu ce code avant ^^

  2. Ping : Atelierbidouille | Pearltrees

  3. Ping : Les capteurs Arduino : Des capteurs aux usages multiples - Buzz It !

  4. bonjour

    j’ai acheter 7 capteur PIR pour un projet de de piano »virtuel », qui joue une note quand un capteur détecte un mouvement, ils pourraient donc reproduire les 7 notes de la gamme. Mais j’ai un problème, mes capteurs allument automatiquement le haut-parleur, sans vérifier si il y a un mouvement ou pas.

    J’ai donc essayé chaque capteur un par un : ils détectent mais restent sur cette état et ne détectent plus rien.

    voici mon programme :

    const int H = 13;

    int val1 = 0;

    int val2 = 0;

    int val3 = 0;

    int val4 = 0;

    int val5 = 0;

    int val6 = 0;

    int val7 = 0;

    void setup()

    {

    pinMode(13, OUTPUT); // Mise en sortie du Pin du haut-parleur

    pinMode(2, INPUT); // Mise en entrée des pin des Pir sensor

    pinMode(3, INPUT);

    pinMode(4, INPUT);

    pinMode(5, INPUT);

    pinMode(6, INPUT);

    pinMode(7, INPUT);

    pinMode(8, INPUT);

    }

    void loop()

    {

    val1 = digitalRead(2);

    if (val1 == HIGH)

    {

    tone(H, 131);

    }

    else

    {

    digitalWrite(H, LOW);

    delay(200);

    }

    val2 = digitalRead(3);

    if (val2 == HIGH)

    {

    tone(H, 147);

    }

    else

    {

    digitalWrite(H, LOW);

    delay(200);

    }

    val3 = digitalRead(4);

    if (val3 == HIGH)

    {

    tone(H, 165);

    }

    else

    {

    digitalWrite(H, LOW);

    delay(200);

    }

    val4 = digitalRead(5);

    if (val4 == HIGH)

    {

    tone(H, 175);

    }

    else

    {

    digitalWrite(H, LOW);

    delay(200);

    }

    val5 = digitalRead(6);

    if (val5 == HIGH)

    {

    tone(H, 196);

    }

    else

    {

    digitalWrite(H, LOW);

    delay(200);

    }

    val6 = digitalRead(7);

    if (val6 == HIGH)

    {

    tone(H, 220);

    }

    else

    {

    digitalWrite(H, LOW);

    delay(200);

    }

    val7 = digitalRead(2);

    if (val7 == HIGH)

    {

    tone(H, 247);

    }

    else

    {

    digitalWrite(H, LOW);

    delay(200);

    }

    }

    et voici le programme de test pour un capteur :

    //the time we give the sensor to calibrate (10-60 secs according to the datasheet)

    int calibrationTime = 30;

    int ledPin = 13; // choose the pin for the LED

    int inputPin = 2; // choose the input pin (for PIR sensor)

    int pirState = LOW; // we start, assuming no motion detected

    int val = 0; // variable for reading the pin status

    void setup() {

    pinMode(ledPin, OUTPUT); // declare LED as output

    pinMode(inputPin, INPUT); // declare sensor as input

    Serial.begin(9600);

    Serial.print(« calibrating sensor « );

    for(int i = 0; i < calibrationTime; i++){

    Serial.print(".");

    delay(1000);

    }

    }

    void loop(){

    val = digitalRead(inputPin); // read input value

    Serial.println(val);

    if (val == HIGH) { // check if the input is HIGH

    digitalWrite(ledPin, HIGH); // turn LED ON

    delay(150);

    if (pirState == LOW) {

    // we have just turned on

    Serial.println("Motion detected!");

    // We only want to print on the output change, not state

    pirState = HIGH;

    }

    } else {

    digitalWrite(ledPin, LOW); // turn LED OFF

    delay(300);

    if (pirState == HIGH){

    // we have just turned of

    Serial.println("Motion ended!");

    // We only want to print on the output change, not state

    pirState = LOW;

    }

    }

    }

    merci de vos réponses