Mesurer une température avec Arduino chauffage automatique avec Arduino
Accueil du site | Accessibilité | Rechercher | Menu | Contenu | Plan du site | | Contact

°°TechNoLand°°

°°TechNoLand°°

 

Mesurer une température avec Arduino

2 octobre 2013 - Dernier ajout 9 octobre 2013
par chamayou

Pour mesurer une température, on peut utiliser différents capteurs :

 La CTN

La CTN est une résistance variable en fonction de la température. Datasheet ctn 4.7 kOhms

Montage :

On utilisera le montage du pont diviseur pour récupérer une tension d’entrée variable. La CTN est en série avec une resistance de 200 Ohms.

On utilise ici le shield Tinker et un module thermistance.

const int analogInPin0 = A0; // Analog input pin
int sensorValue0 = 0;
float tens;
float resist;

void setup() {
// initialize serial communications at 9600 bps:
Serial.begin(9600);
}

void loop() {
// read the analog pin
sensorValue0 = analogRead(analogInPin0);
tens = sensorValue0 * 5;
tens = tens / 1023;
resist = 5 / tens;
resist = resist * 220;
resist = resist - 220;
delay(4);

// print results to the serial monitor:
Serial.print("sensorValue0 = " );
Serial.println(sensorValue0);
Serial.print("tension:");
Serial.print(tens);
Serial.println("V");
Serial.print("resistance:");
Serial.print(resist);
Serial.println("Ohms");

// wait 3 seconds before the next readings
delay(3000-4);
}

Affichage dans la console série :

source : http://iwantmyreal.name/blog/2012/0...

 Le LM35

//Déclaration et initialisation des variables
 float mesure=0;        //Variable pour le stockage mesure retournée par le capteur
 float tension=0;       //Variable pour le stockage de la tension
 float temperature=0;   //Variable pour le stockage de la température
 float tempmin=100;     //Temperature min
 float tempmax=0;       //Temperature max
 int portana0 = 0;      //Numéro du port analogique sur lequel la température est mesurée

//Traitements initialisation
 void setup()
 {
   analogReference(INTERNAL); //Permet de fixer la temperature de refernce à 1,1 volt
   Serial.begin(9600);        //initialisation de la liaison série à 9 600 bauds
 }

//Traitements itératifs
 void loop()
 {
   mesure = analogRead(portana0);  //Lecture de la valeur fournie par le capteur de température
   tension = mesure * 1.1 / 1024;  //Conversion en tension (en volt)
   
   temperature = tension * 100;    //Conversion en température (en degré Celsius)
   if (temperature < tempmin) {tempmin = temperature;} //Calcul temperature mini
   if (temperature > tempmax) {tempmax = temperature;} //Calcul temperature maxi
   
   //Envoi de la tension et des températures au PC par la liaison série pour affichage dans la console
   Serial.print("Tension : "); Serial.print (tension); Serial.print(" Volts - ");        
   Serial.print("Temperatures :");
   Serial.print(" >Actuelle : "); Serial.print (temperature);
   Serial.print(" >Mini : "); Serial.print (tempmin);
   Serial.print (" >Max : "); Serial.println (tempmax);
   //Attente de 5 secondes avant de faire une nouvelle mesure
   delay(5000);                    
 }

source :http://phmarduino.free.fr/

Affichage dans la console série :

 Le 18B20 de Dallas

C’est un capteur numérique branché ici sur la pin A2

Il faut ajouter la librairie "OneWire"

#include <OneWire.h>
 
int DS18S20_Pin = 2; //DS18S20 Signal pin on digital 2
 
//Temperature chip i/o
OneWire ds(DS18S20_Pin);  // on digital pin 2
 
void setup(void) {
 Serial.begin(9600);
}
 
void loop(void) {
 float temperature = getTemp();
 Serial.println(temperature);
   
 delay(100); //just here to slow down the output so it is easier to read
   
}
 
 
float getTemp(){
 //returns the temperature from one DS18S20 in DEG Celsius
 
 byte data[12];
 byte addr[8];
 
 if ( !ds.search(addr)) {
     //no more sensors on chain, reset search
     ds.reset_search();
     return -1000;
 }
 
 if ( OneWire::crc8( addr, 7) != addr[7]) {
     Serial.println("CRC is not valid!");
     return -1000;
 }
 
 if ( addr[0] != 0x10 && addr[0] != 0x28) {
     Serial.print("Device is not recognized");
     return -1000;
 }
 
 ds.reset();
 ds.select(addr);
 ds.write(0x44,1); // start conversion, with parasite power on at the end
 
 byte present = ds.reset();
 ds.select(addr);  
 ds.write(0xBE); // Read Scratchpad
 
   
 for (int i = 0; i < 9; i++) { // we need 9 bytes
   data[i] = ds.read();
 }
   
 ds.reset_search();
   
 byte MSB = data[1];
 byte LSB = data[0];
 
 float tempRead = ((MSB << 8) | LSB); //using two's compliment
 float TemperatureSum = tempRead / 16;
   
 return TemperatureSum;
   
}

Ce programme renvoie la température dans le Moniteur Serie.

source : http://www.dfrobot.com/wiki/index.php/18B20_Temerature_Sensor_%28Arduino_Compatible%29_%28SKU:_DFR0024%29


calle

calle