Go Down

Topic: Calcul thermistance (Steinhart-Hart) (Read 3876 times) previous topic - next topic

lolo81

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: [Select]

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°.

=( =( =( =(
Débutant mais acharné!!

al1fch

#16
Nov 12, 2012, 08:04 pm Last Edit: Nov 24, 2012, 09:17 am by al1fch Reason: 1
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)

al1fch

#17
Nov 12, 2012, 09:15 pm Last Edit: Nov 24, 2012, 08:51 am by al1fch Reason: 1
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: [Select]
/*

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...
}

lolo81

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 !!
Débutant mais acharné!!

lolo81

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:
Débutant mais acharné!!

Go Up