Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial Internet of Things >> Embarqué

Mesure de précision avec des capteurs de température en silicium

L'industrie électronique exige toujours plus de niveaux de précision 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 ses inconvénients. Les capteurs de température au silicium, tout en étant assez linéaires, n'ont jamais offert la précision d'autres solutions. Cependant, les récents progrès dans la détection de la température du silicium signifient qu'une résolution et une précision élevées peuvent désormais être atteintes avec une solution de silicium.

Un nouveau congélateur

C'était en mars 2020 et le Royaume-Uni était sur le point de se verrouiller. Le monde s'approvisionnait en nourriture au cas où les supermarchés fermeraient et l'avenir semblait incertain. Ensuite, le congélateur de la maison Bramble a cessé de fonctionner. Avec les paroles 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 en ligne un nouveau remplaçant.

Quelques jours plus tard, notre nouveau congélateur est arrivé, avec un affichage numérique de la température sur le panneau avant, comme le souhaitait Mme Bramble. Le réglage recommandé était de -18°C et au bout d'une heure, l'appareil était à la bonne température et prêt à recevoir des aliments. J'étais sceptique quant à l'exactitude de la lecture de la température, mais je m'en fichais tant qu'elle congelait les aliments. Un problème, cependant, un esprit d'ingénierie est un esprit agité, et après des jours de lecture numérique ostensiblement sage me fixant sans ciller, me défiant avec ses déclarations confiantes, je me suis effondré. J'ai dû tester les affirmations 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 présentant des avantages et des inconvénients. Étant donné que de nombreux textes détaillent le fonctionnement de divers capteurs de température, je ne répète pas les détails ici, mais propose 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 constituée de métaux différents, maintenus à des températures différentes, comme l'a découvert Thomas Seebeck en 1821. Dans le cas d'un thermocouple de type K (fait des alliages Chromel et Alumel), il émet une tension d'environ 41μV/°C et peut être utilisé pour mesurer des températures supérieures à 1000°C. Néanmoins, l'effet Seebeck repose sur une différence de température entre deux jonctions, alors 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 nécessaire à la jonction froide pour mesurer la différence de température et des pièces telles que l'AD8494 fournissent la solution parfaite pour ce faire. Étant donné que les thermocouples sont physiquement petits, ils ont une faible masse thermique, ils réagissent donc rapidement aux changements de température.

RTD

Pour mesurer des températures modérées (<500°C), les détecteurs de température résistifs (RTD) sont largement utilisés par l'industrie. Ces dispositifs sont constitués d'un élément métallique qui présente un changement positif de résistance avec la température, le plus souvent en platine. En effet, le capteur PT-100 est le RTD le plus utilisé dans l'industrie et il tire son nom d'être fabriqué à partir de Platine (PT) et d'avoir une résistance de 100Ω à 0°C. Bien que ces appareils ne mesurent pas la température élevée d'un thermocouple, ils sont très linéaires et leur lecture est reproductible. Un PT100 a besoin d'un courant d'entraînement 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 résistance du capteur, donc la détection Kelvin est typique, ce qui entraîne des capteurs à 3 ou 4 fils.

Thermistances

Si une solution à faible coût 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, entraînant une réduction de la résistance avec l'augmentation de la température. L'avantage d'une thermistance est que le changement de résistance est important avec de petits changements de température, de sorte qu'un niveau élevé de précision peut être atteint malgré sa non-linéarité. Les thermistances présentent également une réponse thermique rapide. Les non-linéarités des thermistances individuelles sont bien définies, elles peuvent donc être calibrées à l'aide de composants tels que le LTC2986.

Des diodes, des diodes partout, mais pas un (Vbe) Drop to Sink…

Enfin, pour tester la véracité du nouveau membre du foyer, j'ai opté pour un capteur de température en silicium. . Jusqu'à récemment, cependant, ils n'offraient qu'une précision modérée. Bien qu'assez bons pour indiquer l'état de santé des é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 récente sortie des capteurs de température au silicium ADT7422 et ADT7320 qui peuvent mesurer à des résolutions de ±0,1°C et ±0,2°C respectivement.

Un capteur de température au silicium exploite la dépendance à la température du Vbe d'un transistor , telle que donnée par l'équation d'Ebers Moll, approximée par :

Ic est le courant du collecteur, Est 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 est également vraie pour le courant dans une diode ; alors pourquoi chaque circuit d'application utilise-t-il un transistor et non une diode ? En réalité, le courant dans une diode comprend également un courant de recombinaison résultant de la recombinaison des électrons avec les trous lorsqu'ils traversent la région d'appauvrissement de la jonction pn et cela présente une non linéarité du courant de la diode avec Vbe et la température. Ce courant apparaît également dans un transistor bipolaire, mais circule dans la base du transistor et n'apparaît donc pas dans le courant de collecteur, d'où la non linéarité est beaucoup moins.

