PrécédentLa conversion des grandeurs7 / 24SuivantLe module BME280
3. Les microcontrôleurs

Les capteurs

Les capteurs

Objectifs

Ce chapitre a pour but de faire un tour d'horizon des différents types de capteurs couramment utilisés en électronique embarquée et en systèmes automatisés.
La première partie est consacrée aux aspects théoriques : types de capteurs, modes de transmission et protocoles de communication. La seconde partie comprend la mise en pratique avec des exemples concrets de capteurs.

Définition d'un capteur

Un capteur est un dispositif qui convertit une grandeur physique (température, distance, pression, lumière, etc.) en un signal électrique exploitable par un système électronique. On distingue deux grandes familles :

Les types de capteurs

Il existe une multitude de capteurs adaptés à des besoins très variés :

Les modes de transmission

Voici les différentes façons de faire communiquer des périphériques entre eux.
Pour nos exemples, nous nous baserons sur deux périphériques A et B qui souhaitent échanger des données.

Les protocoles de communication

Pour communiquer, de nombreux protocoles existent. Chacun a ses propres caractéristiques en termes de vitesse, de nombre de broches, de distance et de nombre de périphériques supportés. Voici les principaux protocoles rencontrés en électronique embarquée.

Le bus I2C

Le bus I2C (Inter-Integrated Circuit) est un bus informatique qui a émergé dans les années 80 lors de la « guerre des standards » entre les acteurs du monde électronique.
Conçu par Philips pour les applications de domotique et d'électronique domestique, il permet de relier facilement un microcontrôleur et différents circuits intégrés tels que des capteurs de pression, de température, des écrans, etc.

C'est un bus série synchrone bidirectionnel en mode half-duplex, utilisant seulement 2 broches pour communiquer :

Une masse (GND) est commune à tous les périphériques connectés au bus.

Architecture maître-esclave

Les échanges ont toujours lieu entre un seul maître et un (ou tous les) esclave(s), toujours à l'initiative du maître  [3]. Pour éviter les conflits électriques, les broches SDA et SCL sont de type Collecteur Ouvert : la ligne est au repos à l'état HAUT grâce à des résistances de tirage (pull-up), et un composant tire la ligne à l'état BAS pour communiquer.

Les résistances de rappel (pull-up) du bus I2C
Les résistances de rappel (pull-up) du bus I2C

Adressage

À chaque composant est attribuée une adresse physique unique sur le bus, codée sur 7 bits. Cela permet théoriquement de connecter jusqu'à $2^7 - 1 = 127$ périphériques  [4]. Il existe également une extension sur 10 bits permettant d'adresser jusqu'à 1023 périphériques.

Par exemple, on peut trouver sur un même bus I2C :

Un réseau de capteurs reliés sur un bus I2C
Un réseau de capteurs reliés sur un bus I2C
Une capture de trame I2C à l'oscilloscope
Une capture de trame I2C à l'oscilloscope

Structure d'une trame I2C

Une transaction I2C se déroule ainsi :

Les vitesses de communication I2C

Il existe différentes vitesses de communication normalisées sur le bus I2C :

La gestion des conflits d'adresses

Lorsqu'on souhaite connecter plusieurs périphériques ayant la même adresse par défaut (par exemple deux capteurs BMP280), certains composants proposent de modifier leur adresse en appliquant un niveau logique (0 ou 1) sur une broche dédiée (souvent appelée ADDR ou SDO). Cela permet d'avoir jusqu'à 2 ou 4 instances du même composant sur le même bus.

Le bus SPI

Le bus SPI (Serial Peripheral Interface) est un protocole full-duplex développé par Motorola dans le milieu des années 80.
La liaison est de type maître-esclave : le maître sélectionne l'esclave avec qui il veut communiquer via la broche (Slave Select, active à l'état BAS).

Les broches SPI

Le bus SPI comporte 4 broches :

Architecture d'un bus SPI avec plusieurs esclaves
Architecture d'un bus SPI avec plusieurs esclaves

Protocole SPI

Avantages et inconvénients

SPI est plus rapide que I2C et est full-duplex, mais nécessite une broche SS dédiée par esclave, ce qui peut consommer beaucoup d'entrées/sorties sur le microcontrôleur lorsque de nombreux périphériques sont connectés.

La liaison UART

La liaison UART (Universal Asynchronous Receiver Transmitter) est une liaison série asynchrone utilisant seulement deux broches :

La liaison UART est point à point : elle permet uniquement de faire communiquer deux appareils entre eux. Contrairement aux bus I2C ou SPI, il n'est pas possible de relier plusieurs périphériques sur le même bus sans arbitrage supplémentaire.

Les broches TX de l'appareil A se connectent au RX de l'appareil B, et inversement.

