Pages: [1]   Go Down
Author Topic: Projet Capteur de température  (Read 3170 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 12
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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


Logged

france
Offline Offline
God Member
*****
Karma: 15
Posts: 872
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
« Last Edit: March 23, 2013, 06:59:34 am by Christian_R » Logged

Christian

Offline Offline
Newbie
*
Karma: 0
Posts: 12
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Merci beaucoup pour cette réponse rapide smiley
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 8
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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:
#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);
}
« Last Edit: March 24, 2013, 05:55:20 am by Thom-x » Logged

Paris
Offline Offline
Full Member
***
Karma: 1
Posts: 180
Beyond the possible...
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset


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  smiley.   
Logged

The Mind is like a parachute it works best when opened.

Offline Offline
Newbie
*
Karma: 0
Posts: 15
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 !

Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 12
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
« Last Edit: April 18, 2013, 02:03:01 pm by Gamekey » Logged

Pages: [1]   Go Up
Jump to: