Outils pour utilisateurs

Outils du site


arduino:plaque_grove_du_lycee_valin:comment_utiliser_un_capteur_de_temperature_grove

Comment utiliser le capteur de température DS18B20 Grove ?


Le capteur DS18B20 Grove

Le capteur de température DS18B20 permet de mesurer des températures allant de -55°C à +125°C avec une précision de ±0,5°C pour une mesure comprise entre -10°C et 85°C.

Ce capteur communique avec l’Arduino grâce à un bus 1-Wire ou (OneWire).
Nous utiliserons la bibliothèque “Dallas Temperature” pour simplifier son utilisation.

Datasheet DS18B20

Exemples d'utilisation en sciences physiques



Le montage

La température mesurée par le capteur DS18B20 est affichée sur l'écran LCD.

  • Le capteur de température est branché sur la broche D5.
  • L'écran LCD est branché sur une broche I2C.





Le code

Cliquez pour afficher le code

Cliquez pour masquer le code

/**
 * Mesures de températures avec un seul capteur DS18B20 GROVE
 * Les mesures sont envoyées sur la liaison série et affichées sur un écran LCD Grove
 */
 
 /* Inclure les bibliothèques */
#include <OneWire.h>
#include <DallasTemperature.h>
#include "rgb_lcd.h"
 
/* Création de l'objet OneWire et sensors */
 
OneWire capteur(5);   // // Création d'un objet One Wire sur la broche D5
DallasTemperature sensors(&capteur); // Indiquer la référence oneWire à la bibliothèque Dallas Temperature.
 
/* Ecran LCD GROVE */
rgb_lcd lcd;
 
/* Pour faire des mesures à intervalle régulier */
 
unsigned long tempsPrecedent = 0;
float intervalle = 1000;   // durée entre deux mesures en ms (valeur minimun : 1000)
 
void setup() {
 
  Serial.begin(115200);  // choix de la vitesse
 
  sensors.begin();
 
   /* Ecran LCD  */
 
  // Définir le nombre de colonnes et de lignes de l'écran LCD
    lcd.begin(16, 2); 
}
 
void loop(){
  unsigned long tempsCourant = millis();  // cette variable contient le nombre de millisecondes depuis que le programme courant a démarré. 
 
  if (tempsCourant - tempsPrecedent >= intervalle) {
      tempsPrecedent = tempsCourant;
 
      /* Demande la température aux capteurs */
 
      sensors.requestTemperatures(); 
      float temperature = sensors.getTempCByIndex(0);  // obtenir la température en degré
 
      /* envoie les températures sur la liaison série  */
 
      Serial.println(temperature, 1);
 
      /* Affiche les températures sur l'écran lcd */
 
      lcd.clear();   // effacer l'écran  
      lcd.setCursor(0,0);   // mettre le curseur à la première colonne, première ligne
      lcd.print("T = ");  
      lcd.print(temperature, 1);
      lcd.print(" ");
      lcd.print((char)223);   // symbole °
      lcd.print("C"); 
  }
}



Utilisation de deux capteurs de température DS18B20 Grove

Le montage


Le code

Cliquez pour afficher le code

Cliquez pour masquer le code

/**
 * Mesures de températures avec deux capteurs DS18B20 GROVE
 * Les mesures sont envoyées sur la liaison série et affichées sur un écran LCD Grove
 */
 
/* Inclure les bibliothèques */
#include <OneWire.h>
#include <DallasTemperature.h>
#include "rgb_lcd.h"
 
/* Création de l'objet OneWire et sensors */
 
//OneWire oneWire(ONE_WIRE_BUS);
 
OneWire capteur1(5);   // Création d'un objet One Wire sur la broche D5  => température T1
OneWire capteur2(6);   // Création d'un objet One Wire sur la broche D6  => température T2
 
// Indiquer la référence OneWire à la bibliothèque Dallas Temperature.
DallasTemperature sensors1(&capteur1); 
DallasTemperature sensors2(&capteur2); 
 
/* Ecran LCD GROVE */
 rgb_lcd lcd;
 
/* Pour faire des mesures à intervalle régulier */
 
unsigned long tempsPrecedent = 0;
float intervalle = 2000;   // durée entre deux mesures en ms (valeur minimun : 2000)
 
void setup() {
 
  Serial.begin(115200);  // choix de la vitesse
 
  sensors1.begin();
  sensors2.begin();
 
   /* Ecran LCD  */
 
  // Définir le nombre de colonnes et de lignes de l'écran LCD
    lcd.begin(16, 2); 
}
 
