Pages: 1 [2]   Go Down
Author Topic: Calcul thermistance (Steinhart-Hart)  (Read 3156 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

Bon alors voila ou j'en suis:
J'ai pris comme conseillé plus haut le code de Playground Arduino avec comme résistance un potar que j'ai réglé à 10K avec le code:
Code:
double Thermister(int RawADC) {
 double Temp;
 Temp = log(((10240000/RawADC) - 10000));
 Temp = 1 / (-8.1470e-3 + (1.2598e-03 + (-1.9802e-06 * Temp * Temp ))* Temp );
 Temp = Temp - 273.15;            // Convert Kelvin to Celcius
 return Temp;
}

void setup() {
Serial.begin(9600);
}

void loop() {
   Serial.println(int(Thermister(analogRead(1))));  // display Fahrenheit
  delay(100);
}

La température ambiante (19.7°) est affiché 273° dans le moniteur.
J'ai refait la même chose mais en réglant la Résistance à 90K (Max du potar) et modifier  Temp = log(((10240000/RawADC) - 100000));
Là la T° est de 0 même si je supprime la ligne de conversion K to C°.

 smiley-cry smiley-cry smiley-cry smiley-cry
Logged

Débutant mais acharné!!

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

Testé vite fait à l'instant => résultat OK, valeur température ambiante en °C OK

-thermistance 47K sans doc technique + résistance 100K
-3 mesures de résistance à 7°C, 21°C et 40°C
-Report des mesures dans le tableau Excel indiqué au Reply#8 -> valeurs des coefficients A, B et C (cf copie écran)
   La feuille de calcul à été récupérée içi : www.unb.ca/civil/hydro/S-H%20coefficients.xls
                      Lien maintenant invalide : feuille de calcul jointe ci-dessous
-cablage : Thermistance entre Vcc et A0, résistance de 100K entre A0 et la masse
-3ème programme du playground (http://www.arduino.cc/playground/ComponentLib/Thermistor2)
(valeur 100K en ligne 34, 3 coefficients en ligne 44, voir programme "thermistance.ino" joint)


* coeffs TH 47K.jpg (78.87 KB, 731x397 - viewed 33 times.)
* thermistance.ino (2.35 KB - downloaded 23 times.)

* soft.jpg (64.67 KB, 727x373 - viewed 32 times.)
* S-H coefficients.zip (301.22 KB - downloaded 30 times.)
« Last Edit: November 24, 2012, 03:17:20 am by al1fch » Logged

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

code fonctionnel avec coefficients  issus de la feuille de calcul proposée au message précédent.

Modifier Rserie ainsi que A,B et C selon composants

Code:
/*

 Mesure de température par thermistance
 
 Playground : http://www.arduino.cc/playground/ComponentLib/Thermistor2
 Programme n°3
  
 Thermistance modélisée par la "relation de Steinhart-Hart"
 Coefficients A,B et C obtenus par calcul à partir de 3 mesures de résistance
 Feuille de calcul Excel : http://www.unb.ca/civil/hydro/S-H%20coefficients.xls

  Câblage : Vcc ----- [Therm] ------ A0 ------[Rserie] ------ GND
 
 */

#include <math.h>

#define ThermistorPIN 0                // Thermistance entre Vcc et A0

float Rserie = 100000;                 // valeur Résistance entre A0 et GND

// caractérisation de la thermistance de 47k
float A = -0.0032265;                  // coefficients Steinhart-Hart de la thermistance de 47k
float B =  0.0007698;                  // doc technique ou calcul à partir de 3 mesures
float C = -0.0000013808;


float Thermistor(int RawADC) {
  long Resistance;  
  float Temp;  // Dual-Purpose variable to save space.

  Resistance=((1024 * Rserie / RawADC) - Rserie);
  Temp = log(Resistance); // sauver le log de la résistance mesurée
  Temp = 1 / (A + (B * Temp) + (C * Temp * Temp * Temp));
  Temp = Temp - 273.15;  // Kelvin -> Celsius                      

  return Temp;                                      
}

void setup() {
  Serial.begin(115200);
}

void loop() {
  float temp;
  temp=Thermistor(analogRead(ThermistorPIN));       // read ADC and  convert it to Celsius
  Serial.print("Celsius: ");
  Serial.print(temp,1);                             // display Celsius
  Serial.println("");                                  
  delay(2000);                                      // Delay a bit...
}
« Last Edit: November 24, 2012, 02:51:46 am by al1fch » Logged

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

Ayant tous re-contrôlé plusieurs fois j'en suis venue à incriminer mon entrée, ce que  je ne vous ai pas dis c'est qu'il y a une carte réseau sur ma mega.
Je l'ai déposé pour laisser la Mega seule et là ça fonction impec!!
J'en déduit que si la 1307 est connectée les ports Analogiques de 1à 5 sont Ko, normal?
Je me console en me disant que j'ai acquis pas de chose sur le coup!!
Désolé pour ceux qui se sont creusé la tête pour me dépanner !!
Merci à tous !!
Logged

Débutant mais acharné!!

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

Personne n'a eu le cas après connexion de l’ethernet shield que les port analogique de 0 à 5 soit erronés?
Es-ce mon ethernet shield qui est KO?
Sur une Uno où il y à moins de port il ne reste que la 6 et 7 de dispo?  smiley-roll
Logged

Débutant mais acharné!!

Pages: 1 [2]   Go Up
Jump to: