Mesurer une thermistance NTC par USB

Mesurer une thermistance NTC par USB

Yoctopuce propose trois manières différentes de mesurer la température, mais il en existe d'autres. En effet, dans la grande famille des capteurs de température, on trouve aussi les thermistances. Il s'agit de conducteurs électriques dont la résistance fluctue de manière déterministe en fonction de la température. Alors, évidemment on pourrait se demander si un Yocto-Knob permettrait de les utiliser...



Les deux familles de résistances sensibles à la température les plus utilisées sont:
- les résistances au platine, en particulier les Pt100
- les thermistances, en particulier les NTC (Negative Temperature Coefficient en anglais, qui devient CTN en français)

Les résistances au platine sont très intéressantes parce qu'elles sont extrêmement précises. C'est d'ailleurs ces résistances qui servent d'étalons pour la définition internationale des échelles de température. Mais elles sont assez chères, et une électronique spécifique est nécessaire pour exploiter tout leur potentiel, on aura l'occasion d'en reparler.

Une thermistance permet de mesurer la température en un point précis
Une thermistance permet de mesurer la température en un point précis



Les thermistances NTC ont aussi un intérêt, parce qu'elles offrent une manière simple et bon marché de faire une mesure de température déportée en un point précis. Sur ce genre d'applications, elles sont moins réactives et beaucoup plus limitées qu'un thermocouple (un NTC n'est utilisable en général que de -40°C à 125°C, alors que les thermocouples couvrent une plage allant de -200°C à 1765°C), mais elles sont bien plus faciles à mesurer, au point qu'un simple Yocto-Knob peut faire l'affaire. Démonstration.

Mesurer une résistance avec un Yocto-Knob

Le Yocto-Knob est un produit conçu pour lire jusqu'à 5 potentiomètres, capteurs résistifs, phototransistors, interrupteurs ou autre détecteurs de ce type. Il s'agit d'un module économique, sans isolation galvanique. Sa logique interne permet de reconstruire par calibration logicielle une lecture linéaire d'un potentiomètre, même si celui-ci ne correspond pas exactement à l'impédance de l'entrée, mais il ne s'agit donc pas à proprement parler d'un Ohm-mètre. La lecture de potentiomètre est destinée à des applications de détection ou à la lecture de boutons rotatifs, non à une mesure calibrée.

On peut néanmoins estimer la valeur de la résistance sur une entrée du Yocto-Knob, en utilisant la fonction get_rawValue() qui fournit la valeur brute lue sur l'entrée analogique. On peut alors utiliser la formule suivante:


Une fois la résistance mesurée (ou du moins estimée), on peut calculer la température. Il ne s’agit pas d’une simple règle proportionnelle, mais il existe néanmoins une formule magique, dont plusieurs paramètres dépendent du type précis de résistance NTC utilisée:


Quelques explications s’imposent :
- T est la température que nous cherchons à calculer, en Kelvins. Pour la ramener à une température en degrés Celsius, nous soustrairons 273.
- R est la résistance mesurée du NTC à un moment donné
- Ro et To définissent le point de référence de la résistance NTC, par exemple dans notre cas 10KΩ à 25°C. La résistance doit être exprimée en Ohms (donc 10'000 dans notre cas) et la température en Kelvins (donc 273+25 dans notre cas).
- B est le coefficient Beta propre à chaque NTC, fourni par le fabricant. Dans notre cas, le coefficient B vaut 3976. Le fabricant l’appelle d’ailleurs Beta 25/85 pour indiquer le fait qu’il ne garantit ce coefficient que entre 25 et 85 °C. En dehors de la plage, la formule pourrait dériver.

Cette formule se traduit facilement en programme, par exemple en Python:

def ntcTemp(R):
    R0 = 10000
    B = 3976
    T0 = 273+25
    return B / math.log( R / (R0*math.exp(-B/T0)) ) - 273



Nous voilà prêt pour écrire un programme qui mesure la température avec un Yocto-Knob.

Une solution bon marché pour mesurer la température à un endroit donné
Une solution bon marché pour mesurer la température à un endroit donné



Le programme

Prenons comme point de départ le programme d’exemple du Yocto-Knob, disponible dans la librairie Yoctopuce. On remplace simplement la boucle principale par le code suivant :

while True:
    raw = channel1.get_rawValue()
    line = 'Raw value: ' + str(raw)
    if raw < 4092:
        # on a détecté un conducteur sur l’entrée
        res = 12400 * raw / (4092 - raw) + 20
        line += ' - resistance: ' + str(res)
        if res > 340 and res < 340000:
            line += ' - NTC temperature: ' + str(ntcTemp(res))
    print(line)
    YAPI.Sleep(500)



Vous pourrez facilement étendre ce code aux cinq entrées du Yocto-Knob si vous désirez effectuer mesurer simultanément la température en cinq points distincts. Sachant qu’un Yocto-Knob coûte environ 25 EUR et qu’on trouve des NTC dès 2 EUR, cela ne met pas la mesure très cher. Pour quelle précision ?

L’estimation de résistance n’est pas parfaite, comptez avec 2% et 30Ω en dehors des extrêmes. Dans la plage médiane, les NTC ont des variations de résistance assez marquées, jusqu’à 450Ω par degré à 25°C. Sur la plage 0-70°C, on peut donc estimer la précision de notre mesure à +/- 1°C. Une petite expérience confirme ces chiffres:
- le NTC plongé dans un verre d'eau empli de glaçons nous donne 32465Ω, soit 0,9°C
- le NTC dans de l'eau bouillante nous donne 694Ω, soit 99,47°C

Au-delà, l’incertitude augmente, aussi en raison du fait que la formule du NTC n’est plus exacte en dehors de la plage spécifiée pour le coefficient Beta. Il faut pour corriger cela utiliser une interpolation sur une table de correspondance résistance/température fournie dans la spécification du NTC.

Et pour plus de précision ?

Vous disposez maintenant d'une méthode bon marché pour donner une indication de température et détecter des changements bien visibles, une surchauffe par exemple. En revanche si vous avez besoin de mesurer une température de manière très précise, mettons à 0.03°C près, cela ne conviendra évidement pas. Mais il se trouve qu'on travaille sur la question. La réponse devrait arriver très bientôt :-)

Commenter aucun commentaire Retour au blog












Yoctopuce, get your stuff connected.