void loop(){
  unsigned long tempsCourant = millis();  // cette variable contient le nombre de millisecondes depuis que le programme courant a démarré. 
 
  if (tempsCourant - tempsPrecedent >= intervalle) {
      tempsPrecedent = tempsCourant;
 
      /* Demande la température aux capteurs */
 
      sensors1.requestTemperatures(); 
      float temperature_1 = sensors1.getTempCByIndex(0);  // obtenir la température 1 en degré
      sensors2.requestTemperatures(); 
      float temperature_2 = sensors2.getTempCByIndex(0);  // obtenir la température 2 en degré
 
      /* envoie les températures sur la liaison série  */
 
      Serial.print(temperature_1, 1);
      Serial.print(",");   // les données sont séparées par des virgules.
      Serial.print(temperature_2, 1);
      Serial.print(",");   // les données sont séparées par des virgules.
 
      /* Affiche les températures sur l'écran lcd */
 
      lcd.clear();   // effacer l'écran
 
      lcd.setCursor(0,0);   // mettre le curseur à la première colonne, première ligne
      lcd.print("T1 = ");  
      lcd.print(temperature_1, 1);
      lcd.print((char)223);   // symbole °
      lcd.print("C"); 
 
      lcd.setCursor(0,1);   // mettre le curseur à la première colonne, deuxième ligne
      lcd.print("T2 = ");  
      lcd.print(temperature_2, 1);
      lcd.print((char)223);   // symbole °
      lcd.print("C");        
  }
}



Utilisation de trois capteurs de température DS18B20 Grove

Le montage


Le code

Cliquez pour afficher le code

Cliquez pour masquer le code

/**
 * Mesures de températures avec trois capteurs DS18B20 GROVE
 * Les mesures sont envoyées sur la liaison série et affichées sur un écran LCD Grove
 */
 
/* Inclure les bibliothèques */
#include <OneWire.h>
#include <DallasTemperature.h>
#include "rgb_lcd.h"
 
/* Création de l'objet OneWire et sensors */
 
//OneWire oneWire(ONE_WIRE_BUS);
 
OneWire capteur1(5);   // Création d'un objet One Wire sur la broche D5  => température T1
OneWire capteur2(6);   // Création d'un objet One Wire sur la broche D6  => température T2
OneWire capteur3(7);   // Création d'un objet One Wire sur la broche D7  => température T3
 
// Indiquer la référence OneWire à la bibliothèque Dallas Temperature.
DallasTemperature sensors1(&capteur1);
DallasTemperature sensors2(&capteur2); 
DallasTemperature sensors3(&capteur3);
 
 
/* Ecran LCD GROVE */
 rgb_lcd lcd;
 
/* Pour faire des mesures à intervalle régulier */
 
unsigned long tempsPrecedent = 0;
float intervalle = 3000;   // durée entre deux mesures en ms (valeur minimun : 2000)
 
void setup() {
 
  Serial.begin(115200);  // choix de la vitesse
 
  sensors1.begin();
  sensors2.begin();
  sensors3.begin();
 
   /* Ecran LCD  */
 
  // Définir le nombre de colonnes et de lignes de l'écran LCD
    lcd.begin(16, 2); 
}
 
void loop(){
  unsigned long tempsCourant = millis();  // cette variable contient le nombre de millisecondes depuis que le programme courant a démarré. 
 
  if (tempsCourant - tempsPrecedent >= intervalle) {
      tempsPrecedent = tempsCourant;
 
      /* Demande la température aux capteurs */
 
      sensors1.requestTemperatures(); 
      float temperature_1 = sensors1.getTempCByIndex(0);  // obtenir la température 1 en degré
      sensors2.requestTemperatures(); 
      float temperature_2 = sensors2.getTempCByIndex(0);  // obtenir la température 2 en degré
      sensors3.requestTemperatures();
      float temperature_3 = sensors3.getTempCByIndex(0);  // obtenir la température 3 en degré
 
      /* envoie les températures sur la liaison série  */
 
      Serial.print(temperature_1, 1);
      Serial.print(",");   // les données sont séparées par des virgules.
      Serial.print(temperature_2, 1);
      Serial.print(",");   // les données sont séparées par des virgules.
      Serial.print(temperature_3, 1);
      Serial.println();
 
      /* Affiche les températures sur l'écran lcd */
 
      lcd.clear();   // effacer l'écran
 
      lcd.setCursor(0,0);   // mettre le curseur à la première colonne, première ligne
      lcd.print("T1=");  
      lcd.print(temperature_1, 1);
      //lcd.print((char)223);   // symbole °
      //lcd.print("C"); 
 
      lcd.setCursor(0,1);   // mettre le curseur à la première colonne, deuxième ligne
      lcd.print("T2=");  
      lcd.print(temperature_2, 1);
      //lcd.print((char)223);   // symbole °
      //lcd.print("C"); 
 
      lcd.setCursor(9,0);   // mettre le curseur à la première colonne, première ligne
      lcd.print("T3=");  
      lcd.print(temperature_3, 1);
      //lcd.print((char)223);   // symbole °
      //lcd.print("C");         
  }
}



Rappel sur l'installation d'une bibliothèque

Par exemple, pour installer la bibliothèque DallasTemperature.h :

  • Ouvrez l’IDE Arduino et aller dans Croquis –> Inclure une bibliothèque –> Gérer les bibliothèques ;



  • Sélectionner puis installer la bibliothèque indiquée ci-dessous.



arduino/plaque_grove_du_lycee_valin/comment_utiliser_un_capteur_de_temperature_grove.txt · Dernière modification : 02/01/2024 15:55 de Stéphane LAURENT

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki