jeudi 2 août 2012

Garduino [4] : Calibration du capteur d'humidité dans le sol et digression botanique et culinaire

Dans le préparation d'un prototype de Growbox (projet Garduino) j'ai réalisé des essais complémentaires avec le capteur d'humidité du sol "fait maison" (DIY).
Voir les premiers essais.

Mesure d'humidité du sol
J'ai repris les bases et j'ai testé une autre méthode (logicielle) de mesures qui consiste a n'envoyer le courant que pour faire la mesure (comme précédemment, cela limite le déclenchement d'électrolyse) et a procéder en continu jusqu'à que la valeur mesurée soit stable pendant 1 seconde. C'est donc une modification logicielle uniquement.
Cela produit un résultat bien plus stable mais il faut attendre de 2 à 6 secondes pour avoir cette "stabilité". Ce n'est pas parfait mais ça semble acceptable pour l'application.

Je constate que si je laisse longtemps sans faire de mesure, la prochaine mesure sera en moyenne plus longue (pour avoir une stabilité) que lorsque je le fait régulièrement avec des intervalles de temps plus courts. Comme il convient de ne pas faire de mesure d'humidité trop souvent (pour éviter l'électrolyse des vis) et aussi comme l'assèchement est un phénomène long, une mesure toute les 5 minutes est largement suffisant.
Toutefois cela me laisse un peu perplexe, et j'ai comme l'impression que ce produit un phénomène de charge/décharge de l'ensemble (un peu comme une capacité)... mais bon cette technique (attente de stabilité) semble gommer cet effet de "charge".

Calibration en température
Avant de réaliser des séries complètes de mesures sur plusieurs jours, je dois calibrer mon capteur pour avoir une mesure plus fiable. Ainsi il est clair que ce type de capteur "maison" est relativement peu précis et que par la méthode de base est sensible à l'humidité bien sur mais aussi la salinité et la température. Pour la salinité je vois pas quoi faire, sinon calibrer pour le sol utilisé et toujours utiliser la même eau pour l'arrosage.

Calibration de la sonde maison de mesure d'humidité
3 verres d'eau : froid, tiède et chaud...
Pour la température j'ai réalisé des essais simples qui permettent d'établir un coefficient de correction.
Le principe étant de mesurer la température en même temps que l'humidité et de corriger cette dernière.
Je suppose que la variation de la mesure d'humidité est linéaire par rapport à la température (ce qui est a peu près correct sur les échelles qui nous intéresse, de 10 à 40°C environ).
Pour se faire, j'ai préparé 3 verres d'eau identiques, l'un avec de l'eau chaude, l'autre avec de l'eau tiède que j'ai laissé a température ambiante 2 heures et un dernier que dans lequel j'ai ajouté au dernier moment de la glace que j'ai laissé fondre.
Ensuite j'ai réalisé les 3 mesures d'humidité ainsi qu'une mesure de température de l'eau (grâce à un thermomètre digital de cuisine). L'eau utilisée est celle distribuée par le service public local au robinet.

Lors de ces essais je me suis rendu compte que le niveau d'eau avait son importance et que suivant l'enfoncement du capteur dans l'eau (ou la terre) on obtient des mesures différentes, j'en ai profité pour prendre quelques autres mesures de référence pour mémoire. Cela laisse entendre que ce type de capteur peut aussi servir de mesure de niveau d'eau dans un réservoir... Ca pourra être utile pour ne pas faire déborder le réservoir qui recevra l'eau des pots dans le Garduino.

J'obtiens donc au final, en mesure brute (valeur renvoyée par le convertisseur analogique de l'Arduino, donc entre 0 et 1023, ramené à un pourcentage de 0 à 100%, alimenté en 5v et avec le même logiciel que décrit précédemment : mesure en continu jusqu'à obtenir une valeur stable pendant 1 seconde) :
  • Dans l'air : 0 %
  • Sur la joue : 7 %
  • Sur la langue (ça picote) : 61 %
  • Dans 1mm d'eau tiède : 56 %
  • Dans 20 mm d'eau tiède : 77,5 %
  • Dans un verre d'eau plein à ras-bord : 86,6 %
  • Dans de la terre "neuve" (terrain sorti du sac, non arrosé) :
  • Dans de la terre arrosé il y a 3 jours : 
  • Plongé entièrement dans l'eau froide (9,5°C) : 76 %
  • Plongé entièrement dans l'eau tiède (24°C) : 80 %
  • Plongé entièrement dans l'eau chaude (42°C) : 83,7 %
