Mesures de température de haute précision avec des capteurs silicium avancés
L'industrie électronique exige des niveaux de précision toujours plus élevés, et la détection de température ne fait pas exception. De nombreuses solutions de détection de température existent, chacune avec ses avantages et inconvénients. Les capteurs de température en silicium, bien que assez linéaires, n'ont jamais offert la précision d'autres solutions. Cependant, les avancées récentes dans la détection de température par silicium permettent désormais d'atteindre une haute résolution et une grande précision avec une solution silicium.
Un nouveau congélateur
C'était en mars 2020 et le Royaume-Uni s'apprêtait à entrer en confinement. Le monde faisait des provisions au cas où les supermarchés fermeraient, et l'avenir semblait incertain. C'est alors que le congélateur du foyer Bramble a cessé de fonctionner. Avec les mots de la chanson de Kenny Rogers, « You Picked a Fine Time to Leave me… » résonnant dans ma tête, nous sommes allés chercher un remplaçant en ligne.
Quelques jours plus tard, notre nouveau congélateur est arrivé, complet avec un afficheur de température numérique sur le panneau avant, comme le souhaitait Mme Bramble. Le réglage recommandé était -18 °C et après une heure, l'appareil était à la bonne température et prêt à accueillir les aliments. J'étais sceptique quant à la précision de l'affichage de température, mais je m'en moquais tant qu'il congelait les aliments. Un problème, cependant : un esprit d'ingénieur est un esprit inquiet, et après des jours de l'affichage numérique ostensiblement sage me fixant sans cligner des yeux, me défiant par ses affirmations confiantes, j'ai craqué. J'ai dû tester les prétentions de précision de ce nouvel ajout à notre cuisine.
Capteurs de température
Il existe une grande variété de capteurs de température utilisés dans les applications industrielles, chacun avec ses avantages et inconvénients. De nombreux textes détaillent le fonctionnement des différents capteurs de température, je ne répéterai pas les détails ici, mais en offre un résumé ci-dessous.
Thermocouples
Les thermocouples offrent un moyen peu coûteux et modérément précis de mesurer des températures très élevées. Ils reposent sur une tension générée entre deux jonctions, chacune faite de métaux différents, maintenues à des températures différentes, comme découvert par Thomas Seebeck en 1821. Dans le cas d'un thermocouple de type K (fait des alliages Chromel et Alumel), il produit une tension d'environ 41 µV/°C et peut mesurer des températures supérieures à 1000 °C. Néanmoins, l'effet Seebeck repose sur une différence de température entre deux jonctions, donc tandis que la jonction « chaude » mesure la température d'intérêt, la jonction « froide » doit être maintenue à une température connue. Ironiquement, un autre capteur de température est requis à la jonction froide pour mesurer la différence de température, et des composants comme l'AD8494 fournissent la solution parfaite pour cela. Comme les thermocouples sont physiquement petits, ils ont une faible masse thermique, offrant ainsi une réponse rapide aux changements de température.
RTD (Détecteurs de température à résistance)
Pour mesurer des températures modérées (<500 °C), les détecteurs de température à résistance (RTD) sont largement utilisés par l'industrie. Ces dispositifs consistent en un élément métallique qui présente une variation positive de résistance avec la température, le plus souvent du Platine. En effet, le capteur PT-100 est le RTD le plus utilisé dans l'industrie et tire son nom du fait qu'il est fait de Platine (PT) et a une résistance de 100 Ω à 0 °C. Bien que ces dispositifs ne mesurent pas des températures aussi élevées que les thermocouples, ils sont hautement linéaires et leur lecture est reproductible. Un PT100 a besoin d'un courant de pilotage précis, créant une chute de tension précise à travers le capteur qui est proportionnelle à la température. La résistance des fils de connexion du PT100 crée une erreur dans la mesure de la résistance du capteur, donc la détection Kelvin est typique, résultant en des capteurs à 3 ou 4 fils.
Thermistances
Si une solution peu coûteuse est requise et que la plage de température est faible, une thermistance suffit souvent. Ces dispositifs sont hautement non-linéaires, avec une caractéristique basée sur l'équation de Steinhart-Hart, produisant une réduction de résistance avec l'augmentation de la température. L'avantage d'une thermistance est que la variation de résistance est importante pour de petits changements de température, permettant un haut niveau de précision malgré sa non-linéarité. Les thermistances offrent également une réponse thermique rapide. Les non-linéarités individuelles des thermistances sont bien définies, elles peuvent donc être calibrées, en utilisant des composants comme le LTC2986.
Diodes, diodes partout, mais pas une (chute Vbe) à boire…
Finalement, pour tester la véracité du nouveau membre du foyer, j'ai opté pour un capteur de température en silicium. Ils fonctionnent directement, n'ont pas besoin de compensation de température de jonction froide ni de linéarisation, sont disponibles avec sorties analogiques et numériques et sont pré-calibrés. Jusqu'à récemment, cependant, ils n'offraient qu'une précision modérée. Bien que suffisants pour indiquer l'état de santé d'équipements électroniques, ils n'ont jamais été assez précis pour mesurer, par exemple, la température corporelle, nécessitant généralement une précision de ±0,1 °C (selon la norme ASTM E1112). Cela a changé avec la sortie récente des capteurs de température en silicium ADT7422 et ADT7320 qui peuvent mesurer avec des résolutions de ±0,1 °C et ±0,2 °C respectivement.
Un capteur de température en silicium exploite la dépendance en température du Vbe d'un transistor, comme donné par l'équation d'Ebers-Moll, approximée par :
où Ic est le courant de collecteur, Is est le courant de saturation inverse du transistor, q est la charge d'un électron (1,602 x 10-19 Coulombs), k est la constante de Boltzmann (1,38 x 10-23) et T est la température absolue.
L'expression ci-dessus pour le courant de collecteur vaut également pour le courant dans une diode ; alors pourquoi chaque circuit d'application utilise un transistor et pas une diode ? En réalité, le courant dans une diode inclut également un courant de recombinaison résultant de la recombinaison des électrons avec les trous lorsqu'ils traversent la zone de déplétion de la jonction pn, ce qui présente une non-linéarité du courant de la diode avec Vbe et la température. Ce courant apparaît aussi dans un transistor bipolaire, mais se dirige vers la base du transistor, n'apparaissant donc pas dans le courant de collecteur, d'où une non-linéarité bien moindre.
En réarrangeant l'équation précédente, on obtient :
Is est faible comparé à Ic, on peut donc ignorer le terme « 1 » dans l'équation ci-dessus. On voit maintenant que Vbe varie linéairement selon un changement logarithmique de Ic. On voit aussi que si Ic et Is sont constants, alors Vbe varie linéairement avec la température, puisque k et q sont aussi constants. Il est facile de forcer un courant de collecteur constant dans un transistor et de mesurer comment Vbe change avec la température.
Is est lié à la géométrie du transistor et a une forte dépendance en température. Comme de nombreux dispositifs silicium, sa valeur double tous les 10 °C d'élévation de température. Bien que l'effet de ce changement de courant soit réduit par la fonction « ln », nous avons toujours le problème que la valeur absolue de Vbe change d'un transistor à l'autre, et donc une calibration est nécessaire. C'est pourquoi les capteurs de température en silicium pratiques utilisent deux transistors identiques et forcent un courant de collecteur Ic dans l'un et 10Ic dans l'autre. Des transistors identiques et des courants ratiométriquement précis sont faciles à fabriquer dans un circuit intégré, c'est pourquoi la plupart des capteurs silicium utilisent cette architecture. Le changement logarithmique de courant cause un changement linéaire de Vbe et la différence des Vbe est alors mesurée.
D'après l'équation ci-dessus, pour deux transistors maintenus à la même température, la différence entre leurs Vbe est donnée par :
puisque
On peut voir que
En forçant des courants différents à travers chaque transistor et en mesurant la différence de Vbe, nous avons éliminé le terme non-linéaire Is, l'effet des Vbe absolus différents et tous les autres effets non-linéaires associés à la géométrie du transistor. Puisque k, q et ln10 sont tous constants, le changement de Vbe est Proportionnel à la Température Absolue (PTAT). Pour une différence de courants de 10x, la différence des deux Vbe varie linéairement avec la température à environ 198 µV/°C. Un circuit simplifié pour y parvenir est montré à la Figure 1.

