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