Réorganiser ce qui précède donne

Est est petit par rapport à Ic , nous pouvons donc ignorer le '1' terme dans l'équation ci-dessus. Nous pouvons maintenant voir que Vbe change linéairement selon un changement logarithmique dans Ic . On peut aussi voir que si Ic et Est sont constants alors Vbe change linéairement avec la température, puisque k et q sont également constants. C'est une tâche facile de forcer un courant de collecteur constant dans un transistor et de mesurer comment le Vbe change avec la température.

Est est lié à la géométrie du transistor et a une forte dépendance à la température. Comme de nombreux appareils au silicium, sa valeur double à chaque augmentation de température de 10 °C. Alors que l'effet de ce changement de courant est réduit par le 'ln' fonction, nous avons toujours le problème que la valeur absolue de Vbe passe d'un transistor à l'autre et un étalonnage est donc nécessaire. Les capteurs de température au silicium pratiques utilisent donc deux transistors identiques et forcent un courant de collecteur de Ic en 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 au silicium utilisent cette architecture. La variation logarithmique du courant provoque une variation linéaire de Vbe et la différence dans le Vbe 's est alors mesuré.

D'après l'équation ci-dessus, pour deux transistors tenus à la même température , la différence entre leur Vbe 's est donné par

depuis

Nous pouvons voir que

En forçant des courants différents à travers chaque transistor et en mesurant la différence de Vbe , nous avons supprimé le Est non linéaire terme, l'effet de différents Vbe absolus et tous les autres effets non linéaires associés à la géométrie du transistor. Depuis k , q et ln 10 sont tous constants, le changement de Vbe est proportionnelle à la température absolue (PTAT). Pour une différence de courants 10x, la différence entre les deux Vbe 's change linéairement avec la température à environ 198μV/°C. Un circuit simplifié pour y parvenir est illustré à la figure 1.


Figure 1. Un circuit de base pour mesurer la température.

Les courants de la figure 1 doivent être choisis avec soin. Si le courant est trop élevé, un auto-échauffement important et des chutes de tension à travers les résistances internes à l'intérieur du transistor altèrent le résultat. Si le courant est trop faible, les courants de fuite à l'intérieur du transistor ajoutent des erreurs importantes.

