View on GitHub

TMP102: Low-Power Digital Temperature Sensor With SMBus™ and Two-Wire Serial Pages

Description de la classe TMP102 développée en C# sous .NETMF 4.3 pour les cartes Netduino et FEZ (PANDA, COBRA...)

Download this project as a .zip file Download this project as a tar.gz file

Sommaire

  1. LE MATERIEL
    1. Le capteur TMP102: Low-Power Digital Temperature Sensor With SMBus™ and Two-Wire Serial Pages
    2. Les cartes Netduino
    3. Les cartes FEZ
  2. LE LOGICIEL
    1. Contenu du répertoire proposé au téléchargement
    2. Le NuGet MicroToolsKit
    3. Le wiki .NetMF v4.3
    4. Description et utilisation de la classe TMP102
  3. LIENS
    1. Exemples codés en C# pour les cartes Netduino et Fez (Panda 3, BrainPad)
    2. La page du projet MicroToolsKit

1. LE MATERIEL


1.1 Le capteur TMP102: Low-Power Digital Temperature Sensor With SMBus™ and Two-Wire Serial Pages.


Module TMP102


SparkFun
Documentation - Schéma

1.2 Les cartes Netduino

Secret Labs

Netduino plus 2 Netduino 3 wifi
Netduino 3 Ethernet Netduino 3 wifi*

1.3 Les cartes FEZ

GHI Electonics (Extrait)

PANDA III COBRA III
PANDA III COBRA III* (compatible Gadgeteer)

2. LE LOGICIEL


2.1 Contenu du répertoire proposé au téléchargement


Le répertoire proposé au téléchargement (au format zip ou tar.gz) contient la solution TMP102 composée :


2.2 Le NuGet MicroToolsKit

La dernière version compilée de la classe TMP102 se situe dans la bibliothèque MicroToolsKit disponible sur nuget.org.

Organisation des classes contenues dans MicroToolsKit [lien]

Important : Installer ce nuget dans le projet Visual Studio simplifie l'utilisation de la classe.


2.3 Le wiki .NetMF v4.3


2.4 Description et utilisation de la classe TMP102


Création d'un projet avec l'IDE Visual Studio


  1. Créer un nouveau projet en suivant la démarche décrite dans le chapitre "Premier programme en C# étape par étape" avec une carte Netduino ou avec une carte Fez (Panda 3, BrainPad etc). [lien]
  2. Utiliser le gestionnaire de paquets NuGet pour ajouter l'assembly MicroToolsKit ( nuget.org) dans le répertoire Références du projet.(clic droit sur Références dans le gestionnaire de solutions de Visual Studio puis Gérer les packages NuGet... Installer le paquet.)
  3. Ajouter l'espace de noms Microtoolskit.Hardware.Sensors dans l'en-tête du fichier source.
  4. Créer un objet en utilisant le constructeur TMP102 et les paramètres appropriés.
  5. Initialiser le circuit avec la méthode Init et les paramètres appropriés.
  6. Utiliser la méthode ReadAsCelcius pour déclencher une mesure de température et obtenir le résultat en °C.

Exemple

using System.Threading;
using Microsoft.SPOT;

using Microtoolskit.Hardware.Sensors;

namespace test
{
    public class Program
    {
        public static void Main()
        {
            float temperature = 0;
            TMP102 ModuleMesureTemp = new TMP102();
            ModuleMesureTemp.Init();

            while (true)
            {
                temperature = ModuleMesureTemp.ReadAsCelcius();
                Debug.Print("Temp=" + temperature.ToString("F1") + "degC");
                Thread.Sleep(1000);
            }
        }
    }
}
      

Constructeurs

Syntaxe Description
TMP102( ADD0 pin, UInt16 Frequency ) Instancie un objet "TMP102 ".
pin : égal à ADD0.GND => SLA= 0x48. (par défaut)
Frequency: >Féquence du signal SCL = 100kHz. (par défaut)

