Pages: [1] 2   Go Down
Author Topic: Calcul thermistance (Steinhart-Hart)  (Read 3153 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 43
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour,
nouveau dans la communauté Arduino avec ma Mega, n’étant pas doué en Math je galère avec une thermistance et la relation de Steinhart-Hart pour pouvoir afficher précisément(+-0.5°C) la T° ambiante.
J'ai déja effectué quelques mesures à diverses T° mais je ne sais pas comment calculer les inconnues A B et C pour les mettre dans le code de la carte:
Code:
float A = ?????????, B = ????????, C = ????????;
float logRt,Rt,T;
Vo = analogRead(ThermistorPin);
Rt = R*( 1023.0 / (float)Vo - 1.0 );
logRt = log(Rt);
T = ( 1.0 / (A + B*logRt + C*logRt*logRt*logRt ) -273.15);//-273.15 est la conversion de Kelvin en °C

seules données dont je dispose sur la Thermistance:
Couleurs: Marron, Noir, Jaune, Orange (100KOhm)
Mesures:
210Kohm à 1°C
125Kohm à 19.7°C
104Kohm à 25°C
72Kohm à 42°C

Merci pour votre aide!!!



Logged

Débutant mais acharné!!

France
Offline Offline
Faraday Member
**
Karma: 36
Posts: 3436
There is an Arduino for that
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Normalement les paramètres A, B, C sont dans les docs constructeur.
Logged

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

Bonjour,
Je ne sais rien de plus sur ce composant, je l'ai récupéré sur un programmateur de T° d’intérieur.
Il  est de forme Tantale.
Logged

Débutant mais acharné!!

Ales
Offline Offline
Faraday Member
**
Karma: 39
Posts: 3594
Do or DIY
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Sinon bon, excel courbe de tendance ... Et voila : y = 0.0572x2 - 5.8363x + 215.99
R² = 0.9994
Logged


France S-O
Offline Offline
Edison Member
*
Karma: 41
Posts: 2182
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Pris de vitesse j'allais proposer la même chose.
A signaler mieux qu'Excel   qu'un tableur ->  Qtiplot : des énormes possibilités pour approximer une courbe.
De plus gratuit, opensource et disponible multi-plateforme : Mac, Linux et Windows.

Remarques :
- La relation de Steinhart-Hart n'est qu'une modélisation, elle à donc ses limites.
- Pour ce genre d'approximation il est préférable de limiter la gamme de température au strict nécessaire, peut-être même il faudra approximer par zone de températures.
- Plus il y a de points de mesure mieux cela vaut : 4 points c'est vraiment limite pour la précision que tu recherches.
Logged

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

Merci pour vos réponses mais je ne vous suis pas, si il me faut d'autres points c'est pas un problème, je vais faire d'autres mesures mais après comment calculer A B et C?
Quelles serait les meilleures mesures? combien en faut il?
Sachant que je vais mesurer une plage allant de -15 à +40.


Quote from: B@tto
courbe de tendance ... Et voila : y = 0.0572x2 - 5.8363x + 215.99
R² = 0.9994

C'est quoi? Comment l'utiliser?

 smiley-fat
Logged

Débutant mais acharné!!

France
Offline Offline
God Member
*****
Karma: 4
Posts: 971
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour
Quote
je ne sais pas comment calculer les inconnues A B et C

la page Wikipedia sur la relation de Steinhart-Hart  (http://fr.wikipedia.org/wiki/Relation_de_Steinhart-Hart ) détaille la méthode de calcul des trois coefficients A, B et C à partir de 3 points de mesure.

Les températures sont à mettre en °Kelvin
-calculer L1,L2 et L3
-calculer Y1,Y2 et Y3
-calculer gamma2 et gamma3
-calculer les coefficients C, B et A



* calcul coeffs.JPG (55.09 KB, 1101x364 - viewed 29 times.)
« Last Edit: November 12, 2012, 05:18:07 am by al1fch » Logged

France S-O
Offline Offline
Edison Member
*
Karma: 41
Posts: 2182
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Courbe de tendance :
Reprenons la courbe que B@tto t'as donné :
y = 0.0572x2 - 5.8363x + 215.99
Cela provient d'un tableur donc c'est des notations mathématiques.
il suffit de convertir en variables physiques  :
y = valeur de la température en degrès -> T
x = valeur de la thermistance en Ohms -> Rth

Soit T=0.0572*Rth2 - 5.8363*Rth + 215.99

Le principe de la "courbe de tendance" :
On fait des mesures et on trace la courbe correspondante : ici c'est Valeur en ohms en fonction de la température
Avec la "courbe de tendance" on va chercher à être "au plus prés" de la courbe des mesures mais avec des fonctions mathématiques.
Ici B@tto a cherché à approximer avec le polynôme :  y=a2x2 + a1x +a0
Le coefficient de  R² = 0.9994 est très proche de 1 il n'est pas utile d'utiliser un polynôme de degrés supérieur.
D'autres fonctions mathématiques sont possibles, par exemple la relation Steinhart-Hart utilise des exponentielles.

Le fait d'avoir une équivalence avec des fonctions mathématiques va permettre de pouvoir calculer la température pour n'importe qu'elle valeur de la thermistance.
Logged

France
Offline Offline
God Member
*****
Karma: 4
Posts: 971
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Pour revenir à la modélisation Steinhart-Hart voici une feuille de calcul des coefficients A,B et C qui semble etre OK :
http://www.google.fr/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&ved=0CCcQFjAA&url=http%3A%2F%2Fwww.unb.ca%2Fcivil%2Fhydro%2FS-H%2520coefficients.xls&ei=lNSgUI63JYyWhQfm14HYBw&usg=AFQjCNELZfbU8hJ-SJVITGUqpEmAuikk9g
ci dessous : coeffs obtenus à partir des relevés de mesure à 1°C, 25°C et 42°C


* coeffs.JPG (99.37 KB, 1038x503 - viewed 32 times.)
* S-H coefficients.xls (48.5 KB - downloaded 17 times.)
« Last Edit: November 12, 2012, 06:05:09 am by al1fch » Logged

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

Bon,
après 2 aspirines  !!  smiley-money et de multiples essais, la T° affichée est toujours erronée  smiley-confuse
J'ai mis les valeurs A B et C résultat du calcul que vous m'avez posté, j'ai également pris une nouvelle mesure (16.3°C = 134KOms).
Je pense que mon code (trouvé sur la toile) doit avoir une erreur !?
Avec mon code j'ai une T° de 269.8° au lieu de 19.5°
Encore merci à tous pour votre aide, je n'en espérais pas tant pour un nouveau venu !!
Code:
int ThermistorPin = 1; // Entree analogique de la sonde
int Vo; // lecture de la tension délivré par la thermistance
float R = 5800.0; //Résistance du diviseur de Tension
float logRt,Rt,T;
float c1 = -8.1470e-3, c2 = 1.2598e-03,c3 =-1.9802e-06; //1° , 25° et 42°
Vo = analogRead(ThermistorPin);
Rt = R*( 1023.0 / (float)Vo - 1.0 );
logRt = log(Rt);
T = ( 1.0 / (c1 + c2*logRt + c3*logRt*logRt*logRt )-273.15 );//-273.15 est la conversion de Kelvin en °C
Serial.print(" "); Serial.print(Vo);
Serial.print(" "); Serial.print(Rt);
Serial.print(" "); Serial.println(T);
Logged

Débutant mais acharné!!

France
Offline Offline
God Member
*****
Karma: 4
Posts: 971
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Pourquoi
Code:
float R = 5800.0;
?
Le programme d'origine était conçu pour quelle valeur de thermistance et quelle valeur de résistance mise en série ?
Souvent dans les exemples c'est 10K et 10K.  Si c'était le cas il faudrait, pour transposer,  mettre une résistance de 100K, égale à celle de la thermistance et écrire
Code:
float R = 100000.0;
Un lien vers le programme d'origine ?

Pour info : le programme 'élaboré et nettoyé' du Playground Arduino  avec 'pad' = Résistance série mesurée et  'thermr'=résistance nominale de la thermistance utilisée. http://www.arduino.cc/playground/ComponentLib/Thermistor2
« Last Edit: November 12, 2012, 10:09:17 am by al1fch » Logged

France
Offline Offline
Faraday Member
**
Karma: 36
Posts: 3436
There is an Arduino for that
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Et puis il y a de fortes chances que ta formule retourne la température en degrés Kelvin.
Logged

Forum Moderator
Geneva
Offline Offline
Faraday Member
*****
Karma: 30
Posts: 3228
Yoplait... le pt'it suisse
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Il faut introduire cette conversion :

°C = (°F - 32) / 1.8

Et voir si les résultats retournés sont correctes.
Logged

MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

Offline Offline
Faraday Member
**
Karma: 33
Posts: 4978
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Il faut introduire cette conversion :

°C = (°F - 32) / 1.8

Et voir si les résultats retournés sont correctes.
salut JF
ça c'est pour convertir du °C en °F
pour convertir du K en °C c'est ) °C=K-273.15
Logged

Forum Moderator
Geneva
Offline Offline
Faraday Member
*****
Karma: 30
Posts: 3228
Yoplait... le pt'it suisse
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Arfff... un peu trop pressé de répondre  smiley-mr-green
Logged

MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

Pages: [1] 2   Go Up
Jump to: