L’un des moyens les plus simples et les moins chers d’ajouter la détection de la température dans votre projet Arduino est d’utiliser le capteur de température à 1 fil DS18B20. Ces capteurs sont assez précis et ne nécessitent aucun composant externe pour fonctionner. Ainsi, avec seulement quelques connexions et un peu de code Arduino, vous détecterez la température en un rien de temps !

Capteur de température 1-Wire DS18B20

DS18B20 est un capteur de température à interface 1-Wire fabriqué par Dallas Semiconductor Corp. L’interface unique 1-Wire® ne nécessite qu’une seule broche numérique pour une communication bidirectionnelle avec un microcontrôleur.

Le capteur se présente généralement sous deux facteurs de forme. L’un qui vient dans le paquet TO-92 ressemble exactement à un transistor ordinaire. L’autre dans un style de sonde étanche qui peut être plus utile lorsque vous avez besoin de mesurer quelque chose de loin, sous l’eau ou sous le sol.

Types de capteur de température DS18B20

Le capteur de température DS18B20 est assez précis et ne nécessite aucun composant externe pour fonctionner. Il peut mesurer des températures de -55°C à +125°C avec une précision de ±0,5°C.

La résolution du capteur de température est configurable par l’utilisateur sur 9, 10, 11 ou 12 bits. Cependant, la résolution par défaut à la mise sous tension est de 12 bits (soit une précision de 0,0625°C).

Le capteur peut être alimenté par une alimentation de 3V à 5,5V et ne consomme que 1mA pendant les conversions de température actives.

Voici les spécifications complètes:

.

Alimentation 3V à 5.5V
Consommation de courant 1mA
Plage de température -55 à 125°C
Précision ±0.5°C
Résolution 9 à 12 bits (sélectionnable)
Temps de conversion < 750ms

Multiples DS18B20 sur un seul bus

L’un des plus grands avantages des DS18B20 est que plusieurs DS18B20 peuvent coexister sur le même bus à 1.fil. Comme chaque DS18B20 a un code série unique de 64 bits gravé en usine, il est plus facile de les différencier les uns des autres.

Cette caractéristique peut être un énorme avantage lorsque vous voulez contrôler de nombreux DS18B20 répartis sur une grande zone.

Pour savoir comment lire la température de plusieurs capteurs de température DS18B20, veuillez consulter ce tutoriel.

Interfaçage de plusieurs capteurs de température numériques DS18B20 avec Arduino

L’un des plus grands avantages des DS18B20 est que plusieurs DS18B20 peuvent coexister sur le même bus 1-Wire. Comme chaque DS18B20 a un unique…

Pinout du capteur DS18B20

GND est une broche de masse.

DQ est un bus de données 1-Fil qui doit être connecté à une broche numérique sur le microcontrôleur.

La brocheVDD alimente le capteur qui peut être entre 3,3 et 5V.

Câblage du capteur de température DS18B20 à Arduino

Assez de théorie, passons à la pratique ! Branchons le DS18B20 à l’Arduino.

Les connexions sont assez simples. Commencez par connecter VDD à la broche de sortie 5V de l’Arduino et GND à la masse.

Puis connectez la broche de signal numérique restante DQ à la broche numérique 2 de l’arduino. Vous aurez également besoin d’ajouter la résistance pull-up de 4,7k entre la broche de signal et la broche d’alimentation pour garder le transfert de données stable. (Les pull-up internes sur l’arduino ne fonctionnent pas)

Faites attention à mettre la DS18B20 dans le bon sens. Si vous le mettez dans le mauvais sens, il va chauffer et ensuite se casser.

Câblage du capteur de température DS18B20 à l’Arduino

Si vous utilisez la version étanche du DS18B20, connectez la bande rouge au 5V, le noir se connecte à la masse et la bande jaune est la donnée qui va à la broche numérique 2 de l’arduino. Vous devez encore connecter une résistance pullup de 4,7K des données à 5V.

Câblage du capteur de température étanche DS18B20 à Arduino

Installation de la bibliothèque pour DS18B20

Le protocole Dallas 1-Wire est quelque peu complexe, et nécessite un tas de code pour analyser la communication. Pour masquer cette complexité inutile, nous allons installer la bibliothèque DallasTemperature.h afin de pouvoir émettre des commandes simples pour obtenir des relevés de température à partir du capteur.

