Guide du capteur de température DS18B20 avec Arduino

Guide du capteur de température DS18B20 avec Arduino

Ce guide montre comment utiliser le capteur de température DS18B20 avec la carte Arduino. Vous apprendrez à câbler le capteur, à installer les bibliothèques requises et à obtenir la température d’un ou plusieurs capteurs DS18B20.

Guide du capteur de température DS18B20 avec Arduino

Vous aimerez peut-être aussi lire d’autres guides DS18B20 :

Présentation du capteur de température DS18B20

le Capteur de température DS18B20 est un capteur de température numérique à un fil. Cela signifie qu’il ne nécessite qu’une seule ligne de données (et GND) pour communiquer avec l’Arduino.

Il peut être alimenté par une alimentation externe ou il peut être alimenté par la ligne de données (appelé « mode parasite »), ce qui élimine le besoin d’une alimentation externe.

Schéma des broches de brochage du capteur de température DS18B20

Le tableau suivant montre comment câbler le capteur DS18B20 à votre carte Arduino :

DS18B20 Arduino
GND GND
QD N’importe quelle broche numérique (avec résistance pull-up de 4,7 kOhm)
VDD 5V (mode normal) ou GND (mode parasite)

Chaque capteur de température DS18B20 possède un code série 64 bits unique. Cela vous permet de câbler plusieurs capteurs au même câble de données. Ainsi, vous pouvez obtenir la température de plusieurs capteurs en utilisant une seule broche numérique Arduino.

Le capteur de température DS18B20 est également disponible en version étanche.

Capteur de température DS18B20 version étanche

Voici un résumé des spécifications les plus pertinentes du capteur de température DS18B20 :

  • Communique via une communication par bus à un fil
  • Plage d’alimentation: 3.0V à 5.5V
  • Plage de température de fonctionnement : -55 °C à +125 °C
  • Précision +/-0,5 ºC (entre -10 ºC et 85 ºC)

Pour plus d’informations consultez le Fiche technique DS18B20.

Pièces requises

Pour vous montrer comment fonctionne le capteur, nous allons créer un exemple simple qui lit la température du capteur DS18B20 avec l’Arduino et affiche les valeurs sur le moniteur série Arduino.

Voici une liste des pièces dont vous avez besoin pour terminer ce tutoriel

Vous pouvez utiliser les liens précédents ou aller directement sur MakerAdvisor.com/tools pour trouver toutes les pièces pour vos projets au meilleur prix !

Guide du capteur de temperature DS18B20 avec Arduino

Schématique

Le capteur peut fonctionner selon deux modes :

  • Mode normal: Une connexion à 3 fils est nécessaire. Vous fournissez l’alimentation à la broche VDD. Voici le schéma à suivre :
Schéma de câblage schématique du capteur de température DS18B20 en mode normal
  • Mode parasite : Vous n’avez besoin que de données et de GND. Le capteur tire sa puissance de la ligne de données. Dans ce cas, voici le schéma que vous devez suivre :
Schéma de câblage du capteur de température DS18B20 en mode parasite

Vous pouvez lire la température de plusieurs capteurs en même temps en utilisant une seule broche numérique Arduino. Pour cela, il vous suffit de câbler ensemble toutes les broches de données des capteurs à une broche numérique Arduino.

Code de téléchargement – DS18B20 unique

Pour s’interfacer avec le capteur de température DS18B20, vous devez installer le Bibliothèque One Wire de Paul Stoffregen et le Bibliothèque de température de Dallas. Suivez les étapes suivantes pour installer ces bibliothèques.

Installation des bibliothèques

1. Ouvrez votre IDE Arduino et accédez à Esquisser > Inclure la bibliothèque > Gérer les bibliothèques. Le gestionnaire de bibliothèque devrait s’ouvrir.

2. Tapez « Un fil» dans le champ de recherche et installez la bibliothèque OneWire de Paul Stoffregen.

Installation de la bibliothèque OneWire Arduino IDE

3. Ensuite, recherchez « Dallas» et installez la bibliothèque Dallas Temperature de Miles Burton.