Figure 1. Circuit de base pour la mesure de température.
Les courants de la Figure 1 doivent être soigneusement choisis. Si le courant est trop élevé, un auto-échauffement significatif et des chutes de tension à travers les résistances internes du transistor corrompent le résultat. Si le courant est trop faible, les courants de fuite à l'intérieur du transistor ajoutent des erreurs significatives.
Il faut aussi noter que les équations ci-dessus concernent le courant de collecteur du transistor alors que la Figure 1 montre un courant d'émetteur constant injecté dans le transistor. Les transistors peuvent être conçus de sorte que le rapport collecteur/émetteur soit bien établi (et proche de l'unité), donc le courant de collecteur est proportionnel au courant d'émetteur.
Ce n'est que le début de l'histoire. Pour obtenir une précision de ±0,1 °C avec un capteur de température en silicium, une caractérisation et un ajustement (trimming) approfondis sont nécessaires.
Est-ce un oiseau ? Est-ce un avion ?
Non, c'est un super thermomètre. Oui, ils existent. Le capteur de température en silicium non calibré doit être placé dans un bain rempli d'huile de silicone et chauffé à une température précise, mesurée avec un super thermomètre. Ces dispositifs peuvent mesurer avec une précision meilleure que cinq décimales. Des fusibles à l'intérieur du capteur sont grillés pour ajuster le gain du capteur de température et ainsi linéariser sa sortie en utilisant l'équation y = mx + C. L'huile de silicone fournit une température très uniforme, permettant de calibrer de nombreux dispositifs en un seul cycle.
L'ADT7422 a une précision de ±0,1 °C, sur une plage de température de 25 °C à 50 °C. Cette plage est centrée autour de la température corporelle humaine typique de 38 °C, rendant l'ADT7422 idéal pour la surveillance précise des signes vitaux. Pour les applications industrielles, l'ADT7320 est ajusté pour avoir une précision de ±0,2 °C, mais sur une plage de température plus large de -10 °C à +85 °C.

