Capteur de température I2C LM75

Capteur de température I2C LM75

Capteur de température I2C LM75

Capteur de température LM75 I2C, thermomètre, bus I2C

Table des matières

    Principe de fonctionnement

    El IC LM75 est un capteur de température à bande interdite à semi-conducteur en silicium.

    Dans les semi-conducteurs, le bande interdite C’est la zone d’énergie des électrons qui ne peut pas être augmentée avec une augmentation du champ électrique car il n’existe aucun état disponible pour se déplacer plus rapidement. Ce bande interdite est inclus entre le bande de valence (énergie inférieure) et le bande de conduite (énergie plus élevée). L'excitation thermique (l'augmentation de la température, pour les besoins qui nous intéressent) peut amener certains électrons à acquérir suffisamment d'énergie pour passer dans le bande de conduite.

    Comme expliqué dans l'article précédent sur le mesure électronique de la température, dans les métaux, bien que le nombre de porteurs ne dépende pas de la température (tous les électrons sont toujours disponibles), leur mobilité est affectée par la température, de sorte que la résistance des métaux augmente avec la température en raison de la diminution de la vitesse des électrons due à l'augmentation de leur agitation thermique et la diffusion des électrons qu'elle produit.

    Dans le cas des semi-conducteurs, du fait de la présence de ce bande interdite Le nombre de supports dépend de la température (en fonction de la Distribution de Fermi-Dirac) provoquant une augmentation de la conductivité avec la température. Dans les semi-conducteurs, l’augmentation de la température produit une augmentation de la résistance mais produit également une (encore) augmentation de la conductivité.

    Les capteurs de température à bande interdite à semi-conducteurs en silicium, comme c'est le cas du LM75, fonctionnent selon ce principe, permettant de déterminer la température en quantifiant son influence sur la tension dans une diode au silicium.

    Composants matériels LM75

    Le LM75 dispose également d'un convertisseur analogique-numérique par modulation Sigma-Delta qui est chargé d'obtenir la valeur numérique (numérique) de la température, valeur qui est ensuite stockée (toutes les 100 ms) dans l'un de ses registres à partir duquel elle peut être lue via le bus I2C.

    Capteur de température LM75 I2C. Schéma simplifié des blocs opératoires

    En plus du registre qui contient la température mesurée, le LM75 dispose d'un registre dans lequel peut être stockée une température maximale ainsi qu'un comparateur capable de générer un signal si la température mesurée dépasse celle stockée dans ce deuxième registre. Afin de ne pas relancer l'avertissement avant que la température mesurée ne descende en dessous d'un certain niveau, un troisième registre permet de stocker une valeur pour la température de hystérèse.

    La configuration du fonctionnement du LM75 est stockée dans un quatrième registre avec lequel sont déterminées les conditions dans lesquelles l'avertissement est généré, la manière de lancer ce signal d'avertissement (mode interruption ou mode comparaison) ainsi que l'activation du dispositif (mode). (fonctionnement normal ou faible consommation) entre autres paramètres.

    Spécifications techniques et mise en œuvre du LM75

    La plage de températures que le LM75 est capable de mesurer varie de −55 °C à +125 °C et la résolution numérique est de 0.125 °C bien que la précision ne soit que de ±2 °C dans le meilleur des cas, lorsque la température est comprise entre − 25 °C et +100 °C et une précision de ±3 °C avec les températures les plus extrêmes, entre −55 °C et +125 °C.

    LM75. Capteur de température I2C. Brochage

    L'implémentation (matériel) du LM75 dans un circuit est très simple, il ne nécessite pas plus de composants que de résistances pull-up de la bus I2C et peut être alimenté avec une tension comprise entre 2,8 V et 5,5 V. De la même manière bus I2C Il est possible de disposer jusqu'à huit thermomètres LM75 en configurant leur adresse avec les trois broches A0, A1 et A2 au niveau haut ou bas, comme c'est l'habitude dans ces cas.

    LM75. Capteur de température I2C. Circuit d'application

    En revanche, l'utilisation du LM75 comme sonde est inconfortable du fait des emballages dans lesquels il est présenté, POSST (TSSOP8) O SOIC (SO8) et est normalement utilisé pour mesurer la température ambiante ou pour mesurer la température de composants disposés dans l'environnement du PCB dans lequel se trouve le thermomètre LM75.

    Au démarrage, le LM75 est configuré pour détecter une température maximale de +80°C, une température de hystérèse de +75 °C et le mode de fonctionnement du comparateur, c'est-à-dire le mode qui émule le fonctionnement d'un thermostat : il active l'avertissement lorsque la température maximale est atteinte et seulement si elle descend en dessous de la hystérèse Régénère l'avis.

    Exploitation du LM75 depuis un microcontrôleur via le bus I2C

    Merci à l'utilisation de bus I2C Le fonctionnement du LM75 est très simple, il suffit d'accéder à l'adresse qu'il occupe sur le bus pour stocker ou lire la configuration et obtenir la valeur de la température mesurée.

    L'adresse I2C la base du LM75 est 0B01001XXX et est complétée, comme expliqué ci-dessus, par les trois derniers bits d'adresse qui sont définis par le matériel avec les broches A0, A1 et A2 hautes (valeur un) ou basses (valeur zéro).

    Le LM75 comme thermomètre

    Le registre qui stocke la dernière température mesurée (TEMP) est situé à l'adresse 0x00, le registre de configuration (CONF) est à l'adresse 0x01, le registre qui stocke la température de hystérèse à l'adresse 0x02 et la température maximale ou surchauffe (TOS) a l'adresse 0x03. À l'exception de la température actuelle (TEMP), tous fonctionnent en lecture et en écriture.

    En utilisant quelques exemples de code développés pour Arduino (qui est devenu une référence quasi universelle) le fonctionnement du LM75 peut être encore précisé. L'exemple utile le plus élémentaire consiste à utiliser le LM75 comme thermomètre en lisant l'enregistrement de la dernière température mesurée.

    Le processus est habituel lorsque l'on travaille avec un appareil I2C:

    1. Ajouter la bibliothèque I2C au code avec #include <Wire.h>
    2. Initialiser la bibliothèque I2C à l'aide Wire.begin();
    3. Accédez au capteur de température LM75 via Wire.beginTransmission(DIRECCION_LM75)
    4. Envoyer l'adresse du registre consulté en utilisant Wire.write(REGISTRO)
    5. Relâchez le bus I2C avec Wire.endTransmission()
    6. Réaccéder au LM75
    7. Demandez la valeur de registre avec Wire.requestFrom(DIRECCION,CANTIDAD)
    8. Vérifiez que les données ont été reçues en utilisant Wire.available()
    9. Lire la valeur demandée Wire.read() (autant de fois que d'octets le composent)
    10. Bien que ce ne soit pas indispensable, une fois terminé, relâchez le bus I2C

    En plus du protocole habituel pour obtenir ou stocker des informations dans les journaux de l'appareil à l'aide du bus I2C, pour exploiter les données fournies par le LM75, il est nécessaire de considérer le format dans lequel il représente en interne la température.

    Obtention de la valeur stockée dans les enregistrements de température du LM75

    Sur la ligne 22 du code de l'exemple précédent vous pouvez voir comment charger les informations stockées par les trois registres de température du LM75. Il utilise deux octets (16 bits) dont seuls les 11 bits de poids fort sont valides. Pour lire la température sous forme d'un nombre entier (avec le signe codé en complément à deux) l'octet de poids fort est chargé en premier dans une variable int de Arduino et il subit une rotation de 8 bits vers la gauche, le laissant dans la partie la plus significative du int. Le deuxième octet est ensuite lu et ajouté à la variable. int avec une opération OU

    Interprétation de la valeur de température chargée du LM75

    À la ligne 24, vous pouvez voir comment interpréter la valeur de la température. Tout d'abord, il faut diviser par 32 sous forme d'entier (faire tourner les 11 bits correspondants sans perdre le signe) et diviser par 8, qui est le nombre de "pas" avec lesquels la température est représentée (octaves de degré) pour obtenir une valeur de type float avec les décimales correspondantes. Depuis les compilateurs (y compris le chaîne d'outils de Arduino) optimisez la division entière par 32, il n'est pas nécessaire de conserver le signe et de faire tourner "manuellement" les bits, car l'opération n'est pas (sensiblement) plus rapide.

    Vérifier la réception des données du bus I2C

    Bien que le code précédent fonctionnera sans problème même s'il ne vérifie pas si les données demandées par l'appareil sont arrivées. bus I2C, la chose la plus orthodoxe (et la plus conseillée) est d'attendre que les données arrivent en nombre approprié. La vitesse de transmission et la résistance aux erreurs étant plus que suffisantes, il est courant de trouver du code dans lequel les données sont simplement demandées et lues sans attendre. Pour les exemples, il est utile de procéder de cette façon car ils ne détournent pas l'attention de l'intention principale mais pour le code de production, il est conseillé de procéder comme suggéré dans le septième point de la liste du processus de communication. I2C. Le code de l'exemple suivant met en évidence les modifications recommandées pour utiliser le LM75 en phase d'exploitation.

    Configurer le fonctionnement du LM75

    La configuration la plus basique du LM75 consiste à établir la température maximale pour générer l'avertissement et le hystérèse, qui déterminera quand il sera désactivé et pourra être répété. Pour configurer ces valeurs il suffit de les stocker dans les registres correspondants.

    Comme l'enregistrement de température actuel, la température maximale (d'avertissement) et hystérèse Ils utilisent deux octets mais contrairement au premier ils ne considèrent pas 11 bits (un huitième de degré) mais 9 (un demi-degré) de sorte que, même si une valeur plus petite était stockée, seuls les intervalles de cette résolution seraient pris en compte.

    Puisque dans le code précédent seule la configuration des températures liées à l'avertissement est modifiée, le reste de l'opération correspond à la configuration par défaut.

    Dans cette configuration par défaut il y a deux caractéristiques qui sont pertinentes, d'abord le mode d'avertissement, par défaut ce qu'on appelle "mode thermostat" qui consiste à activer l'avertissement lorsque la température maximale (ou avertissement) est atteinte et à ne le désactiver qu'en dessous de la température maximale (ou avertissement). température de hystérèse. L'alternative est le "mode interruption", dans lequel le signal est activé lorsqu'il dépasse le maximum ou lorsqu'il atteint une valeur inférieure à celle du hystérèse et est réinitialisé en lisant n'importe quel enregistrement, normalement la température actuelle.

    La deuxième caractéristique est que le signal d'avertissement est activé à un niveau bas, c'est-à-dire que la broche du système d'exploitation est à un niveau haut jusqu'à ce que la température maximale d'avertissement soit atteinte. Puisque la polarité du signal d'avertissement (le niveau auquel il est activé) est configurable, dans certaines installations simples, il suffira d'utiliser ce signal (matériel) pour exploiter le LM75, par exemple, connecter ou déconnecter un ventilateur lorsque le système atteint une certaine température.

    Il est également possible de configurer le fonctionnement du LM75 pour qu'il n'avertisse pas immédiatement après avoir atteint la température d'avertissement mais qu'il le fasse après plusieurs incidents. Ce comportement est très utile lorsqu'on travaille à la limite de température ou lorsque celle-ci varie très rapidement. Le LM75 peut être configuré pour avertir après avoir dépassé la température maximale une, deux, quatre ou six fois.

    Dans le registre de configuration il y a aussi un bit pour désactiver ("éteindre") le LM75 et entrer dans un mode basse consommation, dont on sort en changeant à nouveau ce bit ou simplement lors de la lecture du registre suivant.

    Poster un commentaire

    Vous avez peut-être manqué