Exemple
TMP102 ModuleMesureTemp = new TMP102();

Enumérations

Syntaxe Description
ADD0

Si la broche ADD0 est connecté à :

  • GND : adresse SLA = 0x48
  • Vcc : adresse SLA = 0x49
  • SDA : adresse SLA = 0x4A
  • SCL : adresse SLA = 0x4B
AlertPolarity

AlertPolarity permet de régler l'état actif de la broche ALERT.

  • activeLow : broche active à l'état BAS
  • activeHight : broche active à l'état HAUT
ConsecutiveFaults

Une erreur se produit lorsque la température dépasse les limites fixées par l'utilisateur dans les registres THIGH et TLOW. ConsecutiveFaults active la broche ALERT si un, deux, quatre ou six dépassements se sont produits.

  • one
  • two
  • four
  • six
ConversionRate

Fréquence de conversion

  • quarter_Hz : une mesure toutes les quatre secondes
  • one_Hz : une mesure par seconde
  • four_Hz : quatre mesures par seconde (par defaut)
  • height_Hz : huit mesures par seconde
Registers

Sélection des registres du TMP102

  • Temperature : contient la valeur de la température sur 12bits (par défaut). (lecture)
  • Configuration : Paramétrage du TMP102 (lecture/évriture)
  • T_Low: Contient la valeur limite basse de la température
  • T_High : Contient la valeur limite haute de la température
ThermostatMode

  • ComparatorMode : En mode comparateur, la broche ALERT devient active lorsque la température est égale ou supérieure à la valeur mémorisée dans T_HIGH et génère un nombre consécutif de défauts en accord avec ConsecutiveFaults La broche ALERT reste active jusqu'à ce que la température soit inférieure à la valeur mémorisée dans T_LOW et que le même nombre de défauts est atteint.
  • InterruptMode : en mode interruption, la broche ALERT devient active quand le nombre d'erreurs est atteint... (voir le datasheet pour plus d'informations)

Méthodes

Syntaxe Description
bool Init( ADD0 addressSelect)

Initialise le composant avec :

  • addressSelect : A paramétrer, = ADD0.Gnd (par défaut)
  • oneShotMode = false (par défaut)
  • alertPolarity = AlertPolarity.activeHight (par défaut)
  • conversionRate = ConversionRate.four_Hz (par défaut)
  • thermostatMode = ThermostatMode.ComparatorMode (par défaut)

Exemple
ModuleMesureTemp.Init();
bool Init(
[ ADD0 addressSelect = ADD0.Gnd ],
[ bool oneShotMode = false ],
[ AlertPolarity alertPolarity = AlertPolarity.activeHight ],
[ ConversionRate conversionRate = ConversionRate.four_Hz ],
[ ThermostatMode thermostatMode = ThermostatMode.ComparatorMode ])

Initialise le composant avec :

  • addressSelect : A paramétrer, égale à ADD0.Gnd (par défaut)
  • oneShotMode : A paramétrer, égal à false (par défaut)
  • alertPolarity : A paramétrer, égale à AlertPolarity.activeHight (par défaut)
  • conversionRate : A paramétrer, égale à ConversionRate.four_Hz (par défaut)
  • thermostatMode : A paramétrer, égal à ThermostatMode.ComparatorMode (par défaut
float ReadAsCelcius() Renvoi la température de l'air en °C.

Exemple
temperature = ModuleMesureTemp.ReadAsCelcius();
float ReadAsFahrenheit() Renvoi la température de l'air en °F.

Exemple
temperature = ModuleMesureTemp.ReadAsFahrenheit();
float ReadAsKelvin() Renvoi la température de l'air en K.

Exemple
temperature = ModuleMesureTemp.ReadAsKelvin();
float ReadAsRankine() Renvoi la température de l'air en °R.

Exemple
temperature = ModuleMesureTemp.ReadAsRankine();