Pour installer la bibliothèque, naviguez vers l’esquisse > Inclure la bibliothèque > Gérer les bibliothèques…Attendez que le gestionnaire de bibliothèques télécharge l’index des bibliothèques et mette à jour la liste des bibliothèques installées.

Filtrez votre recherche en tapant ‘ds18b20’. Il devrait y avoir quelques entrées. Cherchez DallasTemperature de Miles Burton. Cliquez sur cette entrée, puis sélectionnez Installer.

Cette bibliothèque Dallas Temperature est une bibliothèque spécifique au matériel qui gère des fonctions de niveau inférieur. Elle doit être jumelée avec la bibliothèque One Wire Library pour communiquer avec n’importe quel dispositif à un fil, pas seulement la DS18B20. Installez également cette bibliothèque.

Code Arduino

Le croquis suivant vous donnera une compréhension complète sur la façon de lire les lectures de température du capteur de température DS18B20 et peut servir de base pour des expériences et des projets plus pratiques.

#include <OneWire.h>#include <DallasTemperature.h>// Data wire is plugged into digital pin 2 on the Arduino#define ONE_WIRE_BUS 2// Setup a oneWire instance to communicate with any OneWire deviceOneWire oneWire(ONE_WIRE_BUS);// Pass oneWire reference to DallasTemperature libraryDallasTemperature sensors(&oneWire);void setup(void){ sensors.begin();// Start up the library Serial.begin(9600);}void loop(void){ // Send the command to get temperatures sensors.requestTemperatures(); //print the temperature in Celsius Serial.print("Temperature: "); Serial.print(sensors.getTempCByIndex(0)); Serial.print((char)176);//shows degrees character Serial.print("C | "); //print the temperature in Fahrenheit Serial.print((sensors.getTempCByIndex(0) * 9.0) / 5.0 + 32.0); Serial.print((char)176);//shows degrees character Serial.println("F"); delay(500);}

Voici à quoi ressemble la sortie dans le moniteur série.

Explication du code:

Le sketch commence par inclure les bibliothèques OneWire.h et DallasTemperature.h et par déclarer la broche Arduino à laquelle la broche de signal du capteur est connectée.

#include <OneWire.h>#include <DallasTemperature.h>#define ONE_WIRE_BUS 2

Puis nous créons un objet one-wire en passant la broche de signal du capteur à son constructeur. Cet objet à un fil nous permet de communiquer avec n’importe quel dispositif à un fil, pas seulement avec la DS18B20. Afin de communiquer avec le capteur DS18B20, nous devons créer un objet de la bibliothèque DallasTemperature et passer la référence de l’objet one-wire comme paramètre.

OneWire oneWire(ONE_WIRE_BUS);DallasTemperature sensors(&oneWire);

Une fois qu’un objet DallasTemperature est créé, nous pouvons émettre les commandes simples ci-dessous pour interagir avec le capteur.

  • begin() fonction recherche les capteurs connectés sur le bus et définit la résolution binaire (12 bits) pour chacun.
  • requestTemperatures() fonction envoie une commande pour tous les capteurs sur le bus pour effectuer une conversion de température.
  • getTempCByIndex(deviceIndex) fonction lit et renvoie la lecture de température du capteur. deviceIndex n’est rien d’autre que l’emplacement du capteur sur le bus. Si vous n’utilisez qu’un seul DS18B20 sur le bus, mettez-le à 0.

Autres fonctions utiles dans la bibliothèque DallasTemperature.h

Il existe quelques fonctions utiles que vous pouvez utiliser avec l’objet DallasTemperature. Quelques-unes d’entre elles sont énumérées ci-dessous :

  • setResolution()la fonction définit la résolution du convertisseur analogique-numérique interne de la DS18B20 à 9, 10, 11 ou 12 bits, correspondant à des incréments de 0,5°C, 0,25°C, 0,125°C et 0,0625°C, respectivement.
  • bool getWaitForConversion()la fonction renvoie la valeur de l’indicateur waitForConversion. Cela peut être utile lorsque vous voulez vérifier si une conversion de température est terminée.
  • setHighAlarmTemp() & setLowAlarmTemp() fonction définit les alarmes internes de haute & basse température pour un dispositif en degrés Celsius. La plage valide est de -55 à 125°C
  • bool hasAlarm() fonction renvoie vrai si le dispositif a une condition d’alarme lorsque la température dépasse le réglage de l’alarme haute & basse température.

admin

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.

lg