Une communication UART entre deux appareils
Une communication UART entre deux appareils

Structure d'une trame UART

Chaque octet transmis est encadré par des bits de contrôle :

Structure d'une trame UART
Structure d'une trame UART

Au repos, la ligne est maintenue au niveau logique HAUT.

La notion de débit : le baud rate

La liaison étant asynchrone (pas d'horloge partagée), les deux périphériques doivent être configurés à la même vitesse, appelée baud rate. Le baud représente le nombre de symboles transmis par seconde [5]. Les vitesses normalisées sont :

Exemple de trame UART

On constate clairement que le niveau au repos est à l'état HAUT, et que le bit de start tire la ligne à BAS pour signaler le début de la transmission.

Capture oscilloscope d'une trame UART à 9\,600 bauds
Capture oscilloscope d'une trame UART à 9\,600 bauds

Comparaison des protocoles

|l|c|c|c| Critère & I2C & SPI & UART
Nombre de broches & 2 + GND & 4 + 1/esclave & 2
Nombre de périph. & Jusqu'à 127 & Illimité (1 SS/esclave) & 2 uniquement
Vitesse max & 5 Mbit/s & Dizaines de Mbit/s & 115\,200 baud
Mode & Half-duplex & Full-duplex & Full-duplex
Synchronisation & Synchrone & Synchrone & Asynchrone
Complexité & Moyenne & Faible & Faible

D'autres protocoles de communication

Les capteurs de distance

Différentes technologies sont utilisées pour mesurer une distance. Chacune présente ses propres avantages et inconvénients selon les contraintes de l'application.

Les capteurs infrarouges

Ce type de capteur émet un faisceau infrarouge et mesure l'intensité lumineuse réfléchie par l'obstacle, qu'il convertit en une tension de sortie. La distance est ensuite déduite de cette tension.

Un capteur de distance infrarouge (famille Sharp GP2Y)
Un capteur de distance infrarouge (famille Sharp GP2Y)

Cependant, la relation entre la tension de sortie et la distance est non linéaire (voir la courbe ci-dessous [6]). Il est donc nécessaire d'utiliser une table de correspondance ou une formule de correction pour obtenir la distance réelle.

Tension de sortie en fonction de la distance — noter la non-linéarité
Tension de sortie en fonction de la distance — noter la non-linéarité

Les capteurs ultrasons

Principe physique

Le capteur ultrasonique mesure le temps de propagation aller-retour d'une impulsion sonore à haute fréquence entre l'émetteur et l'obstacle. En connaissant la vitesse du son dans l'air ($v \approx 340~\text{m/s}$ à $20°C$), on peut calculer la distance :

$$ d = \frac{v \times t_{\text{aller-retour}}}{2} $$

Le capteur de distance ultrasonore HC-SR04
Le capteur de distance ultrasonore HC-SR04

Caractéristiques du HC-SR04

Séquence de mesure

Chronogramme de la séquence de mesure
Chronogramme de la séquence de mesure

Voici le relevé oscilloscope des broches PINTRIGGER et PINECHO :

Signaux TRIGGER et ECHO observés à l'oscilloscope
Signaux TRIGGER et ECHO observés à l'oscilloscope

Calcul pratique

La durée du signal ECHO en microsecondes, divisée par 58, donne directement la distance en centimètres :

$$ d~(\text{cm}) = \frac{t_{\text{ECHO}}~(\mu s)}{58} $$

Les capteurs de température

Les capteurs numériques

Il existe de nombreuses familles de capteurs de température numériques. Nous abordons ici les familles DHTXX, DS18B20 et BME280, qui sont parmi les plus répandues en électronique embarquée.

Les capteurs DHTXX

Les capteurs DHTXX [7] mesurent simultanément la température et le taux d'humidité relative. Ils fonctionnent entre 3,3 V et 5 V et communiquent via un protocole propriétaire sur un seul fil. [8]

Le capteur DHT22 (température + humidité)
Le capteur DHT22 (température + humidité)

Comparaison DHT11 / DHT22 :

|l|c|c| Caractéristique & DHT11 & DHT22
Plage de température & 0 à +50°C & $-40$ à +80°C
Précision température & $\pm 2°C$ & $\pm 0,5°C$
Plage d'humidité & 20 à 80\% HR & 0 à 100\% HR
Précision humidité & $\pm 5\%$ & $\pm 2\%$
Fréquence d'échantillonnage & 1 Hz & 0,5 Hz
Prix & Faible & Moyen

Chronogramme d'une trame du capteur DHT22
Chronogramme d'une trame du capteur DHT22

Le capteur DS18B20

Le DS18B20 est un capteur de température numérique de précision. Il communique via le protocole One-Wire et possède une résolution programmable de 9 à 12 bits.

Les capteurs BME280 / BMP280

Ces capteurs de Bosch utilisent le protocole I2C (ou SPI) pour transmettre :

Ces capteurs très compacts sont notamment utilisés dans les stations météo et les projets de domotique. [9]}}

