Figure 1: Schéma de circuit du thermomètre numérique utilisant le capteur thermique TC74

Le TC74 est un capteur de température numérique accessible en série avec bus I2C, particulièrement adapté aux applications à faible coût et aux facteurs de forme réduits. Les données de température sont converties à partir de l’élément de détection thermique intégré et sont disponibles sous forme de word numérique à 8 bits.

La communication avec le TC74 s’effectue via un simple port série compatible I2C à 2 fils. Ce bus peut également être utilisé pour mettre en œuvre une surveillance multipoint / multi-zone. Le bit SHDN du registre CONFIG peut être utilisé pour activer le mode veille à faible consommation. La résolution de la température est de 1 ° C. Le taux de conversion est nominal 8 échantillons / sec. Consommation électrique dans seulement 200 µA (5 µA en veille).

La petite taille, le faible coût d’installation et la facilité d’utilisation font du TC74 un choix idéal pour la gestion thermique dans une variété de systèmes.

Descriptions des broches

Figure 2: Descriptions des broches du TC74

Ci-dessous la description de chaque broche:

Tableau 1: Descriptions des broches du TC74

Le TC74 enregistre la température mesurée dans son registre de température à 8 bits au format binaire complément à 2. Le bit le plus significatif est le bit de signe, qui est défini sur 1 pour les températures négatives. Par conséquent, la température positive maximale mesurable est de + 127 ° C (0111 1111).

Chaque valeur unitaire représente un degré (Celsius). Par exemple, 0000 0000b correspond à 0 ° C et 0001 1001b à + 25 ° C. Des exemples de cette relation entre la température et les valeurs binaires sont présentés dans le tableau 2 ci-dessous.

Tableau 2: TC74 Relation température / valeur binaire

Le TC74 dispose également d’un autre registre de configuration lecture / écriture (RWCR) 8 bits utilisé pour placer l’appareil en mode veille à faible consommation (IDD = 5 µA, typique). Dans ce mode, le convertisseur analogique-numérique est arrêté et les registres de données de température sont gelés. Le bit 7 de RWCR doit être défini pour mettre le TC74 en mode veille.

Tableau 3: Registre de configuration du TC74

Pour plus d’informations, veuillez consulter la fiche technique du TC74.

Regardez le tutoriel vidéo

Fonctionnement du port série

L’entrée d’horloge série (SCLK) et le port de données bidirectionnel (SDA) forment un port série bidirectionnel à 2 fils pour la programmation et l’interrogation du TC74.

Le microcontrôleur hôte communique avec l’esclave TC74 via le bus I2C. Le microcontrôleur hôte fournit le signal d’horloge pour tous les transferts de données et le TC74 fonctionne toujours comme un esclave. L’adresse I2C 7 bits par défaut de TC74 est 1001 101b (ox4D). Cependant, 7 autres options d’adresse sont également disponibles et peuvent être identifiées à partir du numéro de référence de l’appareil.

Le protocole I2C est illustré à la figure 3 ci-dessous. Tous les transferts de données ont deux phases et tous les octets sont transférés en premier. Les accès sont initiés par une condition START, suivie d’un octet d’adresse de périphérique et d’un ou plusieurs octets de données (data).
L’octet d’adresse du périphérique comprend un bit de sélection Lecture / Écriture. Chaque accès doit être terminé par une condition STOP. Une convention appelée «accusé de réception» (ACK) confirme la réception de chaque octet. Notez que SDA ne peut changer que pendant les périodes où SCLK est faible (les modifications de SDA lorsque SCLK est élevée sont réservées aux conditions START et STOP).

Figure 3: fonctionnement du port série du TC74

Pour en savoir plus sur la communication par bus I2C, veuillez lire l’article:

Communication du microcontrôleur PIC avec le bus I2C

