Mesure température – groupe 12
Elève1, élève 2, élève3
Objectif
Acquérir et enregistrer la température à l’intérieur et à l’extérieur de la nacelle, pendant tout le vol.
Challenge : comparer les performances (précision, sensibilité, …) entre plusieurs moyens de mesure :
- moyens « modernes » : capteurs analogiques ou numériques couramment utilisés (thermistance, PT, DHT, DS, …)
- moyens « physiques » : utilisation d’une bilame (lame bimétallique)

Tâches à réaliser
Analyse fonctionnelle

(amplitudes de températures, conditions susceptibles de perturber la mesure, …)
Problème : Réussir à capturer la température au cours de l’expérience en fonction de l’attitude et / ou de la durée.
– Mesurer entre -60 à 30 °C
1 capteur parmi :
DS18B20 : adapté pour l’Arduino / prix correct mesure entre -55 et +125 °C
(http://automacile.fr/ds18b20-capteur-de-temperature-one-wire-arduino/)
thermistance : pas assez de résistance (+25 °C)
PT100 : trop cher
DHT22 : pas assez résistant (-40 / +80°C)
Mise en œuvre de différents capteurs « modernes »
- DS18B20
- thermistance
- PT100
- DHT22
Capteur DS18B20
Montage :
Programme :
// 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();
}
Capteur thermistance
Programme :
int ThermistorPin = A0;
int Vo;
float R1 = 10000; // value of R1 on board
float logR2, R2, T;
float c1 = 0.001129148, c2 = 0.000234125, c3 = 0.0000000876741; //steinhart-hart coeficients for thermistor
void setup() {
Serial.begin(115200);
}
void loop() {
Vo = analogRead(ThermistorPin);
R2 = R1 * (1023.0 / (float)Vo - 1.0); //calculate resistance on thermistor
logR2 = log(R2);
T = (1.0 / (c1 + c2*logR2 + c3*logR2*logR2*logR2)); // temperature in Kelvin
T = T - 273.15; //convert Kelvin to Celcius
Serial.print("Temperature: ");
Serial.print(T);
Serial.println(" C");
delay(500);
}
Réalisation d’un capteur « maison »
Calibrage des capteurs
expérimentation en laboratoire, relations de comportement, application de correctifs, …
Analyse des performances
prix, précision, rapidité, justesse, poids, …


Ce projet s’est bien déroulé. Le jour du lancé malgré des imprévus et les conditions climatiques difficiles le ballon a bien décollé du Puy-de-Dôme.
Mallory, Mohcen, Dorian