Go Down

Topic: Projet Capteur de température (Read 3514 times) previous topic - next topic

Gamekey

Bonjour à toute et à tous,

Je suis actuellement en terminale, et j'ai comme projet de commander des stores ou autres en fonction de la météo. (Notre projet ne pourra pas être fini car il est trop long).

Je m'occupe de la partie du thermomètre. J'ai choisi un capteur LM35 allant de -55°C à 150°C allant de 0 à 5V

-55°C correspond à 0V et 150°C à 5V

Je dois établir donc le calcul.

J'ai fais : 5/205(150+55)=0,02439024390243902439024390243902

Le problème c'est que je trouve beaucoup de chiffres après et que si j'arrondis, je trouve pas 5V pour +155°c

J'aimerais savoir si ce calcul est juste et si je peut arrondir pour éviter de me trouver avec trop de chiffres après la virgule

Cordialement



Christian_R

#1
Mar 23, 2013, 12:57 pm Last Edit: Mar 23, 2013, 12:59 pm by Christian_R Reason: 1
Temp1 = A * Volt1 + B     -55°C pour 0V
Temp2 = A * Volt2 + B     +150°C pour 5V


Donc A = (Temp2 - Temp1) / (Volt2 - Volt1) = (150+55)/5 = 205/5 = 41 °C/V

et B = Temp2 - A*Volt2 = 150 - 41*5 = -55 °C

D'ou Temp = 41*Volt -55  en °C
Christian

Gamekey

Merci beaucoup pour cette réponse rapide :)

Thom-x

#3
Mar 24, 2013, 11:47 am Last Edit: Mar 24, 2013, 11:55 am by Thom-x Reason: 1
Bonjour,
Pour le LM35 0V ne correspond pas à -55°C.
Si tu lis la datasheet tu verras que c'est 10 mV par degré.
Donc si tu l'alimente en 0/5V tu pourra aller de 0°C (0V) à théoriquement 500°C (5V).
Pour avoir une température négative il faut lui donner une tension de référence négative ce qui n'est pas possible avec Arduino car les entrée analogiques ne peuvent pas lire de tension négative.

Voici un bout de code que j'ai fais pour tester ma sonde :

Code: [Select]

#define SONDETEMP A0
#define NBMESURES 10
void setup()
{
  Serial.begin(9600);
  analogReference(INTERNAL); // Référence de mesure pour les entrées analogiques 1.1V pour UNO, 2.56V pour Leonardo
}
void loop()
{
  float temp=0;
  for(int i=0;i<NBMESURES;i++)
  {
    temp += analogRead(SONDETEMP);
    delay(100);
  }
  temp = temp/NBMESURES*0.107421875; // avref = 5V => 0.48828125 avref 1.1V => 0.107421875 avref 2.56V => 0.25
  Serial.println(temp,1);
}

-Standby


hs : Les Dallas sont beaucoup moins prise de tête pas besoin de faire une conversion ni de calibrage, de plus il réduise le travail du micro car il renvoie les données en digital sans parlé de la précision et des différents mode de câblage  :)
The Mind is like a parachute it works best when opened.

leprosylv

Effectivement, pour une plage réduite a un usage meteo le choix est pas très judicieux !

La fonction map est pas mal pour ce genre de chose ! Cela évite les conversions pour un échelle proportionnelle !


Gamekey

#6
Apr 18, 2013, 08:59 pm Last Edit: Apr 18, 2013, 09:03 pm by Gamekey Reason: 1
Bonjour, bonsoir

Tout d'abord, je tiens à vous remercier.

Désolé pour ma réponse tardive.


Voilà un peu plus d'info sur mon projet :

Ma tension sera toujours positive car j'ai mis un offset  et la tension ne dépassera pas les 1V

J'ai donc deux AOP ainsi que deux diodes.

Concernant le programme, j'aimerais savoir si je pouvais me baser sur ce programme que j'ai fais lors d'un TP :


int Temp=0;
int mesureBrute=0;
float mesure;
int ledAlarme=8

void setup ()
{
 Serial.begin(9600)
 pinMode(ledAlarme)
}
void loop()
{
 digitalWrite(ledAlarme,LOW);
 mesureBrute=analogRead(Temp)
 mesure=mesureBrute;
 mesure=mesure*150.0;
 mesure=mesure/1023.0;
 if( mesureBrute>(2046/150))
 {
   if(mesure>=100)digitalWrite(ledAlarme,HIGH);
   Serial.print("mesure Brute=")
   Serial.print(mesureBrute);
   Serial.print(" soit une température de ");
   Serial.print(mesure,2);
   Serial.println(" degre Celsus");
   delay(1000)
 }
}


Je peux vous fournir mon schéma électrique si vous voulez

Le problème de la tension est enfin réglé, je pouvoir m'attaquer au programme

Go Up