Arduino, Tutoriels

Comment utiliser le capteur de température MLX90614 avec Arduino : Guide complet pour les débutants

Comment utiliser le capteur de température MLX90614 avec Arduino : Guide complet pour les débutants

1. Introduction

Dans ce guide, nous allons apprendre à interfacer le capteur de température infrarouge sans contact MLX90614 avec Arduino. Le MLX90614 est un capteur de température infrarouge sans contact qui peut mesurer la température sans même toucher l’objet. Ce capteur exceptionnel, introduit par Melexis, utilise la technologie infrarouge pour mesurer la température et fournit un signal de sortie numérique via le port I2C.

Les capteurs de température sans contact ont joué un rôle majeur pendant la période de la COVID-19 pour vérifier la température. Dans ce tutoriel, nous aborderons les détails des broches, les configurations des broches, les spécifications, les fonctionnalités de l’interface avec Arduino, et les applications d’un capteur de température MLX90614. Ensuite, nous vous présenterons un programme dans l’IDE Arduino où nous utiliserons ce capteur pour mesurer la température ambiante et de l’objet en degrés Celsius et Fahrenheit.

2. Présentation du capteur de température infrarouge MLX90614

image 7

Le capteur MLX90614 est un capteur de température infrarouge sans contact basé sur le principe de Stefan-Boltzmann. Il mesure la température d’un objet dans une plage allant de -70°C à 382,2°C et la température ambiante dans une plage allant de -40°C à 125°C sans entrer en contact physique avec l’objet observé. Ce capteur utilise une communication I2C pour transmettre les lectures de température à des microcontrôleurs via un bus I2C.

Le capteur MLX90614 est doté d’une précision élevée grâce à son convertisseur analogique-numérique (CAN) de 17 bits, offrant une résolution de 0,14 °C. Il est disponible dans différentes versions en fonction des besoins en tension d’entrée (3 volts ou 5 volts) et de la puissance de résolution. Le capteur MLX90614 est largement utilisé dans l’automatisation résidentielle et présente de nombreuses applications.

2.1. Principe de fonctionnement

Le capteur MLX90614 fonctionne sur le principe de Stefan-Boltzmann, qui stipule que tout corps émet un rayonnement infrarouge (IR) proportionnel à sa température. Ce rayonnement est capté par le capteur infrarouge intégré au MLX90614, puis converti en un signal numérique qui est transmis via le bus I2C au microcontrôleur.

Le module du capteur infrarouge MLX90614 est composé d’un détecteur thermopile infrarouge et d’une unité de traitement du signal ASSP (Application Specific Signal Processing). Le thermopile collecte le rayonnement infrarouge dans son champ de vision, qui varie selon les versions du capteur, et produit un signal électrique proportionnel au rayonnement. L’unité de traitement ASSP convertit ce signal analogique en un signal amplifié filtré, qui est ensuite envoyé au microcontrôleur.

2.2. Caractéristiques et spécifications

  • Tension de fonctionnement : 3,6 Volts – 5,5 Volts
  • Plage de température ambiante : -40°C à 125°C
  • Plage de température de l’objet : -70°C à 380°C
  • Résolution de mesure : 0,02°C
  • Sensibilité ESD : 2 kV
  • Courant source/sortie : 25 mA
  • Résolution ADC : 17 bits
  • Filtre optique intégré pour réduire les interférences du proche infrarouge et de la lumière visible
  • Adapté aux applications de 8 à 16 volts et facilement intégrable
  • Mode d’économie d’énergie disponible
  • Disponible en versions simple et double
  • Capteur économe en énergie et hautement sensible

2.3. Diagramme des broches

Diagramme des broches capteur de température infrarouge MLX90614

Le capteur de température infrarouge MLX90614 est disponible dans un boîtier TO-39 et dispose des broches suivantes :

BrocheFonction
VCCAlimentation positive
GNDMasse de référence
SCLBroche d’horloge série à drain ouvert (I2C)
SDABroche de données série à drain ouvert (I2C)

3. Interfaçage du capteur MLX90614 avec Arduino

3.1. Connexions matérielles

Pour interfacer le capteur MLX90614 avec Arduino uno, suivez les étapes suivantes :

  • Connectez la broche VCC du capteur MLX90614 à la broche 5V de l’Arduino.
  • Connectez la broche GND du capteur MLX90614 à la broche GND de l’Arduino.
  • Connectez la broche SDA du capteur MLX90614 à la broche A4 de l’Arduino.
  • Connectez la broche SCL du capteur MLX90614 à la broche A5 de l’Arduino.
