Club robotique de Sophia-Antipolis

Accueil > POBOTpedia > Capteurs > Capteurs d’environnement > Capteur d’humidité résistif

Capteur d’humidité résistif

dimanche 25 janvier 2009, par Julien H.

Un capteur d’humidité résistif (ou humidistance) permet d’évaluer l’humidité dans l’air au travers d’un simple dipôle se comportant et se connectant comme une résistance.

Pour notre test il s’agit du H25K5A de Sencera :

Il coûte un peu moins de 4€ chez Gotronic et c’est un bon moyen de réviser l’acquisition d’une résistance, et comment on peut implémenter une table de correspondance dans un microcontrôleur (look-up table).

Datasheet H25K5A

Circuit de connexion au µC

On utilise deux résistances : l’humidistance (nom générique du capteur) en pull-up connectée à l’alimentation 5 volts et une résistance en pull-down connectée à la masse.

Entre les deux résistances, on obtient une tension de sortie du montage qu’on connecte sur un convertisseur analogique/numérique (tout bon microcontrôleur en est pourvu, avec plus ou moins de précision, 8 bits chez Pic et 10 bits chez Atmel).

La formule de calcul de la tension est donnée dans le petit schéma ci-dessous :

Il s’agit du montage classique de diviseur résistif.

Calcul de résistance

Je ne résiste pas au plaisir de vous faire partager mon bonheur depuis que j’ai trouvé le petit logiciel "Calcul de résistances" qui permet à la fois d’identifier la vieille résistance qui traine dans votre tiroir et aussi de préparer les couleurs des anneaux qu’il va falloir repérer dans les 10 000 résistances de votre tout nouveau sac "lowcost" où toutes les résistances sont mélangées sans aucune indication !

Interface de recherche d’une résistance

Le montage

Voici le circuit installé sur une plaquette d’essai. Quelques fils permettent de relier chacun des points à l’alimentation et à l’entrée analogique d’une Arduino.

Humidistance en test
Astuce du chef
Utilisez une lampe à incandescence (pas à leds) pour sécher l’air autour de votre capteur :)

Les tests

Test 1 : courbe analogique

Comme le circuit est connecté à une entrée analogique, on peut déjà réutiliser l’oscilloscope minimal et visualiser la valeur, et voir les variations.

#define ANALOG_IN 0

void setup() {
  Serial.begin(38400); 
}

void loop() {
  int val = analogRead(ANALOG_IN);
  Serial.print( 0xff, BYTE);
  Serial.print( (val >> 8) & 0xff, BYTE);
  Serial.print( val & 0xff, BYTE);
}

Et ça fonctionne : on peut mouiller le capteur avec un tissu imbibé d’eau puis sécher le capteur avec une lampe de bureau à incandescence (celle qui brûle les doigts quand on l’oriente) pour observer des variations.

Premier test
au doigt mouillé, et pour une fois ce n’est pas une expression :)
Second test
On prend des risques en approchant un tissu humidifié du montage.

La valeur sur ces diagrammes est comprise entre 12 (capteur sec) et 360 (capteur mouillé), l’unité étant le millième de 5 volts, puisque l’entrée analogique converti une tension entre 0 volts et la tension de référence (ici, 5 volts mais le microcontrôleur possède une entrée "AREF" permettant de changer cette valeur) en une valeur numérique sur 10 bits, soit comprise entre 0 et 1024.

Test 2 : les calculs

Bien sûr, il est plus difficile d’étalonner un capteur d’humidité qu’un capteur de température, car on n’a pas forcément sous la main un appareil de mesure d’humidité et il est difficile de faire varier l’humidité ambiante (rappelez-vous que pour le test premier, j’ai humecté directement le capteur).

Donc on va recourir à la formule du diviseur résistif (rappelé ci-dessus et expliqué par Pierre Mayé dans son très utile et très clair "Aide-mémoire des composants électroniques" chez Dunod éditeur, un peu de pub ne fait pas de mal et si jamais l’auteur lit ces lignes, qu’il n’hésite pas à nous contacter pour qu’on parle de moteurs électriques, un autre de ses ouvrages).