Il convient également de noter que les équations ci-dessus se rapportent au collecteur courant du transistor alors que la figure 1 montre un émetteur constant courant injecté dans le transistor. Les transistors peuvent être conçus de telle sorte que le rapport courant collecteur/émetteur soit bien établi (et proche de l'unité), de sorte que le courant collecteur soit proportionnel au courant é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 au silicium, une caractérisation et un ajustement approfondis doivent être effectués.

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 étalonné 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 appareils peuvent mesurer avec une précision supérieure à cinq décimales. Les 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, de sorte que de nombreux appareils peuvent être étalonnés 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 de température est centrée autour de la température typique du corps humain de 38 °C, ce qui rend l'ADT7422 idéal pour une surveillance précise des signes vitaux. Pour les applications industrielles, l'ADT7320 est taillé et a donc 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

L'étalonnage du capteur de température au silicium n'est cependant pas le seul problème. Comme pour les références de tension extrêmement précises, les contraintes sur la puce peuvent altérer la précision du capteur et la dilatation thermique du PCB, du cadre de connexion, du moulage en plastique et des pastilles exposées doit toutes être prise en compte. Le processus de soudure ajoute également ses propres problèmes. Le processus de refusion de la soudure augmente la température d'une pièce à 260 °C, provoquant le ramollissement de l'emballage en plastique et la déformation du cadre de connexion de la matrice, de sorte que lorsque la pièce refroidit et que le plastique durcit, une contrainte mécanique est verrouillée dans la matrice. Les ingénieurs d'Analog Devices ont passé de nombreux mois d'expérimentation délicate pour 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 soudage.

À l'intérieur du logiciel

La majeure partie du logiciel du système consiste à formater les données de l'ADT7320 et à les afficher sur l'écran LCD. Obtenir les données de l'ADT7320 est trivial. Lorsque le processeur est initialisé, les lignes CS et SCLK sont toutes deux mises à l'état haut et la ligne SCLK est au repos entre les conversions. La ligne CS est ensuite prise au niveau 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 prise au niveau bas, la ligne DOUT est prise au niveau haut et le SCLK est oscillé 40 fois. La ligne CS est alors prise haut. Cela enregistre 40 '1 dans l'ADT7320, réinitialisant l'interface série. Un délai d'au moins 500 us est nécessaire après la réinitialisation du bus SPI.

Le prochain bloc de code envoie l'octet de commande à l'ADT7320 en lui indiquant si la transaction est une lecture ou une écriture et quel registre adresser. La ligne

data =0b00001000;

ordonne à l'ADT7320 d'écrire dans le registre 0x01. L'ADT7320 est ensuite programmé pour sortir des données à une résolution de 16 bits en utilisant la ligne

data =0b10000000;

La ligne DOUT est préconditionnée à « 0 », le 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 élevée pour cadencer les données dans l'ADT7320.

void reset_adt7320(void)            /* initialiser ADT7320 */{     unsigned char n, data ; /* réinitialiser l'interface série */        clearbit(PORTA, CS); setbit(PORTA, DOUT); for(n=40; ​​n>0; n--)        {                clearbit(PORTA, SCLK); setbit(PORTA, SCLK); }        setbit(PORTA, CS); délai_10ms(); /* doit attendre> 500 us après la réinitialisation */            /* défini sur le mode 16 bits */        clearbit(PORTA, CS); données =0b00001000 ; /* clear bit 6 (write), reg #001 */        /* send command byte */        for(n=8; n>0; n--)        {                clearbit(PORTA, SCLK); clearbit(PORTA, DOUT); /* condition préalable DOUT */                    if checkbit(data, (n-1))                {                        setbit(PORTA, DOUT); }                setbit(PORTA, SCLK); /* horloge des données lors de l'augmentation du SCLK */        }        data =0b10000000 ; /* conversion continue, 16 bits */        /* envoyer l'octet de données */        for(n=8; n>0; n--)        {                clearbit(PORTA, SCLK); clearbit(PORTA, DOUT); /* condition préalable 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 à celui indiqué ci-dessous. La ligne

data =0b01010000;

indique à l'ADT7320 de lire le registre 2 pour les données 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 cadencés, puis la ligne CS est mise à l'état haut.

     clearbit(PORTA, CS) ; /* data =octet de commande */    data =0b01010000 ; /* mode lecture, registre 2 */       /* lecture ADT7320 */    for(n=8; n>0; n--)    {         clearbit(PORTA, SCLK); clearbit(PORTA, DOUT); /* condition préalable DOUT */                if checkbit(data, (n-1))            {                    setbit(PORTA, DOUT); }            setbit(PORTA, SCLK); }    delay_150ms(); /* conversion de température */    delay_150ms(); /* lire les données de température */    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 codes complet est disponible ici.

Alors, à quel point mes saucisses sont-elles froides, exactement ?

L'ADT7320 a été laissé à l'intérieur du congélateur pendant environ 30 minutes pour voir à quelle température notre nouvel achat s'est installé.

La figure 3 montre que la température du congélateur est de -18,83 °C.


Figure 3. La température du congélateur à -18,83°C

J'ai considéré que cela était d'une précision impressionnante é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 illustré à la figure 4. 


Figure 4. La température de mon bureau à 22,87°C

Conclusion

Les capteurs de température au silicium ont parcouru un long chemin, devenant extrêmement précis, permettant une surveillance des signes vitaux avec un haut niveau de précision. Bien que la technologie qu'ils contiennent soit basée sur des principes bien fondés, le rognage requis pour les amener à des niveaux de précision inférieurs nécessite des efforts importants. Même si ce niveau de précision est atteint, les contraintes mécaniques et les soudures peuvent facilement effacer les gains obtenus grâce aux heures d'étalonnage.

Les ADT7320 et ADT7422 représentent le summum d'années de caractérisation pour atteindre un niveau de précision inférieur même après avoir été soudés sur le PCB.

Références

Huijsing, Johan et Michiel Pertijis. Capteurs de température de précision en technologie CMOS. Springer, 2006.
Horowitz, Paul et Winfield Hill. L'art de l'électronique . Cambridge University Press, avril 2015.
Analog Circuit Design, Volume 2, Chapter 32. Linear Technology, décembre 2012.
Fiche technique AD590. Analog Devices, Inc., janvier 2013.
Fiche technique ADT5912 (à paraître). Analog Devices, Inc.


Embarqué

  1. Silicium
  2. Types de capteurs avec leurs schémas de circuit
  3. Infineon :capteurs d'angle basés sur AMR en version simple et double matrice
  4. ams illuminera Sensors Expo 2019 avec des démonstrations innovantes
  5. Capteurs de santé de Maxim pour les appareils portables de très petite taille
  6. IBASE :modules COM Express avec plage de température de fonctionnement étendue
  7. Cartographie du flux de température domestique avec des capteurs bon marché
  8. Mesure des températures avec un capteur DS18B20 1 fil et Raspberry Pi
  9. Lire la température avec DS18B20 | Raspberry Pi 2