Pour la calibration en température, seule les dernières mesures nous intéressent (dans l'eau à différentes températures).
L'eau étant la même, à partir des extrêmes (9,5 et 42°C) on calcule l'équation de droite H=aT+b qui passe par les 2 points, avec T=température et H la valeur mesurée. Les mesures intermédiaires permettent de valider l'équation.
Dans une réalité parfaite, si le capteur n'était pas sensible à la température, la valeur mesurée devrait être constante (même eau, même niveau, même capteur). Il s'agit alors de déterminer la coefficient qui permet de ramener une mesure 'H' effectuée a une température 'T' a une mesure corrigée 'HC' pour un référentiel déterminé, ici je choisit 25°C comme température de référence, ce sera plus parlant que 0°C.
Avec les mesures effectuées on obtient a=0,236923 et b=73,937, b correspondrait à la mesure théorique pour T=0°C.

Le logiciel Arduino peut donc désormais corriger la mesure d'humidité en tenant compte de la température (mesurée par une thermistance, précédemment calibrée).
La correction est obtenu par :
  • HC = H - a * (T-25)
Par contre du fait que la mesure de température (qui sert à corriger la mesure d'humidité) est faite à l'air libre, celle-ci peut varier vite (par exemple lorsque j'ouvre les fenêtres du bureau au petit matin), cela induit une hausse anormale de l'humidité pendant 15 à 30 minutes, l'humidité étant corrigé par la température de l'air.
Pour éviter cet effet indésirable, il faudrait mesurer la température de la terre, en effet celle-ci absorbe la température de l'air lentement et les variations y sont lentes...
A améliorer avec une thermistance étanche qui pourrait être plongé dans la terre.

Essais
3 jours de suivi
Après cette préparation, j'ai réalisé 2 essais en réel.
Le premier sur 4 jours avec le Yuka "cobaye" et le second (en cours) avec un pot neuf et des graines de Fenugrec.
Ces essais avait pour simple objectif d'établir un suivi des mesures sur plusieurs jours et d'arroser que lorsque le niveau d'humidité sera "bas"... Et donc de déterminer les niveaux haut et bas.
Le Yuka est une plante qui est déjà adulte et qui de plus est très résistante, pas de soucis de ce coté.
Les graines de Fenugrec doivent germer et commencer à pousser, c'est plus délicat, il leur faut notamment plus d'humidité pendant la phase de démarrage.

Les essais ont consisté a faire tourner le logiciel proto Arduino avec le logiciel de suivi (sur Mac en Python) et d'enregistrement sur le mesures (voir article précédent sur le log-duino).

Au final les résultats montrent une imprécision de mesure pour l'humidité (avec des variations de 1 à 2 %), qui sont probablement duent en partie à la qualité intrinsèque du capteur et aussi probablement a la nature du sol et de la propagation de l'humidité. Toutefois le suivi montre que globalement la terre s'assèche et c'est mesurable et que après un arrosage (par le dessus pour le moment) le taux d'humidité monte après environ 15 minutes et pendant 1  à 2 heures. L'assèchement est lent (sur plusieurs jours).

Conclusions provisoire des essais (mesure HC, corrigée pour un équivalent 25°C) :
  • Terre "bien" humide : environ 80%
  • Terre a arroser : environ 70% (75% pour les jeunes pousses)
  • la précision et répétitivité des mesures est de l'ordre ±2,0 %
  • La calibration avec température produit des écarts temporaires lorsque la température change vite, ce qui ne devrait pas se produire dans la GrowBox
Je continu des essais pour bien évaluer les niveaux, mais on constate d'or et déjà que l'arrosage produit un effet a retardement (qui dure plusieurs heures), donc a priori il ne faudra pas piloter l'arrosage et attendre que le niveau soit à 80% sinon tout sera noyé. Il faudra plutôt envoyer de l'eau par une durée (donc un volume) et patienter 1 heure pour évaluer a nouveau et voir si il faut encore arroser.

Digression botanique : Fenugrec
Photo : elephantkitty, des tonnes de feuilles fraiches
pour un Aloo Methi (Patates au fenugrec... ou l'inverse)
Le Fenugrec est une légumineuse qui produit des feuilles et des graines qui sont des épices très utilisés en Inde (Methi) et en Afrique du Nord (Helba. Comme, à la maison, nous cuisinons pas mal "inde" et que le Fenugrec (surtout en feuille) est difficile à trouver par chez nous, ça fait 2 bonnes raisons de faire pousser localement. De plus j'ai jamais fait pousser de Fenugrec et ça permettra d'avoir des feuilles fraiches (une première).

Les graines sont récoltés et séchées pour produire du Fenugrec en poudre ou en graine. Les feuilles sont récoltées et prennent le nom de "Methi", elles sont utilisable fraiches ou séchées.
C'est une épice méconnue, mais pourtant très usité car c'est par exemple ce qui donne une partie de la saveur et odeur particulière des bouillons cube.

Pour cette première culture, l'objectif étant d'avoir rapidement des feuilles, j'ai repris la technique du blog de Soujis qui donne sa technique pour récolter des feuilles de methis en 10 jours sur un balcon (en Inde).
Ça pousse vite... 2 jours 1/2
Après 2 jours en terre, les graines ont germées et ça pousse de partout...
Le tout sous la surveillance de l'Arduino qui contrôle l'humidité du sol, la température ambiante de la pièce et la luminosité... Avec une led qui indique que le projet tourne, une autre qui indique qu'une mesure est en cours et la dernière qui indique qu'il faut arroser (HC < 70).

1 commentaire:

  1. Bonjour,
    Votre article sur la mesure d'humidité est très intéressante et très bien fait.
    Je voudrais faire un montage pour surveiller un sanyvroyeur.... (maudit sanybroyeur...)
    Est-ce que vous pourrier me passer le code pour la mesure d'humidité afin que je ne réinvente pas la roue ?

    Merci d'avance, mon adresse est: vormsty@gmail.com

    Merci beaucoup !

    RépondreSupprimer