Capteur Environnemental – T°, Pression, Humidité

BME280

Général

Fabricant

Bosch Sensortec

Description

Capteur combiné pression/température/humidité, ultra-compact

Boîtier

LGA-8 (2.5 $\times$ 2.5 $\times$ 0.93 mm)

Électrique

Alimentation (VDD)

1.71 V – 3.6 V

Alimentation I/O (VDDIO)

1.2 V – 3.6 V

Courant mesure (1 Hz, T+P+H)

3.6 µA typ.

Courant sleep

0.1 µA

Capteur Température

Plage

$-$40°C à +85°C

Résolution

0.01°C

Précision absolue

$\pm$0.5°C (0°C – 65°C typ.)

Capteur Pression

Plage

300 – 1100 hPa

Résolution RMS

0.2 Pa ($\approx$ 1.7 cm altitude)

Précision relative

$\pm$0.12 hPa ($\approx$ $\pm$1 m)

Capteur Humidité

Plage

0 – 100 \% HR

Précision

$\pm$3 \% HR

Temps de réponse ($\tau_{63\%}$)

1 s

Interface

Interfaces

I$^2$C (100/400 kHz) ou SPI (10 MHz)

Adresses I$^2$C

0x76 (SDO=0) ou 0x77 (SDO=1)

Modes de fonctionnement

Sleep, Forced (one-shot), Normal (continu)

Les capteurs analogiques

Certains capteurs transmettent leurs données sous forme d'une tension analogique, directement proportionnelle à la grandeur mesurée. Par exemple, le capteur LM35 délivre une tension de $10\,\text{mV/°C}$ :

$$ T~(°C) = \frac{U_{\text{sortie}}~(\text{mV})}{10} $$

Ainsi, une tension de sortie de 210 mV correspond à une température de 21°C.

Le capteur de température analogique LM35 (TO-92)
Le capteur de température analogique LM35 (TO-92)

Avantage des capteurs analogiques

L'un des atouts majeurs des capteurs analogiques est qu'ils peuvent être utilisés sans microcontrôleur. Par exemple, le schéma suivant réalise un thermostat purement analogique : un comparateur à amplificateur opérationnel active un relais dès que la tension du LM35 dépasse un seuil réglable.

Thermostat purement analogique avec LM35 et comparateur à AOP
Thermostat purement analogique avec LM35 et comparateur à AOP

Les capteurs PIR

Un capteur PIR avec sa lentille de Fresnel
Un capteur PIR avec sa lentille de Fresnel

Principe de fonctionnement

Les capteurs PIR (Passive Infrared) détectent les rayonnements infrarouges émis par tout corps dont la température est supérieure au zéro absolu, en particulier les êtres vivants.

Le capteur est équipé de deux cellules pyroélectriques sensibles aux infrarouges, montées en opposition. En l'absence de mouvement, les deux cellules reçoivent le même niveau d'infrarouge ambiant et le signal de sortie est nul. Lorsqu'un objet chaud traverse le champ de détection, il modifie le rayonnement reçu successivement sur chaque cellule, ce qui génère un signal différentiel détectable.

La lentille de Fresnel en plastique blanc couvre le capteur et concentre le rayonnement infrarouge vers les cellules grâce à ses multiples facettes, augmentant ainsi la portée et la sensibilité.

Caractéristiques typiques

Diagramme temporel

La sortie du capteur passe à l'état HAUT dès qu'un mouvement est détecté, et reste haute pendant une durée configurable après la dernière détection [10].

Diagramme temporel du capteur PIR Présence OUT
Diagramme temporel du capteur PIR

Applications

Limitations

Notes

  1. Controller Area Network

  2. Très répandu dans les automates industriels (API).

  3. Jamais de maître à maître ou d'esclave à esclave. Cependant, rien n'empêche un composant de passer dynamiquement du statut de maître à esclave et réciproquement.

  4. En réalité moins, car certaines adresses sont réservées et il faut tenir compte de la capacité électrique de la ligne.

  5. Pour l'UART, 1 baud = 1 bit par seconde.

  6. Extrait de la datasheet du capteur

  7. DHT11 ou DHT22

  8. Protocole de type « One-Wire » propriétaire, distinct de celui de Dallas/Maxim.

  9. Pour plus d'information sur le protocole I2C, se reporter à la section \link{\ref{busI2C

  10. Cette durée est réglable grâce au potentiomètre de délai présent sur le module.

PrécédentLa conversion des grandeurs7 / 24SuivantLe module BME280