Figure 2. L'ADT7422 monté sur un PCB de 0,8 mm d'épaisseur
La calibration du capteur de température en silicium n'est pas le seul problème. Comme pour les références de tension extrêmement précises, les contraintes sur la puce peuvent corrompre la précision du capteur et l'expansion thermique du PCB, du cadre de broches, du moulage plastique et des pastilles exposées doivent toutes être prises en compte. Le processus de brasage ajoute aussi ses propres problèmes. Le processus de refusion du brasage augmente la température d'une pièce à 260 °C, ramollissant l'emballage plastique et déformant le cadre de broches de la puce, de sorte que lorsque la pièce refroidit et que le plastique durcit, une contrainte mécanique est verrouillée dans la puce. Les ingénieurs d'Analog Devices ont passé de nombreux mois d'expérimentation délicate à découvrir qu'une épaisseur de PCB de 0,8 mm était le point idéal et qu'une précision de ±0,1 °C pouvait être atteinte, même après brasage.
À l'intérieur du logiciel
La majeure partie du logiciel du système concerne le formatage des données de l'ADT7320 et leur affichage sur l'écran LCD. Obtenir les données de l'ADT7320 est trivial. Lorsque le processeur est initialisé, les lignes CS et SCLK sont mises à l'état haut et la ligne SCLK reste haute entre les conversions. La ligne CS est ensuite mise à l'état bas pour initier une transaction de données. Avec SPI, les données sont lues dans l'ADT7320 sur le front montant de la ligne SCLK et sorties sur le front descendant. Le code ci-dessous détaille la routine d'initialisation.
Pour réinitialiser l'interface série, la ligne CS est mise à l'état bas, la ligne DOUT est mise à l'état haut et la ligne SCLK est oscillée 40 fois. La ligne CS est ensuite remise à l'état haut. Cela horloge 40 « 1 » dans l'ADT7320, réinitialisant l'interface série. Un délai d'au moins 500 µs est nécessaire après la réinitialisation du bus SPI.
Le bloc de code suivant envoie l'octet de commande à l'ADT7320 lui indiquant si la transaction est une lecture ou une écriture et quel registre adresser. La ligne
data = 0b00001000;
indique à l'ADT7320 d'écrire dans le registre 0x01. L'ADT7320 est ensuite programmé pour sortir des données avec une résolution de 16 bits en utilisant la ligne
data = 0b10000000;
La ligne DOUT est pré-conditionnée à « 0 », le bit de poids fort (MSB) de l'octet de données est interrogé et la ligne DOUT est mise à l'état haut si le MSB est « 1 ». La ligne SCLK est mise à l'état haut pour horloger les données dans l'ADT7320.
void reset_adt7320(void) /* initialise ADT7320 */ {
unsigned char n, data;
/* reset the serial interface */
clearbit(PORTA, CS);
setbit(PORTA, DOUT);
for(n=40; n>0; n--) {
clearbit(PORTA, SCLK);
setbit(PORTA, SCLK);
}
setbit(PORTA, CS);
delay_10ms(); /* must wait >500us after reset */
/* set to 16 bit mode */
clearbit(PORTA, CS);
data = 0b00001000; /* clear bit 6 (write), reg #001 */
/* send command byte */
for(n=8; n>0; n--) {
clearbit(PORTA, SCLK);
clearbit(PORTA, DOUT); /* precondition DOUT */
if checkbit(data, (n-1)) {
setbit(PORTA, DOUT);
}
setbit(PORTA, SCLK); /* clock data in on rising SCLK */
}
data = 0b10000000; /* continuous conversion, 16 bits */
/* send data byte */
for(n=8; n>0; n--) {
clearbit(PORTA, SCLK);
clearbit(PORTA, DOUT); /* precondition DOUT */
if checkbit(data, (n-1)) {
setbit(PORTA, DOUT);
}
setbit(PORTA, SCLK);
}
setbit(PORTA, CS);
}
L'appel de fonction pour obtenir les données de température est similaire, comme montré ci-dessous. La ligne
data = 0b01010000;
indique à l'ADT7320 de lire le registre 2 pour les données sur 16 bits.
Le code attend ensuite au moins 240 ms pour que l'ADT7320 effectue une conversion de température. 16 bits de données de température sont ensuite horlogés en sortie, puis la ligne CS est mise à l'état haut.
clearbit(PORTA, CS); /* data = command byte */
data = 0b01010000; /* read mode, register 2 */
/* read ADT7320 */
for(n=8; n>0; n--) {
clearbit(PORTA, SCLK);
clearbit(PORTA, DOUT); /* precondition DOUT */
if checkbit(data, (n-1)) {
setbit(PORTA, DOUT);
}
setbit(PORTA, SCLK);
}
delay_150ms(); /* temperature conversion */
delay_150ms();
/* read temperature data */
for(n=16; n>0; n--) {
clearbit(PORTA, SCLK);
if checkbit(PORTA, DIN) {
setbit(temp, (n-1));
}
setbit(PORTA, SCLK);
}
setbit(PORTA, CS);
Le jeu de code complet est disponible ici.
Alors, à quelle température sont mes saucisses, exactement ?
L'ADT7320 a été laissé à l'intérieur du congélateur pendant environ 30 minutes pour voir à quelle température notre nouvel achat se stabilisait.
La Figure 3 montre la température du congélateur à -18,83 °C.

