Capteur de température Dallas

source : https://www.carnetdumaker.net/articles/mesurer-une-temperature-avec-un-capteur-1-wire-ds18b20-et-une-carte-arduino-genuino/

ds18b20_photoMatériel testé : sonde Dallas DS18B20 (datasheet MaximIntegrated)

Bibliothèque nécessaire : OneWire

Le capteur DS18B20 est un capteur de température numérique intégrant :

  • un capteur analogique
  • un convertisseur analogique / numérique 12bits
  • l’électronique de communication et alimentation.

Il communique via un bus 1-Wire qui permet de connecter (en série, parallèle ou en étoile) des composants avec seulement deux fils (un fil de données et un fil de masse).

Câblage

ds18b20_cablage                 ds18b20

Il est possible de brancher plusieurs capteurs DS sur le même bus, c’est à dire sur le même fil de donnée !

Programmation

Cas d’un seul capteur de modèle DS18B20

// Inclusion de la bibliothèque
#include <OneWire.h>

// Connecteur numérique relié à DQ
const byte DS_PIN = 7;


// Création de l'objet associé au DS18B20
OneWire ds(DS_PIN);


//
// Fonction de lecture de la température
//
void getTemperature(float *temperature) {
 byte data[9], addr[8]; // Données et Adresse du module DS18B20
 
 // Réinitialisation du bus
 ds.reset_search();

 // Recherche du capteur
 if (!ds.search(addr)) return;
 
 // Vérification de l'adresse reçue
 if (OneWire::crc8(addr, 7) != addr[7]) return;
 
 // Vérification du modèle de capteur (DS18B20)
 if (addr[0] != 0x28) return;

 // Sélection du capteur
 ds.reset();
 ds.select(addr);
 
 // Lancement de la mesure
 ds.write(0x44, 1);
 delay(800);
 
 // Resélection du capteur
 ds.reset();
 ds.select(addr);
 
 // Envoie d'une demande de lecture
 ds.write(0xBE);
 
 // Lecture des données
 for (byte i = 0; i < 9; i++) {
 data[i] = ds.read();
 }
 
 // Conversion des données en degrés Celcius
 *temperature = ((data[1] << 8) | data[0]) * 0.0625;
}



void setup() {
 Serial.begin(115200);
 }



void loop() {
 float temperature;
 
 // Lecture de la température
 getTemperature(&temperature);
 
 // Affichage de la température
 Serial.print(F("Temperature : "));
 Serial.print(temperature, 1);
 Serial.write(176); // Caractère degré
 Serial.write('C');
 Serial.println();
 }

Cas de plusieurs capteurs

Une solution est donnée sur le Carnet du Maker.

 

Vous aimerez aussi...

1 réponse

  1. Fançois P-G dit :

    merci beaucoup, parfait

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *