/* * Lecture de la température via le capteur TMP36GZ * * - utilisation de la référence de tension interne à 1.1V * - la température maximale mesurable sera 60°C * * le capteur fournit une tension entre 0.100 et 1.700 volts * pour une plage de température de -40 à +120 °Cenviron * - à 50°C , la tension vaut 1.000 V. * - l'incrément de tension est de 0.010 V/°C */ // paramètres réglables float dt = 1; // interval de mesure en s int N = 1000; // nbre echantillons // paramètres fixes int temperaturePin = 0; // entrée analogique 0 float temperature = 0.0; // valeur température float t_0 = 0.0; // origine des temps en s float t = 0.0; // durée depuis l'origine en s float t_old = -1.0; // derniere date de mesure en s const float NUM2VOLT_refInt = 0.0010742; // 1.1V/1024 float tension = 0.0; // tension moyenne mesurée float buffer = 0.0; // somme cumulée des mesures int n_ech = 0; // numéro de la mesure void setup() { // on utilise la référence de tension interne de l'Arduino Uno à 1.1 volts analogReference(INTERNAL); // connexion au port série à la vitesse de 9600 baud Serial.begin(9600); // on doit appuyer sur entrée dans la console pour démarrer le script Serial.println("Appuyez sur Entrée pour démarrer la mesure ..."); while (Serial.read() != '\n') { ; } // impression de l'entête du tableau de mesures Serial.println("t \t T"); Serial.println("(s) \t (°C)"); // origine du temps t_0 = millis() * 0.001; // on force la mesure à t = 0s t_old = -dt; } void loop() { // durée (en s) écoulée depuis l'origine des temps t = 0.001 * millis() - t_0; // mesure de température si dt secondes se sont écoulées if (t - t_old >= dt) { // mise à jour de la date de la dernière mesure faite t_old = t; // on fait la somme de N mesures successives n_ech = 0; buffer = 0.0; while (n_ech < N) { n_ech++; // conversion numérique => volt buffer = buffer + analogRead(temperaturePin) * NUM2VOLT_refInt; } // on calcule la moyenne des N mesures tension = buffer / (float)N; // conversion volt=> température pour TMP36GZ temperature = (tension - .5) * 100; // envoie de la mesure temps t /s et température T /°C Serial.print(t, 1); Serial.print(";"); Serial.println(temperature, 2); } }