Installation de la bibliothèque Dallas température DS18B20 Arduino IDE

Après avoir installé les bibliothèques nécessaires, téléchargez le code suivant sur votre carte Arduino. Ce croquis est basé sur un exemple de la bibliothèque Dallas Temperature.

/*********
  Rui Santos
  Complete project details at https://www.raspberryme.com  
  Based on the Dallas Temperature Library example
*********/

#include <OneWire.h>
#include <DallasTemperature.h>

// Data wire is conntec to the Arduino digital pin 4
#define ONE_WIRE_BUS 4

// Setup a oneWire instance to communicate with any OneWire devices
OneWire oneWire(ONE_WIRE_BUS);

// Pass our oneWire reference to Dallas Temperature sensor 
DallasTemperature sensors(&oneWire);

void setup(void)
{
  // Start serial communication for debugging purposes
  Serial.begin(9600);
  // Start up the library
  sensors.begin();
}

void loop(void){ 
  // Call sensors.requestTemperatures() to issue a global temperature and Requests to all devices on the bus
  sensors.requestTemperatures(); 
  
  Serial.print("Celsius temperature: ");
  // Why "byIndex"? You can have more than one IC on the same bus. 0 refers to the first IC on the wire
  Serial.print(sensors.getTempCByIndex(0)); 
  Serial.print(" - Fahrenheit temperature: ");
  Serial.println(sensors.getTempFByIndex(0));
  delay(1000);
}

Afficher le code brut

Il existe de nombreuses façons d’obtenir la température à partir des capteurs de température DS18B20. Si vous n’utilisez qu’un seul capteur, c’est l’un des moyens les plus faciles et les plus simples.

Arduino avec capteur de température DS18b20

Comment fonctionne le code

Commencez par inclure le Un fil et le DallasTempérature bibliothèques.

#include <OneWire.h>
#include <DallasTemperature.h>

Créez les instances nécessaires pour le capteur de température. Le capteur de température est connecté à Broche 4.

// Data wire is conntec to the Arduino digital pin 4
const int oneWireBus = 4;          
// Setup a oneWire instance to communicate with any OneWire devices
OneWire oneWire(oneWireBus);
// Pass our oneWire reference to Dallas Temperature sensor 
DallasTemperature sensors(&oneWire);

Dans le mettre en place(), initialisez le moniteur série à un débit en bauds de 9 600.

Serial.begin(9600);

Initialiser le capteur de température DS18B20 :

sensors.begin();

Dans le boucler() c’est là que vous aurez la température. Vous devez appeler le demandeTempératures() méthode avant d’obtenir la valeur de température réelle.

sensors.requestTemperatures(); 

Ensuite, obtenez et imprimez la température en degrés Celsius. Pour obtenir la température en degrés Celsius, utilisez le getTempCByIndex() méthode :

Serial.print(sensors.getTempCByIndex(0)); 

Ou utilisez le getTempFByIndex() pour obtenir la température en degrés Fahrenheit.

Serial.println(sensors.getTempFByIndex(0));

le getTempCByIndex() et le getTempFByIndex() Les méthodes acceptent l’indice du capteur de température. Parce que nous n’utilisons qu’un seul capteur, son index est 0. Si vous avez plus d’un capteur, vous utilisez l’index 0 pour le premier capteur, l’index 1 pour le deuxième capteur, et ainsi de suite.

De nouvelles lectures de température sont demandées toutes les secondes.

delay(5000);

Manifestation

Après avoir téléchargé le code, ouvrez le moniteur série Arduino IDE à une vitesse de 9600 bauds. Vous devriez obtenir la température affichée en degrés Celsius et Fahrenheit :

Test du capteur de température DS18b20 avec le moniteur série Arduino IDE

Obtenir la température à partir de plusieurs capteurs DS18B20

Obtenir la température à partir de plusieurs capteurs DS18B20

Le capteur de température DS18B20 communique à l’aide d’un protocole à un fil et chaque capteur a un code série 64 bits unique, vous pouvez donc lire la température de plusieurs capteurs à l’aide d’une seule broche numérique Arduino.

Schématique