Étapes pour lire la température:

  • Le microcontrôleur hôte émet une condition de démarrage (START) suivie de l’octet d’adresse du capteur. L’octet d’adresse est composé de l’adresse de l’esclave de 7 bits et d’un bit de lecture / écriture (R / W). Le bit R / W est toujours à « 0 » (écriture) dans la première phase.
  • TLe TC74 répond par un ACK (accusé de réception) si l’adresse de 7 bits reçue correspond à sa propre adresse d’esclave.
  • Ensuite, le microcontrôleur hôte envoie l’octet de commande à TC74 pour indiquer le registre auquel il veut accéder. Pour lire la température, l’octet de commande doit être 00h. Le TC74 répond par une impulsion d’accusé de réception.
  • Le microcontrôleur hôte émet une nouvelle condition de démarrage car la direction du transfert de données va maintenant être modifiée. Le nouvel octet d’adresse avec le bit 1 de R / W est envoyé par l’hôte, ce qui est reconnu par l’esclave.
  • Le TC74 transmet les données de température sur 8 bits à partir du registre de température. À la réception de l’octet, l’hôte n’acquitte pas l’accusé mais génère une condition d’arrêt (STOP).

Achetez les composants pour ce projet dans notre Boutique en ligne

Le schéma de circuit du projet se trouve à la figure 1 ci-dessus, le PIC18F45K22 est utilisé, mais tout autre PIC avec interface I2C peut être utilisé. N’oubliez pas de mettre deux résistances pull-up sur les lignes SDA et SCL du bus I2C.

Pour tout simplifier, nous allons utiliser le Configurateur de code MPLAB (MCC).

  • Dans MCC, nous allons régler notre sélection d’oscillateur sur un oscillateur interne à 8 MHz. nous allons aussi désactiver la broche MCLR.
  • Dans le module de broches, définissez RB0 sur RB6 en tant que broches de sortie numériques pour nos connexions LCD.

Pour en savoir plus sur l’utilisation de l’écran LCD, veuillez lire l’article:

Afficher du texte sur un écran LCD alphanumérique avec un microcontrôleur PIC

Ce qui est important pour nous dans ce tutoriel, c’est la configuration I2C avec MCC. Comme indiqué sur la figure 4 ci-dessous:

  • Sélectionnez le MSSP1 sous Ressources du périphérique.
  • Sélectionnez I2C Master (Maitre)
  • Contrôle Slew rate, sélectionnez la vitesse standard,
  • Réglez la fréquence d’horloge I2C à 100 KHz ou moins en modifiant la valeur du générateur de débit en bauds, qui est normalement appelée vitesse standard. Cette valeur dépend de la fréquence d’horloge du système.
  • Définir l’adresse de l’esclave pour 7 bits

Figure 4: Configuration du capteur TC74 I2C avec MCC

En cliquant sur le bouton MCC Generate, un certain nombre de fichiers d’en-tête et sources seront générés automatiquement pour nous, notamment les fichiers I2c1.h et I2C1.c

Vous pouvez lire I2C1.h pour une brève description des fonctions prototypes et macros générées par MCC. Vous pouvez également cliquer avec le bouton droit de la souris sur les périphériques et sélectionner l’aide pour en savoir plus sur la façon de les utiliser avec une option sur une page wiki.