Figure 3. La température du congélateur à -18,83 °C
J'ai considéré cela comme impressionnamment précis étant donné que les aliments n'ont pas besoin d'être stockés à ce niveau de précision de température. J'ai ensuite mesuré la température dans mon bureau un jour d'été au Royaume-Uni. 22,87 °C comme montré à la Figure 4.

Figure 4. La température de mon bureau à 22,87 °C
Conclusion
Les capteurs de température en silicium ont fait d'énormes progrès, devenant extrêmement précis, permettant la surveillance des signes vitaux avec un haut niveau de précision. Bien que la technologie à l'intérieur d'eux repose sur des principes bien fondés, l'ajustement nécessaire pour les amener à une précision sous-degré demande un effort significatif. Même si ce niveau de précision est atteint, les contraintes mécaniques et le brasage peuvent facilement annuler les gains obtenus après des heures de calibration.
L'ADT7320 et l'ADT7422 représentent le summum de années de caractérisation pour atteindre une précision sous-degré même après être brasés sur le PCB.
Références
Huijsing, Johan et Michiel Pertijis. Precision Temperature Sensors in CMOS Technology. Springer, 2006.
Horowitz, Paul et Winfield Hill. The Art of Electronics. Cambridge University Press, avril 2015.
Analog Circuit Design, Volume 2, Chapter 32. Linear Technology, décembre 2012.
AD590 datasheet. Analog Devices, Inc., janvier 2013.
ADT5912 data sheet (à paraître). Analog Devices, Inc.
Embarqué
- Silicium : Propriétés, production et perspectives de marché
- Guide complet des types de capteurs et schémas de circuits
- Infineon dévoile capteurs angle AMR haute précision pour auto et industriel
- ams illumine Sensors Expo 2019 avec vitrines capteurs optiques cutting-edge
- Nouveaux capteurs Maxim : consommation divisée par 2, taille réduite de 40%, précision accrue pour wearables santé
- IBASE lance des modules COM Express robustes (ET875 & ET870) supportant -40°C à +85°C pour applications IoT et industrielles
- Cartographie thermique intérieure économique avec capteurs低成本
- Connecter plusieurs capteurs DS18B20 1-Wire à un Raspberry Pi pour une surveillance température précise
- Comment lire la température avec un DS18B20 sur Raspberry Pi 2