Licence CC BY

Arduinomètre

Publié :

Arduinomètre

Arduinomètre avec sonde LM35

Arduinomètre avec sonde LM35

Le LM35

C'est un circuit intégré, de la taille d'un petit transistor, conçu pour générer une tension proportionnelle à la température en son cœur.

Détails de la sonde

D'après les données fabricant, on peut atteindre une précision de 0,5°C. Voici un extrait des données de chez National Semiconductor :

Fiche technique (datasheet) du LM35 (extrait)

Nous allons nous contenter du branchement "simple" (schéma de gauche), prévu pour la plage de températures de 2°C à 150°C.
Notez que cette sonde est déjà calibrée, nous avons juste à convertir la tension de sortie en valeur de température en °C.
La conversion est assez simple : la tension de base est 0V et elle augmente de 10mV pour chaque degré Centigrade. Donc à 20°C on aura une tension de 200mV. Ainsi à 150°C la tension sera de 1500mV, ou 1,5V.

L'Arduinomètre est programmé (pour des raisons de précision) à n'accepter que les tensions jusqu'à 1,1V : donc notre plage de température utile sera de 2°C à 110°C.

Schéma de branchement

Très simple : la bête n'a que trois pattes : +5v (alimentation); Vsortie ; 0v. Voici le montage sur une platine (j'ai omis l'afficheur LCD : ses branchements ne changent pas) :

Montage du LM35

Une fois n'est pas coutume : pas de schéma, c'est tellement simple.

Sonde flexible

Comme vous voyez sur la première image, il est possible de fabriquer une sonde flexible à l'instar de notre sonde à diode. A cause des tensions très faibles à basse température, je vous conseille de trouver du câble blindé (genre câble pour microphone). Sinon, au moins faire une paire torsadée avec le fil de sortie et le fil 0v.

Isoler les trois "pattes" avec de la gaine thermorétractable puis protéger l'ensemble avec une deuxième gaine par-dessus (dans l'image j'ai retiré la gaine de protection : on voit les trois pattes).

Dans l'image suivante on voit les branchements avec un câble blindé : fil rouge = +5v; fil blanc = Vsortie; fil orange = blindage = 0v.

Câblage de la sonde

Comme je l'ai dit en préambule, la température correspond à la température au cœur de la bête. L'encapsulation en plastique est relativement isolante, la chaleur est plutôt transmise par les pattes. Ce point n'a pas d'incidence dans la plupart des cas, mais vous remarquerez peut-être un temps de réponse un peu long par rapport à la sonde diode.

Modification Sketch

Je vous laisse modifier le sketch vous-même ! Non, non - ce n'est pas si difficile que cela. La seule vraie modification c'est pour les paramètres de la commande map().
La gamme de température devient de à 110°; et la gamme de valeurs retournées par analogRead() devient $(20/1.075) = 1 à 1023$.

Double sonde

Pour voir à quel point la diode est précise (ou pas) il est possible de modifier le sketch afin de lire la valeur des deux sondes. L'Arduino est équipé de 6 entrées analogiques, il n'y a pas de raison de s'en priver !

Attention, cependant : le convertisseur analogique > numérique (ADC) a besoin d'un certain temps pour effectuer ses opérations, et un temps de repos entre chaque lecture. Je vous conseille de faire en sorte de laisser un minimum de 1ms entre deux lectures.
Par exemple :

1
2
3
diode_value = analogRead(diode_pin);  // lire valeur de la sonde diode  
delay(1); // attente  
lm35_value = analogRead(lm35_pin);  // lire valeur de la sonde lm35  

Bon courage !
Glenn

Arduinomètre avec thermistance

La thermistance

C'est une résistance variable, sa valeur (en Ohms) varie avec sa température. Deux grandes familles de thermistances existent : les thermistance à coefficient négatif (NTC); et les thermistances à coefficient positif (PTC).

Pour les NTC la résistance diminue avec une augmentation de T°; et, vous avez deviné, augmente pour les PTC. La plupart des thermistances en vente sont des NTC - et c'est sûrement ce que vous avez dans votre kit.

Réponse non-lineaire

Un des soucis avec les thermistances c'est que la variation de résistance n'est pas linéaire par rapport aux changements de température. C'est-à-dire que, supposant qu'entre 110° et 100° la résistance change de 1000ohms ; entre 20° et 10° la différence de résistance ne sera peut-être que de 300ohms (chiffres inventés, mais cela donne l'idée).

Souvent dans la documentation fabricant on ne trouve que des tables de valeurs, pas des courbes. Les rares fois où des courbes sont publiées, elles sont de ce style (données réelles, graphique tableur) :

Courbe logarithmique

Où est le problème ? C'est vrai que la courbe semble relativement droite. Mais l'axe de résistance est en échelle LOGARITHMIQUE. Si je vous montre les mêmes valeurs sur une échelle linéaire vous comprendrez vite notre souci :

Courbe linéaire

Aïe !

Pour corser le problème (au moins pour moi), les thermistances ne sont aucunement normalisées : une thermistance avec une résistance de 47kohms de chez Dédé n'aura pas la même courbe de réponse qu'une thermistance de même valeur chez Tartampion.

C'est essentiellement pour ces raisons que j'ai choisi de faire l'Arduinomètre avec une diode… Mais, pour des raisons qui m'échappent, la diode a été "oubliée" de la liste des pièces, me semble-t-il.

Tout n'est pas perdu, cependant. Si on se contente d'une utilisation sur une plage de températures restreinte, autour de la température 'nominale' (25°), avec quelques astuces électroniques on peut avoir une réponse assez linéaire.

Voici une façon de faire (car il y a pléthore de solutions plus ou moins complexes). J'utilise cette façon pour un thermostat que j'ai conçu pour gérer un chauffage de serre maraîchère ou un châssis chauffant pour les plantes.

Montage

L'ajout de deux résistances (pour de meilleurs résultats on choisit des résistances de précision, 1% ou mieux - mais ce n'est pas critique ici) fait en sorte d'aplatir la courbe sur la plage d'environ +/- 50°C autour du point nominal. Voici donc un montage compromis entre les valeurs de résistances que vous devrez avoir, et une correction au plus juste :

Branchement de la thermistance

Si vous ne pouvez pas trouver une résistance de 47k, mettre plusieurs résistances de 10k en série. Plus vous êtes proche des 47k (ex. 5 x 10k) mieux c'est. Voici ce montage sur la platine (sans l'afficheur) :

Montage de la thermistance

Comme les résistances, les thermistances ne sont pas polarisées : elles n'ont pas de sens de branchement.

Sonde

Pour calibrer le montage, il faut fabriquer une sonde étanche, comme pour la diode. Pas de précaution particulière, vous pouvez suivre la même procédure que pour la sonde diode. L'étanchéité est importante car la présence d'eau va fausser les valeurs.

Étalonnage

Procéder comme pour le montage diode : mesure des valeurs proche de 0°C (verre d'eau glacé); et à 100°C (eau bouillante). Ensuite corriger les valeurs dans la commande map()

Si vous avez une thermistance ET une diode, vous pouvez comparer leur comportement en modifiant l'Arduinomètre : utiliser une deuxième entrée analogique. Regarder à la fin de l'article "Arduinomètre LM35" pour plus d'infos.

Good luck !
Glenn