Mesurer des températures avec des capteurs DS18B20
Objectif
L'objectif de ce montage est de mesurer simultanément deux températures avec des capteurs DS18B20.
Par exemple, en sciences physiques, on pourra visualiser “en direct” la courbe de solidification (ou de fusion) de l'eau en même temps que celle de l'eau salée.
En ajoutant un troisième capteur, on pourrait aussi superposer celle du cyclohexane.
Nous verrons aussi comment faire communiquer la carte Arduino avec Regressi pour exploiter les données acquises.
Pour une utilisation au lycée, le montage et le code sont donnés. Pour les plus réticents à utiliser un microcontrôleur, vous pouvez passer directement à la partie Acquisition des températures avec Regressi sur cette page.
Présentation du capteur de température
Le capteur de température DS18B20 permet de mesurer avec une assez bonne précision des températures allant de -55°C à +125°C.
C'est un capteur numérique de température .
Ce capteur communique avec l’Arduino grâce à un bus 1-Wire ou (OneWire).
Sur un bus 1-Wire, il est possible de connecter plusieurs capteurs de température.
Pour éviter tout risque de conflit, chaque capteur dispose d'une adresse unique attribuée lors de sa fabrication.
Exemple : l'adresse de notre capteur est 0x28, 0x44, 0x62, 0x79, 0x97, 0x05, 0x03, 0x51
Pour déterminer l'adresse d'un capteur 1-Wire, on peut utiliser le scanner sur le site du carnetdumaker.net avec le montage ci-dessous.
Montage
Sur ce schéma le capteur est représenté en format transistor mais au lycée nous l'utiliserons au format sonde étanche.
Au lycée, il ne sera pas nécessaire de faire le montage, il est prêt à l'emploi sur un shield.
Code
Le code permet d'afficher sur l'écran LCD les deux températures mesurer à l'aide des sondes DS18B20 et de les envoyer sur la liaison série pour être lus par Regressi.
Pour simplifier le code, nous utiliserons plusieurs bibliothèques :
- DallasTemperature.h pour les capteur de température ;
- OneWire.h pour le bus 1-Wire ;
- LiquidCrystal_I2C.h pour l'écran LCD.
Ces bibliothèques ne sont pas incluses de base dans le logiciel Arduino, il faudra les installer au préalable. (voir à la fin)
Le code Arduino pour deux capteurs DS18B20 (non Grove) sur un même bus 1-Wire :
Le code Arduino pour trois capteurs DS18B20 Grove :
Affichage des températures
En plus de l'écran LCD, les températures mesurées peuvent être affichées sur le moniteur série ou sur le traceur série.
Acquisition des températures avec Regressi
Il est possible d'acquérir les mesures de température directement dans Regressi avec une version récente (4.5.7).
- Dans le menu Fichier → Nouveau → Arduino / micro:bit :
- Avec le bouton Options, régler les paramètres de la liaison série pour que Regressi communique avec la carte Arduino.
- Cliquer sur le bouton Acquisition pour obtenir les mesures. Le graphique s'affiche automatiquement.
- Cliquer sur Stop pour arrêter l'acquisition.
- Cliquer sur traitements pour envoyer les données dans Regressi.
- Vous pouvez maintenant traiter ces données avec les fonctions habituelles de Regressi.
Exemple de courbes de fusion obtenues au lycée
Courbes de fusion obtenues avec 3 capteurs
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.