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



Pour information, un projet complémentaire permet d'acquérir des températures à l'aide d'un capteur DS18B20 Grove et d'une interface graphique.




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.




Statistiques du site

  • Cette page a été consultée par 3 visiteurs aujourd'hui.
  • Cette page a été consultée par 442 visiteurs depuis le 17/04/2024.
arduino/plaque_grove_du_lycee_valin/comment_utiliser_un_capteur_de_temperature_grove.txt · Dernière modification : 28/06/2024 19:25 de Stéphane LAURENT

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki