Capteur d'humidité résistif Extrait du PoBot http://www.pobot.org Capteur d'humidité résistif - Robopedia - Constituants - Les capteurs - Capteurs d'environnement - Date de mise en ligne : dimanche 25 janvier 2009 PoBot Copyright © PoBot Page 1/6 Capteur d'humidité résistif Sommaire • Circuit de connexion au (...) • Le montage • Les tests • Test 1 : courbe analogique • Test 2 : les calculs • Exploitation des résultats 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 4Euros chez Gotronic [http://www.gotronic.fr/catalog/capteurs/capteursframe.php?page_cible=humidistance.htm] 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 <!-- google_ad_client = "ca-pub-6809994141685910"; /* Corps central */ google_ad_slot = "0178404633"; google_ad_width = 728; google_ad_height = 90; //--» <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> 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 Copyright © PoBot Page 2/6 Capteur d'humidité résistif 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 [http://www.atlence.com/index.php?page=cr_features]" 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. Copyright © PoBot Page 3/6 Capteur d'humidité résistif 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 :) Copyright © PoBot Page 4/6 Capteur d'humidité résistif 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). Copyright © PoBot Page 5/6 Capteur d'humidité résistif 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. 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 basse (1k) Courbe trop haute (200k) Copyright © PoBot Page 6/6