Objectifs pédagogiques
Les principaux objectifs de ce sujet de travaux pratique sont :
- d'expérimenter la mise en œuvre d'un capteur de température numérique de type sonde, avec une solution d'affichage embarquée (carte à microcontrôleur écran LCD) ;
- de procéder à l'étalonnage de ce capteur par des mesures de référence validées par des instruments plus précis (thermomètres de laboratoire).
C'est aussi l'occasion de découvrir deux technologies de bus entre des périphériques et une carte à microcontrôleur (I²C, 1‑Wire).
Pour traiter ce sujet de travaux pratiques, il est recommandé d'avoir quelques connaissances théorique sur la notion de température ainsi que le diagramme de phase de l'eau.
Mise en situation
Montage expérimental
Tous les exercices sont à traiter en laboratoire de physique avec de véritables composants et instruments de mesure. Ils exploitent le montage électronique expérimental reproduit schématiquement sur la figure ci‑dessous.
Ce montage nécessite :
- une carte Arduino Mega R3 ou équivalente (avec un microprocesseur à cœur AVR 8 bits), et son cordon USB pour l'alimentation électrique et la liaison au poste de travail (PC) ;
- une alimentation secteur 12 VDC (1 A max.) à connecteur barrel jack ⌀5,5 × 2,1 mm ;
- un capteur de température Dallas DS18B20 conditionné en sonde IP67 (supportant l'immersion dans l'eau) ainsi que son module de connexion implémentant le bus 1‑Wire ;
- un écran LCD rétroéclairé 20 × 4 à bus I²C et monté sur pieds (entretoises) ;
- un tournevis de précision à empreinte cruciforme PH1 pour régler la luminosité de l'écran ;
- un chronomètre précis à la seconde près (une montre à trotteuse ou digitale).
Les composants sont fournis dans une boîte de TP pour chaque binôme. Tout ce matériel doit être remis soigneusement à l'état initial en fin de séance.
Par ailleurs, les mesures pour l'étalonnage du capteur nécessitent deux dispositifs partagés :
- un bain de glace fondante d'eau déminéralisée conditionné dans un récipient adiabatique (bouteille thermos) ;
- un bain d'eau conditionné dans un récipient (bol en acier inoxydable) à paroi verticale isolée, maintenu à température variable entre 20 et 40 °C par une plaque chauffante avec un agitateur rotatif ;
ainsi que deux thermomètres de laboratoire ayant une résolution de 0,1 °C, jouant le rôle d'instruments de référence pour contrôler les températures des bains. Ils sont numérotés 1 & 2 pour ne pas être confondus.
Les mesures sont à enregistrer de façon collective sur un poste de travail commun à proximité de ces dispositifs, dans une seule feuille de calcul qui regroupe les données de tous les capteurs mis en œuvre par l'ensemble du groupe d'étudiants.
Travail demandé
Effectuer les manipulations en veillant au respect de l'ordre des opérations.
Sur le poste de travail commun, enregistrer au fur et à mesure les fichiers dans un répertoire de TP nommé TP_P3-1, lui‑même placé dans un répertoire principal nommé PHYSIQUE, lui‑même placé dans un dossier personnel d'étudiant.
- En particulier, il faut y placer la feuille de calculs téléchargeable au lien suivant ; elle est à compléter avec les mesures physiques demandées en cours d'expérimentation.
- De plus, le fichier de code source Arduino doit être placé dans un répertoire de projet homonyme (same basename, cf. chap. C2‑I C).
Attention ! Pour des questions de sécurité, le téléversement du programme dans la carte à microcontrôleur doit être effectué avant le câblage du montage. Sinon, on risque d'avoir un comportement inattendu et indésirable du montage lors du raccordement de la carte au poste de travail dû à l'exécution d'un programme installé auparavant.
Répondre sur cahier ou fichier de texte aux questions qui nécessitent une explication littérale.
- Préparation du montage de mesure
- Sur le poste de travail, dans le répertoire de TP, créer un répertoire de projet nommé
ds18b20Studyet dedans un fichier homonymeds18b20Study.ino. Ouvrir ce fichier avec l'application Arduino IDE et, dans l'éditeur de code, copier‑coller le programme de monitoring thermique ci‑dessous. - Sur l'application Arduino IDE, vérifier que les bibliothèques requises par le programme sont installées (bien vérifier la concordance des noms des auteurs). Si tel n'est pas le cas, procéder à leur installation (cf. le cours, chap. C1‑III ).
- Raccorder la carte et sélectionner le type de carte
Uno(il doit être associé à un port COM/USB numéroté du poste de travail). Procéder au téléversement du programme (s'assurer que l'opération s'est bien déroulée grâce aux options du menuFile/Preferences…). - Câbler le montage décrit supra en veillant au respect des couleurs des fils représentés sur la figure. Appeler l'enseignant avant de rebrancher la carte au poste de travail.
- Si besoin, à l'aide du tournevis cruciforme (PH1) fourni, régler le contraste de l'afficheur en tournant délicatement la vis du trimmer W situé sur le module de communication I2C placé sous l'écran.
- Si l'écran ne s'allume pas du tout alors que brille la led verte LD1 du module de communication I2C placé sous l'écran, vérifier le bon contact du cavalier monté sur les broches VCC et GND sur ce même module.
- Débrancher la carte du poste de travail et la raccorder à l'alimentation secteur 12 VDC près du bain d'expérimentation thermique. Vérifier à nouveau que le programme s'exécute correctement.
- Mesure en bain de glace fondante (point de référence 0 °C)
- agir avec le plus grand soin, sans gestes brusques, pour ne pas renverser les récipients contenant de l'eau ;
- régulièrement éponger les gouttes d'eau répandues sur le plan de travail et essuyer les sondes après sortie de bain pour prévenir toute éclaboussure sur les montages et autres dispositifs électroniques non protégés.
- Placer les sondes sur la table juste à côté de celles des thermomètres de référence.
- Plonger les sondes des deux thermomètres de référence dans le bain de glace fondante et simultanément, déclencher le chronomètre.
- Retirer les sondes du bain et fermer le récipient isotherme.
- Mesures en bain à température contrôlée (10 à 40 °C)
- agir avec le plus grand soin, sans gestes brusques, pour ne pas renverser les récipients contenant de l'eau ;
- régulièrement éponger les gouttes d'eau répandues sur le plan de travail et essuyer les sondes après sortie de bain pour prévenir toute éclaboussure sur les montages et autres dispositifs électroniques non protégés.
- Sous la surveillance de l'enseignant, remplir le récipient aux 3/4 avec de l'eau froide. Y plonger les sondes des thermomètres de référence ainsi que celles des capteurs, de sorte qu'elles soient toutes regroupées dans une même zone, en particulier à la même profondeur.
- Ajuster la température (soit avec de l'eau tiède, soit avec un glaçon) pour atteindre la valeur de 10 °C ±1 °C, aussi stabilisée que possible.
- Chauffer un peu le bain – tourner très peu le bouton du thermostat – pour finir par stabiliser la température à la valeur de 20 °C ±1 °C. Ce réglage prend plusieurs minutes, il demande de la patience.
- Recommencer ces manipulations pour effectuer des mesures à 30 °C puis à 40 °C, sachant que :
- là encore, il faut surtout ne pas chauffer trop vite, au risque sinon de dépasser la valeur cible (dans ce cas, ajouter des glaçons pour refroidir le bain) ;
- ces valeurs de température sont d'autant plus difficiles à stabiliser qu'elles sont éloignées de celle de la température ambiante. Il ne faut donc pas espérer une stabilisation durable.
- Une fois toutes les mesures effectuées et reportées, éteindre puis débrancher la plaque chauffante. Retirer les sondes du bain et les essuyer. Débrancher aussi l'alimentation des capteurs pour les mettre hors‑service. Éteindre les thermomètres de référence. Appeler l'enseignant pour évacuer l'eau du récipient et ranger le matériel.
#include <OneWire.h> // For DS18B20 data (Jim Studt et alt.)
#include <DallasTemperature.h> // DS18B20 and other sensors (Miles Burton)
#include <Wire.h>
#include <LiquidCrystal_I2C.h> // LCD screens (F. de Brabander)
const int SENSOR_VCC_PIN = 13; // will be constantly set to HIGH -> VCC
const int SENSOR_DAT_PIN = 12; // Grouped 3-pin connector GND-VCC-DAT
OneWire oneWire(SENSOR_DAT_PIN);
DallasTemperature ds18b20sensor(&oneWire);
LiquidCrystal_I2C lcdScreen(0x27, 20, 4);
void setup()
{
pinMode(SENSOR_VCC_PIN, OUTPUT);
digitalWrite(SENSOR_VCC_PIN, HIGH);
lcdScreen.init();
lcdScreen.clear();
lcdScreen.noCursor();
lcdScreen.setBacklight(1);
lcdScreen.backlight();
lcdScreen.print("LCD screen ready");
delay(1000);
ds18b20sensor.begin();
}
void loop()
{
ds18b20sensor.requestTemperatures();
float tempInCelsius = ds18b20sensor.getTempCByIndex(0);
lcdScreen.clear();
lcdScreen.setCursor(0, 0);
lcdScreen.print("Temp. ");
lcdScreen.print(tempInCelsius, 2);
delay(5000);
}
Les manipulations sont à effectuer par groupes de 4 binômes. On veillera particulièrement à :
Les manipulations sont à effectuer par groupes de 4 binômes. Là encore, on veillera particulièrement à :
Attention ! Malgré l'isolation des parois du récipient et l'inertie thermique de l'ensemble, la température du bain varie quand même un peu, par échange thermique en surface. Il faut ne pas perdre de temps lors des relevés. Il est donc conseillé de procéder en équipe, chaque étudiant étant responsable soit de la mesure d'un capteur, soit d'un thermomètre de référence, soit encore de la saisie des valeurs le poste de travail.