Comment utiliser le capteur de température MLX90614 avec Arduino

3.2. Installation de la bibliothèque

Adafruit MLX90614 pour Arduino Avant de commencer la programmation, vous devez installer la bibliothèque Adafruit MLX90614 pour Arduino. Voici les étapes à suivre :

  • Téléchargez la bibliothèque Adafruit MLX90614 Arduino depuis le site d’Adafruit ou via le Gestionnaire de bibliothèques Arduino (Lien).
  • Ouvrez l’IDE Arduino, allez dans Croquis (Sketch) > Inclure une bibliothèque (Include Library) > Ajouter une bibliothèque .ZIP (Add .ZIP Library).
  • Sélectionnez le fichier ZIP de la bibliothèque que vous avez téléchargé.
  • Redémarrez l’IDE Arduino pour que la bibliothèque soit prise en compte.

3.3. Code Arduino

Voici le code Arduino pour interagir avec le capteur MLX90614 :

#include <Wire.h>
#include <Adafruit_MLX_Sensor90614.h>

Adafruit_MLX_Sensor90614 MLX_Sensor = Adafruit_MLX_Sensor90614();

void setup() {
Serial.begin(9600);
Serial.println("Capteur MLX90614 - MicroLab");
MLX_Sensor.begin();
}

void loop() {
Display_Temperature('A'); // Obtenir la température de l'objet en Celsius
Display_Temperature('B'); // Obtenir la température ambiante en Celsius
Display_Temperature('C'); // Obtenir la température de l'objet en Kelvin
Display_Temperature('D'); // Obtenir la température ambiante en Kelvin
Display_Temperature('E'); // Obtenir la température de l'objet en Fahrenheit
Display_Temperature('F'); // Obtenir la température ambiante en Fahrenheit
Serial.println("########");
delay(2000);
}

float Get_Temperature_Sample(char type) {
float temp_value;
float Object_Temperature = MLX_Sensor.readObjectTempC();
float Ambient_Temperature = MLX_Sensor.readAmbientTempC();

if (type == 'E') {
temp_value = MLX_Sensor.readObjectTempF(); // Température de l'objet en Fahrenheit
}
else if (type == 'F') {
temp_value = MLX_Sensor.readAmbientTempF(); // Température ambiante en Fahrenheit
}
else if (type == 'C') {
temp_value = Object_Temperature + 273.15; // Température de l'objet en Kelvin
}
else if (type == 'D') {
temp_value = Ambient_Temperature + 273.15; // Température ambiante en Kelvin
}
else if (type == 'A') {
temp_value = Object_Temperature;
}
else if (type == 'B') {
temp_value = Ambient_Temperature;
}

return temp_value;
}

void Display_Temperature(char type) {
float temp_data = Get_Temperature_Sample(type);

if (type == 'A') {
Serial.print("Objet : ");
Serial.print(temp_data);
Serial.println("°C");
}
else if (type == 'B') {
Serial.print("Ambiant : ");
Serial.print(temp_data);
Serial.println("°C");
}
else if (type == 'C') {
Serial.print("Objet : ");
Serial.print(temp_data);
Serial.println("°K");
}
else if (type == 'D') {
Serial.print("Ambiant : ");
Serial.print(temp_data);
Serial.println("°K");
}
else if (type == 'E') {
Serial.print("Objet : ");
Serial.print(temp_data);
Serial.println("°F");
}
else if (type == 'F') {
Serial.print("Ambiant : ");
Serial.print(temp_data);
Serial.println("°F");
}
}

3.4. Explication du code Arduino