Les calculs et les courbes sont rassemblés dans le fichier Excel ci-joint, que vous pourrez modifier à votre guise, notamment en prenant en compte les valeurs de résistance correspondant à votre température d’utilisation telles que vous les trouverez dans la datasheet fournie au début de cet article.

Feuille de calcul humidistance
pour connaître les valeurs de correspondance entre humidité relative (RH) dans l’air et acquisition d’une tension analogique.

Le tableau est très simple : on reproduit la table de correspondance fournie par le constructeur, on applique la formule de calcul de la tension entre les deux résistances RT et RH pour une tension d’entrée et une valeur de RT connue, et on fait le calcul de conversion linéaire de la tension analogique en une valeur numérique telle que l’opère le microcontrôleur Atmel 10 bits (d’où le 1024 que vous trouverez dans le tableau).

Tables de conversion humidité/tension/valeur numérique

Donc si tout à l’heure j’ai obtenu 360 dans la lecture du port analogique, c’est que ça correspondait à 47% d’humidité relative (%HR) à la surface du capteur (logique puisque je ne l’ai pas non plus immergé dans l’eau, car avec la plaque d’essai où il est fixé ce ne serait pas pratique).

Exploitation des résultats

Bon, avec Excel on peut facilement calculer l’humidité en fonction de la valeur lue. Mais comment l’implémenter dans un microcontrôleur, sans prendre trop de ressources de calcul ? Regardons la courbe :

Courbe de comparaison humidité/valeur numérique

