Go Down

Topic: Interfacage d'une sonde PT100 (Read 4608 times) previous topic - next topic

sorg

Bonjour,

Pour mon projet arduino, j'ai besoin d'interfacer une sonde pt100.

J'ai fait un premier proto hier:

J'utilise une PT100 2 fills.
Je réalise la mesure via A0 en passant par un pont diviseur:
une résistance 41ohm (+/-5%) entre GND et A0 et la PT100 entre A0 et +5V.

Dans le principe, celà fonctionne bien, et je calcule sans difficulté la valeur de la résistance, le souci c'est que la précision obtenue n'est pas utilisable en pratique: les + ou - 5% de la résistance de 41 ohm perturbe la température mesurée de + ou - 15 ° .

Avez vous des idées pour améliorer la précision de l'ensemble ?

B@tto

Une piste : 41 ohms + 100 ohms ~= 150 ohms ==> 33 mA !! Dans une Pt100 c'est énorme, elle chauffe et du coup ta mesure foire ... Perso pour avoir une mesure à peu près correcte j'utilise un ADC externe 24 bits ... donc avec les 10 bits de l'arduino c'est pas terrible :s Si ton application le permet un thermocouple peut être plus simple à mettre en oeuvre via un AD595AQ.
Blog électronique : http://battomicro.wordpress.com/
Photographie : www.interactive-celebration.fr

sorg

L'échauffement de la PT100 est marginal pour moi car dans mon application je vais travailler avec des températures de l'ordre de 100°C.
En fait, je suis surtout emmerdé par le manque de précision de la résistance du pont diviseur.

Je pourrai techniquement utilisé un thermocouple, mais j'ai une préférence pour les PT100 que j'utilise énormément dans mon boulot, et je peux donc facilement en récupérer contrairement à un Thermocouple.

Je peux aussi récupérer des PT100 interfacée en 4-20mA, il faut que je regarde si c'est pas raccordable avec l'arduino avec une précision plus satisfaisante.

B@tto

Le problème c'est que l'échauffement crée surement la fameuse instabilité : elle chauffe, sa résistance augmente, donc le courant diminue, donc sa résistance baisse, donc le courant ré-augmente et l'échauffement avec, et ainsi de suite ... Le mieux reste de faire un pont avec une resistance de ~10k et d'amplifier ta tension avec un AOP. La tolérance de ta résistance n'est pas vraiment le problème, 5% ne veut pas dire que ta résitance se balade en permanence entre 133 et 147 omhs.
Blog électronique : http://battomicro.wordpress.com/
Photographie : www.interactive-celebration.fr

sorg

Mon problème n'est pas d'avoir une mesure qui se balade, Ma mesure est très stable. mais d'avoir un décalage de mesure que je ne maitrise pas de l'ordre de 15°.

B@tto

A ok, tu veux dire que ta mesure n'est pas juste en fait ? Si c'est bien ça donne nous ta formule de conversion, sinon pourquoi ne pas simplement faire -15 si l'écart ne varie pas ?
Blog électronique : http://battomicro.wordpress.com/
Photographie : www.interactive-celebration.fr

sorg

Il est clair que j'ai un décalage permanent , il semble à peu près constant car la mesure varie peu.

Voilà le calcul effectué: (version quick & dirty ):

Code: [Select]
  sensorValue = analogRead(sensorPin);
  Tension = double(sensorValue)/1024 * 5 ;
  RPT100 = (1-(double(sensorValue)/1024))* ( 1024 * double(Resistor) / double(sensorValue));
  Temp = (RPT100 - 100 ) / 0.385;

ou sensorValue est la sortie de l'ADC.
Tension est la conversion en Volts de l'ADC (ne me sert pas dans le calcul, c'était pour vérifier si ca collait avec ce que me disais mon voltmètre.
RPT100 est la valeur calculée de la PT100 et Resistor est la valeur de la résistance utilisée dans le pont diviseur (déclarée en début de programme).
Temp est enfin la valeur calculée de la température.

Physiquement ma PT100 est connectée entre +5V et Entrée ANA et Resistor est entre Entrée ANA et GND.

B@tto

A vue d'oeil comme ça je crois qu'elle n'est pas bonne. Dès que je peux je te poste la mienne ;) (qui marche c'est sûr, testée de -196°C à +200°C)
Blog électronique : http://battomicro.wordpress.com/
Photographie : www.interactive-celebration.fr

B@tto

Alors j'ai deux solutions, une simple, valable de -50 à 200°C si je me rappelle bien, et une autre plus complexe mais valable de -200°C à +800°C.

La simple :

Code: [Select]
Temperature=R/(TensionAlimentationPont/Mesure-1.00);
Temperature=(Temperature-100)/0.385;


La complexe :

Code: [Select]

Temperature=R/(TensionAlimentationPont/V-1.00);

if (Temperature<=113.00) {
 Temperature=((Temperature/100.00)-1.00)*(1-pow(((113.00-Temperature)/408.00),3.00));
} else {
 Temperature=(Temperature/100.00)-1.00;
}

Temperature=4*5.775*Temperature/10000000;
Temperature=sq(3.909/1000)-Temperature;
Temperature=sqrt(Temperature*1000000);
Temperature=Temperature/1000;
Temperature=Temperature-(3.909/1000);
Temperature=Temperature/(2*5.775/10000000);
Temperature=Temperature*(-1);


Et alors la j'allait te balancer le lien où j'avais trouvé cette super formule mais il est mort :s ouf je l'ai choppé à temps  ;D Après test je peux te confirmer qu'elle marche très bien (pile à -196°C dans l'azote liquide).
Blog électronique : http://battomicro.wordpress.com/
Photographie : www.interactive-celebration.fr

sorg

Tes formules, tu les utilisent en mettant la resistance de pont entre gnd et Eana ou entre Ean et +5V ?

B@tto

Ah oui remarque, moi j'utilise un ADC 24 bits donc j'ai pas ce soucis la ... donc tu l'auras compris moi je fais +5V -- R -- Pt100 -- GND. C'est sûr que pour l'arduino 60 mV c'est pas fastoche ^^

Mais ta formule ne me semble pas correcte quand même, essaye : Rpt = R / ((Mesure/Valimentation)-1)
Blog électronique : http://battomicro.wordpress.com/
Photographie : www.interactive-celebration.fr

sorg

Après vérification, j'obtiens exactement la meme chose avec ta  formule et la mienne. Elles sont strictement équivalentes, la différence vient uniquement du fait que moi j'ai la PT100 entre +5V et Eana. et R entre GND et Eana.

B@tto

Dans ce cas deux options : - vérifies la tension d'alimentation avec un multimètre, perso j'ai pas exactement 5V, et au centième de volt ça change déjà des choses !!
- Ca confirme ma théorie des 30 mA c'est trop ! Mais bon du coup si la chauffe est constante, tu n'as qu'a faire -15°C au résultat final ^^
Blog électronique : http://battomicro.wordpress.com/
Photographie : www.interactive-celebration.fr

sorg

Tu as raison pour la vérif de la tension, mais mon multimetre premier prix de supermarché risque d'être encore moins précis.
Je vais voir ce que je peux faire.

Pour le fait de fixer l'offset de 15°, c'est une solution facile mais peu satisfaisante intellectuellement. Ceci dit vu les approximations faites dans mon cas (PT100 cablée en 2 fils sur un pont diviseur à base de composants bons marché), j'imagine que c'est un moindre mal.

Go Up