Mesures sur le bus I2C

ComplémentDocumentation du capteur SHT20 et complément sur le bus I2C

Complément sur le BUS I2C :

  • Le bus I2C est composé de 2 signaux, l'horloge SCL et la donnée SDA.

  • Un échange sur le bus I2C débute par une séquence de START et se termine par une séquence de STOP.

  • Il est donc conseillé de déclencher l'analyseur logique sur un front descendant du signal de données SDA.

FondamentalQuestions préliminaires

  • Indiquer l'adresse du capteur sur le bus I2C en mode 7 bits.

  • Rappeler les 2 vitesses (standards) du bus I2C.

  • Donner la résolution par défaut de la mesure de température d'une part, et de l'humidité relative d'autre part.

MéthodeMesures

Les mesures qui suivent sur le bus I2C ne concernent que le capteur SHT20, pas l'afficheur. Les mesures peuvent donc être effectuées sur le shield seul. Attention cependant à remettre les écrous après avoir retiré l'afficheur, afin de ne pas les perdre.

  • Relier l'analyseur aux 2 signaux du BUS ainsi qu'au 0V commun

  • Configurer l'interpréteur.

  • Lancer une capture lors de la lecture de la température et lors de la lecture de l'humidité relative.

Interprétation

  • Justifier les différents éléments de la trame, adresse et données, en vous appuyant sur la documentation, et en comparant avec la valeur affichée sur l'interface graphique.

  • Indiquer la vitesse du bus parmi les 2 valeurs indiquées précédemment.

ComplémentRéponses attendues

SHT20 :

  • Adresse sur le bus I2C en mode 7 bits : 0x40

  • Vitesses de transmission standards les plus basses : 100KHz et 400KHz

  • Résolution par défaut de l'humidité relative : 12 bits, de la température : 14 bits ; voir le tableau 8 de la documentation. Pour vérifier que cette résolution est bien la bonne, taper en mode console (il faut avoir installé libi2c-dev au préalable) : "i2cget -y 1 0x40 0xE7 b" la réponse doit avoir ses bits 7 et 0 au niveau logique 0 ; par exemple 0x3A.

Signaux échangés lors d'une mesure d'humidité relative en mode "no hold master" :

ComplémentMesures avec l'analyseur Logic 4 Saleae

Mesures effectuées avec l'analyseur Logic 4 Saleae

Liaisons par grippe-fil ou par insertion directe sur picots, comme ci-contre :

Interface graphique Qt pour les mesures effectuées sur le bus I2C :

les valeurs 30,0 et 29,5 doivent être retrouvées dans les trames transmises

Mesure de la température :

  • configuration de l'interpréteur : désignation des broches et définition du format de l'adresse sur 7 bits

Vérification de la température mesurée :

  • on retrouve la commande de lecture de température 0xF3,

  • sur les 2 bytes récupérés, les 2 bits de poids faible qui correspondent au status (voir paragraphes 5.4 et 6 de la documentation) doivent être forcés à 0,

  • puis la formule T = -46.85 + 175.72*N/65536 du paragraphe 6.2 doit être appliquée,

  • pour les relevés ci-dessus cela donne : 30,0°C

Mesure de l'humidité relative :

Vérification de la valeur de l'humidité relative :

  • idem pour les 2 bits de status ainsi que pour les 2 bits qui précèdent, car le résultat est sur 12 bits. Donc les 4 derniers bits doivent être forcés à 0,

  • puis la formule RH = -6 + 125*N/65536 du paragraphe 6.1 doit être appliquée,

  • pour les relevés ci-dessus cela donne : 29,5%

ComplémentExemples de mesures avec l'analyseur Ikalogic SQ100

Mesures effectuées avec l'analyseur Ikalogic SQ100

Câblage de l'analyseur par grippe-fil :

Configuration de l'interpréteur I2C :

Configuration du déclenchement de la mesure :

Exemple de mesure de température et illustration de certaines possibilités du logiciel :

  • dans cette capture la température est de 27,8°C ;

  • la trame est interprétée,

  • le flux de données apparaît également dans la fenêtre de droite,

  • des marqueurs permettent d'afficher la fréquence moyenne, calculée sur le nombre de périodes sélectionnées (7 en l’occurrence).

Exemple de mesure de l'humidité relative et illustration d'autres possibilités du logiciel :

  • dans cette capture l'humidité relative est de 26,0%

  • déclenchement sur une lecture à l'adresse 0x40 (menu Trigger → Edit trigger),

  • les données sont affichées simultanément en hexadécimal et en binaire, ce qui peut être pratique pour vérifier la conversion.

Plus intéressant encore : le logiciel ScanaStudio dispose d'un interpréteur I2C dédié aux capteurs de température et d'humidité tels que le SHT20.

Exemple de mesure de température avec le SHT20, pour la configuration du mode d'acquisition (avec interprétation), capture et affichage de la valeur mesurée :

Exemple de mesure de l'humidité relative avec le SHT20 :

A noter : cette famille d'analyseurs offre la possibilité de configurer individuellement les sorties parmi plusieurs structures proposées.

Elle offre aussi la possibilité de configurer les broches pour qu'elles deviennent génératrices, permettant par exemple à l'analyseur de se comporter comme un circuit I2C maître, ce qui permettrait de dialoguer directement avec le capteur seul, sans la carte Rpi. Ce qui dans notre cas spécifique ne présente pas d'intérêt.

ComplémentExemples de mesures avec l'analyseur Analog Discovery 2

Mesures effectuées avec l'analyseur Analog Discovery 2

Câblage de l'analyseur : liaisons par grippe-fil ou par insertion directe sur picots (comme ici)

Exemple de mesure de température et d'utilisation des possibilités du logiciel :

  • dans cette capture la température est de 33,9°C,

  • fenêtre de configuration de l'interpréteur I2C,

  • déclenchement sur front descendant de SDA,

  • mesure de la fréquence de l'horloge (environ 64KHz au lieu de 100KHz, gestion de l'OS oblige).

Exemple de mesure de l'humidité relative :

  • dans cette capture l'humidité relative est de 29,0%

  • déclenchement sur une lecture à l'adresse h40 (menu Protocol → I2C). La valeur des données n'est pas configurée car on ne préjuge pas de la valeur mesurée. A noter : la valeur de l'humidité relative varie assez vite, si l'on fixe une valeur de déclenchement relativement précise, par exemple 32 pour la partie entière, encore faut-il déclencher régulièrement une mesure sur l'interface graphique pour espérer capturer la bonne valeur.

  • visualisation également de la vitesse des données sur le bus.

  • la fenêtre "Events" affiche la chronologie des échanges sur le bus.