Vous trouverez ci-dessous un résumé rapide de quelques fonctions que nous allons utiliser dans ce tutoriel. Pour plus d’informations, veuillez lire la description de chaque fonction dans le fichier i2c.h généré par MCC ou consultez notre tutoriel sur la communication I2C.

  • I2C1_MESSAGE_STATUS: Définit les différents statuts de message lors du traitement de TRB (Transanction Request Block)
  • I2C_Initialize(): Cette routine initialise l’instance de pilote i2c1 pour index, la préparant ainsi aux clients à l’ouvrir et à l’utiliser.
  • I2C_MasterWrite():Cette fonction gère une transaction d’écriture principale i2c avec les paramètres fournis. Il envoie les données à la file d’attente i2c, attend la fin de la transaction et renvoie le résultat. Les paramètres sont:
    • address: L’adresse du périphérique esclave i2c auquel il faut accéder
    • length: La longueur du bloc de données à envoyer
    • *pdata: Un pointeur sur le bloc de données à envoyer
    • *pstatus: Un pointeur sur la variable d’état
  • I2C_MasterRead():Cette fonction gère une transaction de lecture principale i2c avec les paramètres fournis. Il envoie les données à la file d’attente i2c, attend la fin de la transaction et renvoie le résultat. Les paramètres sont:
    • address: L’adresse du périphérique esclave i2c auquel il faut accéder
    • length: La longueur du bloc de données à envoyer
    • *pdata: Un pointeur sur le bloc de données à envoyer
    • *pstatus: Un pointeur sur la variable d’état
  • I2C1_MasterTRBInsert(): Insère une liste de demandes de transaction i2c dans la file d’attente de transaction i2c. L’i2c traite des listes de demandes de transaction. Chaque liste de transactions est traitée comme une chaîne de redémarrages i2c. Lorsque la liste des transactions est terminée, un arrêt i2c est généré, l’indicateur est défini avec le code de condition correct et la liste suivante est traitée à partir de la file d’attente.
  • I2C_MasterQueueIsEmpty(): Cette fonction renvoie le statut vide de la file d’attente principale. Vous pouvez utiliser cette fonction pour vérifier si la file d’attente est vide. Cela peut vérifier si le maître est actuellement inactif. Cette fonction retournera True (Vrai) si la file d’attente est vide et false (Faux) si la file d’attente n’est pas vide.

Les pilotes MCC I2C Master sont basés sur une machine à états pilotée par interruption conçue pour effectuer automatiquement de petites transactions I2C. Ceux-ci peuvent être mis en file d’attente pour obtenir des séquences personnalisées selon les besoins de chaque application spécifique, par exemple un MasterWrite suivi d’un MasterRead.

Lors de l’appel d’un Write, Read ou TRBInsert, nous allons transmettre au pilote I2C un pointeur sur une variable d’état I2C1_MESSAGE_STATUS qui sera en mesure d’interroger périodiquement pour vérifier l’achèvement de l’opération, sinon il renverra échec, en attente, état perdu, etc..

Nous devons activer les interruptions globales et périphériques (décommenter les lignes) immédiatement après l’appel de SYSTEM_Initialize () dans la fonction principale. Sinon, la machine d’état des pilotes I2C ne pourra pas avancer.

Dans cet exemple simple ci-dessous, le microcontrôleur lit la température dans le registre de température du TC74 et l’affiche sur un écran LCD 16×2. La valeur de température en degrés Celsius est affichée sur la 1ère ligne de l’écran LCD et la valeur convertie en température Fahrenheit sur la 2ème ligne de l’écran LCD. L’adresse TC74 par défaut de 0x4D est utilisée.

Vous pouvez facilement créer un circuit imprimé pour ce projet, comme nous l’avons appris plus tôt dans le tutoriel: Conception de circuits imprimés du début à la fin, tout ce dont vous avez besoin est d’avoir une bonne entreprise de prototypage de circuits imprimés qui offrira vos circuits imprimés de bonne qualité à un bon prix. Nous recommandons PCBWay.com, un fabricant basé en Chine à Shenzhen et spécialisé dans le prototypage, la production en petit volume et le service d’assemblage de cartes de circuits imprimés.

Ils organisent maintenant une promotion pour leurs services d’assemblage de circuits imprimés. Bénéficiez d’une livraison gratuite dans le monde entier lorsque vous passez une commande d’assemblage de circuits imprimés.

Pour en savoir plus, veuillez cliquer sur l’image ci-dessous et pour obtenir une soumission en ligne instantanée pour PCB Assembly, visitez leur page d’accueil: PCBWay.com 

Fonction Main

Vous pouvez télécharger les fichiers de projet complets (code source MPLAB XC8 et conception schématique Proteus) ci-dessous ici.

Remarque: tous les fichiers sont compressés. Vous devez les décompresser (téléchargez une version gratuite de l’utilitaire Winzip pour décompresser les fichiers).

Télécharger: MPLAB X Project TC74

Télécharger: Proteus Schematic Project TC74