Pour lire la température de plusieurs capteurs, il vous suffit de câbler toutes les lignes de données ensemble, comme indiqué dans le schéma suivant :

Schéma de câblage des capteurs de température Arduino Multiple DS18B20

Code de téléchargement – Plusieurs DS18B20

Ensuite, téléchargez le code suivant. Il recherche tous les appareils sur la broche 4 et imprime la température de chacun. Ce croquis est basé sur l’exemple fourni par la bibliothèque DallasTemperature.

/*
 * Rui Santos
 * Complete Project Details https://www.raspberryme.com
*/

#include <OneWire.h>
#include <DallasTemperature.h>

// Data wire is plugged into port 4 on the Arduino
#define ONE_WIRE_BUS 4
// Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)
OneWire oneWire(ONE_WIRE_BUS);

// Pass our oneWire reference to Dallas Temperature. 
DallasTemperature sensors(&oneWire);

int numberOfDevices; // Number of temperature devices found

DeviceAddress tempDeviceAddress; // We'll use this variable to store a found device address

void setup(void) {
  // start serial port
  Serial.begin(9600);
  
  // Start up the library
  sensors.begin();
  
  // Grab a count of devices on the wire
  numberOfDevices = sensors.getDeviceCount();
  
  // locate devices on the bus
  Serial.print("Locating devices...");
  Serial.print("Found ");
  Serial.print(numberOfDevices, DEC);
  Serial.println(" devices.");

  // Loop through each device, print out address
  for(int i=0;i<numberOfDevices; i++) {
    // Search the wire for address
    if(sensors.getAddress(tempDeviceAddress, i)) {
      Serial.print("Found device ");
      Serial.print(i, DEC);
      Serial.print(" with address: ");
      printAddress(tempDeviceAddress);
      Serial.println();
		} else {
		  Serial.print("Found ghost device at ");
		  Serial.print(i, DEC);
		  Serial.print(" but could not detect address. Check power and cabling");
		}
  }
}

void loop(void) { 
  sensors.requestTemperatures(); // Send the command to get temperatures
  
  // Loop through each device, print out temperature data
  for(int i=0;i<numberOfDevices; i++) {
    // Search the wire for address
    if(sensors.getAddress(tempDeviceAddress, i)){
		
		// Output the device ID
		Serial.print("Temperature for device: ");
		Serial.println(i,DEC);

    // Print the data
    float tempC = sensors.getTempC(tempDeviceAddress);
    Serial.print("Temp C: ");
    Serial.print(tempC);
    Serial.print(" Temp F: ");
    Serial.println(DallasTemperature::toFahrenheit(tempC)); // Converts tempC to Fahrenheit
    } 	
  }
  delay(5000);
}

// function to print a device address
void printAddress(DeviceAddress deviceAddress) {
  for (uint8_t i = 0; i < 8; i++) {
    if (deviceAddress[i] < 16) Serial.print("0");
      Serial.print(deviceAddress[i], HEX);
  }
}

Afficher le code brut

Comment fonctionne le code

Le code utilise plusieurs méthodes utiles pour gérer plusieurs capteurs DS18B20.

Vous utilisez le getDeviceCount() méthode pour obtenir le nombre de capteurs DS18B20 sur la ligne de données.

numberOfDevices = sensors.getDeviceCount();

le obtenirAdresse() la méthode trouve les adresses des capteurs :

