J’avais commandé un capteur de température infrarouge, dit sans contact. Il est temps d’apprendre à s’en servir. Si la connexion est simple, l’utilisation correcte est une toute autre chose… Pour réaliser ce montage, il faudra:
- une plaque de prototypage
- une carte Arduino
- un capteur MLX90614 (dans mon cas, l’identifiant commence par BAA, on verra ce que cela signifie et pourquoi ce n’est pas un exemple à suivre)
Le montage
Pour le montage, il faut savoir que le composant MLX communique par protocole I2C et est configuré selon le diagramme suivant. Repérer le détrompeur sur le composant (la petite languette sur la droite du schéma). Ainsi, la broche 1 ira sur le pin A5/SCL de la carte Arduino, et la broche 2 ira sur le pin A4/SDA. La broche 3/VDD pour l’alimentation en 3V et la broche 4/VSS pour la terre.
On connecte donc le composant à une carte Arduino de la manière suivante:
On saisit ensuite le code suivant dans un éditeur que l’on uploade vers la carte Arduino.
Une fois le code uploadé, on peut observer dans le terminal série les mesures qui s’affichent toutes les secondes. C’est bon, le composant est connecté. Mais comment interpréter ce qui s’affiche ? Et à quoi ça sert ?
Fonctionnement
La brochure du composant propose différents cas d’application: mesure de température mais aussi détection de buée sur pare brise, surveillance d’angle mort dans les rétroviseurs, détecteur de présence, détection de feu, surveillance de bétail, relai thermique.
Concrètement, c’est un capteur sensible aux longueurs d’onde infrarouge (IR) qui mesure la « quantité » d’IR à un instant donné. Cette quantité est alors convertie en température par le composant. Cela dépend donc de plusieurs choses :
- ce que voit le capteur et donc son angle de vue
- le matériau qui est vu par le capteur
- (enfin, la mesure du senseur dépend du voltage sous lequel il est alimenté. On n’abordera pas ce point ici car il est alimenté sous 3V, mais si vous souhaitez changer le voltage d’alimentation, alors il faut modifier la mesure pour prendre en compte cette dépendance.)
Concernant l’angle de vue, selon que le capteur voit l’objet à mesurer au milieu d’autres objets ou seulement l’objet à mesurer, la mesure ne sera pas la même. Concernant le matériau, c’est un peu plus compliqué. Il faut comprendre que deux matériaux à température égale ne vont pas rayonner de la même manière en infrarouge. Exemple: un morceau d’aluminium à 20° va rayonner moins d’infrarouge qu’un morceau de plastique à 20°. Or tous les deux sont à 20° mais le capteur va mesurer une quantité d’IR différente dans les deux cas. Pourquoi et comment faire pour corriger cet effet ? C’est car l’émissivité des matériaux est différente, et donc il faut renseigner l’émissivité des matériaux à mesurer avant la mesure dans un registre du capteur. Ainsi, le capteur corrige la mesure avant de la retourner.
Pour l’angle de vue, pour des applications de détection de buée ou de présence, un grand angle de vue peut être utile (typ: 90°). Pour des applications de mesure de température, on préfèrera des petits angles de vue (typ: 5°). L’angle de vue du capteur est expliqué par les premières lettres de sa référence gravée et selon la table suivante (comparer les lettres 2 et 3 de la réf, et regarder la deuxième ligne du tableau Width zone 1):
Pour l’émissivité, voici quelques valeurs typiques d’émissivité de matériaux:
- peau: 0.95
- aluminium anodisé: 0.77
- aluminium poli: 0.05 (dans ce cas, l’aluminium émet peu mais reflète l’alentour. Si on cherche à mesurer sa température, on mesurera en fait la température de ce qu’il reflète. Une solution est d’appliquer un traitement de surface de type peinture noire matte pour augmenter l’émissivité de sa surface).
Selon l’application, on peut vouloir corriger l’émissivité du capteur par l’instruction writeEmissivity utilisée dans l’exemple.
[…] un article précédent, j’avais découvert le principe de fonctionnement du capteur MLX90614. Le composant que j’avais acheté ayant un champ de vue très large, l’application la […]