On peut considérer que la courbe est suffisamment droite pour faire une interpolation linéaire (on prend la valeur min, la valeur max, on en déduit la pente et on obtient l’humidité relative RH = a*T + b où a et b sont deux coefficients fixes qu’on ajuste selon la courbe.

Si cela n’est pas suffisant, on peut à la rigueur découper la courbe en 2 tronçons linéaires. Bien sûr l’idéal est de le faire pour le plus de valeurs possibles, c’est une discrétisation de la courbe qui permet de s’adapter aux ressources disponibles (mémoire, temps de calcul) dans le microcontrôleur.

Commentaire

En fait, la courbe n’est pas linéaire par hasard, cela tient au choix de la valeur de 47 kOhms pour la résistance RT. On le constate si on trace la courbe pour des valeurs de 1 kOhms et 200 kOhms :

Courbe trop haute (200k)
Courbe trop basse (1k)

Voilà, à vous de jouer !

Vos commentaires

  • Le 18 juin 2014 à 15:39, par Quentin En réponse à : Capteur d’humidité résistif

    Bonjour,
    J’ai récemment acheté un capteur 6440 Watermark par Davis Instruments. Il s’agit aussi d’un capteur d’humidité résistif avec compensation en fonction de la température.
    J’avais en tête de réaliser un diviseur de tension pour mesurer la tension en sortie du montage et ainsi déduire la valeur de la résistance de la sonde et -à partir du tableau de conversion humidité/résistance- en déduire l’humidité.
    Gros problème : il est impossible de trouver un tableau de conversion humidité/résistance pour ma sonde. Peut être que le fournisseur veut garder ces informations pour lui pour nous obliger à acheter leur station de mesure avec.
    Deuxième point : je compte utiliser une sonde de température à proximité de ma sonde d’humidité et pourrai donc regarder la bonne colonne dans le tableau de conversion ( si je le trouve un jour ! ).
    Néanmoins je ne voudrais être sûr de bien comprendre le choix de la résistance RT. En fait, la courbe de l’humidité en fonction de la résistance RH n’est pas du tout linéaire et on choisit la résistance RT pour la rendre linéaire c’est bien cela ? Donc on la trouve par dichotomie en quelque sorte ?
    Merci de votre aide,
    Quentin

    • Le 18 juin 2014 à 22:49, par Eric P. En réponse à : Capteur d’humidité résistif

      Dans ce genre de situation, on procède par étalonnage en effectuant une série de mesures en parallèle avec un appareil déjà étalonné et en relevant les couples (valeur électrique, valeur physique) fournies par le capteur dont on ne dispose pas de la courbe. A partir de cette série de mesures, on peut approximer la courbe réelle par un polynôme (lorsque la courbe est une droite il s’agit en fait d’un cas particulier de polynôme, en l’occurrence d’ordre 1). En général pas besoin d’aller au-delà de l’ordre 3 pour une approximation de ce type.
      Le calcul des coefficients du polynôme est très simple à faire en utilisant les fonctions de régression disponible dans le tableur de son choix (Excel, OpenOffice Calc,...).
      Bien entendu le résultat est d’autant meilleur qu’on échantillonne le domaine de mesure souhaité par un nombre important de points.

    • Le 19 juin 2014 à 10:13, par Quentin En réponse à : Capteur d’humidité résistif

      Merci pour votre réponse.
      Donc, si je ne trouve pas pas de tableau de conversion, la seule chose à faire et de le refaire moi même par étalonnage et de calculer mon polynôme. On peut rendre ce polynôme d’ordre 1 en jouant sur la valeur de RT ?
      Le problème va être de prendre en compte la température... Je ne vais pas pouvoir étalonner et tracer ma courbe de points pour une dizaine de températures différentes.

    • Le 19 juin 2014 à 11:19, par Eric P. En réponse à : Capteur d’humidité résistif

      Tout à fait.
      Concernant la linéarisation de la courbe, je ne sais pas répondre. En fait nous sommes dans un cas de figure où il n’est pas question d’une fonction y = f(x), mais y = f(u, v). L’approximation qu’on peut en faire n’est du coup pas un unique polynôme mais une famille de polynômes.
      La méthode expérimentale que j’utiliserais si je devais le faire, ce serait de construire une courbe pour une température donnée, en sélectionnant une série de températures de référence correspondant au domaine d’utilisation réel, afin d’obtenir ainsi un réseau d’abaques. On peut ensuite obtenir le taux d’humidité réel par interpolation des valeurs fournies par les 2 polynômes encadrant, l’interpolation étant calculée sur la base de la température mesurée.
      Ceci étant, je ne prétends pas être un spécialiste de la mesure d’un taux d’humidité, sachant que je crois de plus qu’il en existe plusieurs définitions.

    Répondre à ce message

  • Le 12 mai 2014 à 14:34, par Eric P. En réponse à : Capteur d’humidité résistif

    Bonjour,
    1/ s’il vous plait prenez le temps de relire et de corriger vos messages avant de les poster. On a l’impression que les mots ont été passés à la moulinette. Par exemple, ce sont les cloches qui résonnent. En ce qui nous concerne, nous raisonnons ;)
    Si vous ne vous donnez pas la peine de mettre un minimum de soin à la rédaction de vos messages, vous prenez le risque que ne prenions pas le temps de les lire et d’y répondre.
    2/ "où est la formule ?" : Si vous savez vous servir d’un tableur, vous savez sans doute qu’en cliquant sur les cases calculées, leur formule de calcul s’affiche dans la zone de saisie. L’avez-vous fait ? Et la formule est également indiquée dans le texte de l’article. L’avez-vous vraiment lu ?
    3/ "c’est très urgent" : Il n’y a jamais d’urgence, mais seulement des gens qui s’y prennent au dernier moment... ou qui veulent faire faire leurs devoirs de classe par d’autres ;)
    Cordialement

    Répondre à ce message

  • Le 12 mai 2014 à 11:11, par Seden En réponse à : Capteur d’humidité résistif

    Bonjour,
    Dans le document excel il y avais les valeurs du CAN , vous pouvez me donner la formule que vous avez utiliser pour avoir le CAN et comment vous avez résonner car je n ai deduit une mais elle coresnd pas à vos valeurs ( c’est trés urgent) !!
    Merci davantage

    Répondre à ce message

Un message, un commentaire ?

modération a priori

Attention, votre message n’apparaîtra qu’après avoir été relu et approuvé.

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.