if(sensors.getAddress(tempDeviceAddress, i)){

L’adresse est unique pour chaque capteur. Ainsi, chaque capteur peut être identifié par son adresse.

Ensuite, vous utilisez le getTempC() méthode qui accepte comme argument l’adresse de l’appareil. Avec cette méthode, vous pouvez obtenir la température à partir d’un capteur spécifique :

float tempC = sensors.getTempC(tempDeviceAddress);

Pour obtenir la température en degrés Fahrenheit, vous pouvez utiliser le getTemF(). Alternativement, vous pouvez convertir la température en degrés Celsius en degrés Fahrenheit comme suit :

DallasTemperature::toFahrenheit(tempC)

Conclusion

Le capteur de température DS18B20 est un capteur numérique à un fil. Pour utiliser ce capteur avec l’Arduino, vous avez besoin des bibliothèques OneWire et DallasTemperature. Vous pouvez utiliser un capteur ou plusieurs capteurs sur la même ligne de données car vous pouvez identifier chaque capteur par son adresse unique.

Maintenant, vous pouvez aller plus loin dans ce projet et afficher les lectures de vos capteurs sur un écran OLED, par exemple.

Nous avons plus de tutoriels pour d’autres capteurs compatibles Arduino que vous pourriez trouver utiles :

Nous espérons que vous avez trouvé ce guide utile.

Si vous souhaitez en savoir plus sur Arduino, consultez nos ressources :

Merci d’avoir lu!

Mis à jour le 2 juillet 2019

  • AZDelivery 2 x 1m DS18B20 Cable Capteur de Température Numérique TO92-55 - +125°C en Acier Inoxydable, Imperméable Compatible avec Arduino et Raspberry Pi incluant Un E-Book!
    ✅ Les capteurs de température AZDelivery avec DS18B20 original, de haute qualité avec boîtier en acier inoxydable (6 x 30mm). ✅ Le capteur de température DS18B20 vous permettra de mesurer et de lire facilement la température via les bibliothèques disponibles et open-source. ✅ Notre capteur de température DS18B20 peut être utilisé avec Raspberry Pi et microcontrôleur. ✅ Avec les capteurs de température AZDelivery imperméables, vous pouvez maintenant mesurer des températures comprises entre -55 et 125 degrés Celsius en dessous de l'eau. ✅ Ce produit inclut un E-Book qui fournit des informations utiles sur la façon de commencer votre projet. Il permet une installation rapide et fait gagner du temps sur le processus de configuration. On y trouve une série d'exemples d'applications, des guides d'installation complets et des bibliothèques.
  • AZDelivery 5 x 1m DS18B20 Cable Capteur de Température Numérique TO92-55 - +125°C en Acier Inoxydable, Imperméable Compatible avec Arduino et Raspberry Pi incluant Un E-Book!
    ✅ Obtenez maintenant 5 x capteurs de température numériques en acier inoxydable AZDelivery 1M avec câble DS18B20 à un prix spécial avec réduction sur la quantité achetée! ✅ Les capteurs de température AZDelivery avec DS18B20 original, de haute qualité avec boîtier en acier inoxydable (6 x 30mm).Le capteur de température DS18B20 vous permettra de mesurer et de lire facilement la température via les bibliothèques disponibles et open-source. ✅ Notre capteur de température DS18B20 peut être utilisé avec Raspberry Pi et microcontrôleur. ✅ Avec les capteurs de température AZDelivery imperméables, vous pouvez maintenant mesurer des températures comprises entre -55 et 125 degrés Celsius en dessous de l'eau. ✅ Ce produit inclut un E-Book qui fournit des informations utiles sur la façon de commencer votre projet. Il permet une installation rapide et fait gagner du temps sur le processus de configuration. On y trouve une série d'exemples d'applications, des guides d'installation complets et des bibliothèques.
  • AZDelivery 10 x DS18B20 Capteur de Température Numérique TO92-55°C - +125°C Compatible avec Arduino et Raspberry Pi incluant Un E-Book!
    ✅ Obtenez maintenant 10 x DS18B20 Capteur de température numérique TO92 à un prix spécial avec réduction sur la quantité achetée. ✅ Ces capteurs DS18B20 sont très faciles à utiliser grâce à la communication via un seul câble. Les capteurs de température DS18B20 ont une large plage de mesure, de -55°C à 125°C. ✅ DS18B20 vous fourniront une lecture précise de la température grâce à une résolution de sortie de 12 bits. ✅ Peut être utilisé dans différents projets grâce au support de tension de fonctionnement de 3,3 V et 5 V. ✅ Ce produit inclut un E-Book qui fournit des informations utiles sur la façon de commencer votre projet. Il permet une installation rapide et fait gagner du temps sur le processus de configuration. On y trouve une série d'exemples d'applications, des guides d'installation complets et des bibliothèques.