Le code Arduino fourni permet de lire et d’afficher les températures mesurées par le capteur MLX90614. Voici une explication détaillée du code :

  • Tout d’abord, nous incluons les bibliothèques nécessaires : Wire.h pour la communication I2C et Adafruit_MLX_Sensor90614.h pour le capteur MLX90614.
  • Ensuite, nous créons une instance de l’objet Adafruit_MLX_Sensor90614 appelée MLX_Sensor. Cet objet nous permettra d’accéder aux fonctions du capteur.
  • Dans la fonction setup(), nous démarrons la communication série à une vitesse de 9600 bauds et nous initialisons le capteur en appelant la fonction begin() sur l’objet MLX_Sensor.
  • La fonction loop() est exécutée en boucle et effectue les actions suivantes :
    • Elle appelle la fonction Display_Temperature() avec différents paramètres pour obtenir les températures de l’objet et ambiante dans différentes unités de mesure.
    • Elle affiche les températures sur le moniteur série en utilisant les fonctions Serial.print() et Serial.println().
    • Elle ajoute une ligne de séparation pour une meilleure lisibilité des données.
  • La fonction Get_Temperature_Sample() est utilisée pour récupérer les valeurs de température en fonction du paramètre “type” passé en argument. Elle utilise les fonctions de lecture du capteur MLX90614 pour obtenir les températures de l’objet et ambiante en degrés Celsius. En fonction du type de température demandée, elle effectue les conversions nécessaires pour obtenir les valeurs en Kelvin ou Fahrenheit.
  • La fonction Display_Temperature() est utilisée pour afficher les températures sur le moniteur série en fonction du type de température demandée. Elle utilise la fonction Get_Temperature_Sample() pour obtenir la valeur de température correspondante, puis l’affiche avec l’unité de mesure appropriée.

Ce code vous permet d’obtenir les lectures de température en temps réel du capteur MLX90614 et de les afficher sur le moniteur série. Vous pouvez personnaliser le code en ajoutant des fonctionnalités supplémentaires en fonction de vos besoins, comme le contrôle de périphériques ou la prise de décisions en fonction des valeurs de température mesurées.

4. Utilisation du capteur MLX90614 avec Arduino

Dans cette partie, nous allons voir comment utiliser le capteur MLX90614 avec Arduino pour mesurer la température ambiante et de l’objet.

4.1. Lecture des températures

Le capteur MLX90614 fournit des fonctions pour lire les températures ambiante et de l’objet dans différentes échelles de mesure (Celsius, Fahrenheit et Kelvin). Dans notre code, nous utilisons les fonctions suivantes pour lire les températures :

  • readAmbientTempC() : Cette fonction renvoie la température ambiante en degrés Celsius.
  • readObjectTempC() : Cette fonction renvoie la température de l’objet en degrés Celsius.
  • readAmbientTempF() : Cette fonction renvoie la température ambiante en degrés Fahrenheit.
  • readObjectTempF() : Cette fonction renvoie la température de l’objet en degrés Fahrenheit.

4.2. Affichage des températures sur le moniteur série

Une fois que nous avons lu les températures, nous utilisons la fonction Display_Temperature() pour les afficher sur le moniteur série. Cette fonction prend en paramètre un caractère qui indique le type de température à afficher (A pour la température de l’objet en Celsius, B pour la température ambiante en Celsius, C pour la température de l’objet en Kelvin, D pour la température ambiante en Kelvin, E pour la température de l’objet en Fahrenheit, F pour la température ambiante en Fahrenheit).

Le code Arduino fourni affiche les températures de l’objet et ambiante dans les trois échelles de mesure (Celsius, Fahrenheit et Kelvin) sur le moniteur série. Les températures sont mises à jour toutes les 2 secondes.

5. Applications du capteur de température MLX90614

Le capteur de température infrarouge MLX90614 a de nombreuses applications dans divers domaines, notamment :

  • Thermométrie médicale sans contact
  • Systèmes de surveillance de température industrielle
  • Contrôle de la température dans les bâtiments et les environnements sensibles
  • Automatisation industrielle
  • Domotique
  • Robotique
  • Contrôle des processus
  • Sécurité et détection de présence

Conclusion

Dans ce tutoriel, nous avons appris à interfacer le capteur de température infrarouge sans contact MLX90614 avec Arduino. Nous avons présenté les détails du capteur, son principe de fonctionnement, ses spécifications et son diagramme des broches. Nous avons également expliqué les étapes pour interconnecter le capteur avec Arduino, installer la bibliothèque nécessaire et écrire un code pour lire et afficher les températures sur le moniteur série. Nous avons également discuté des applications possibles du capteur MLX90614.

Maintenant, vous pouvez commencer à explorer les fonctionnalités de ce capteur et à l’appliquer dans vos propres projets. Bonne expérimentation !

Pour plus d’articles : https://www.moussasoft.com/tutoriels-electroniques

Twitter: Moussa Lhoussaine (@Moussasoft_com) / Twitter

Arduino – Home

Exemple de projet DIY MLX90614 avec Arduino :

https://www.youtube.com/watch?v=TZrdSxMr5IU&pp=ygURTUxYOTA2MTQgIGFyZHVpbm8%3D