Capteur d'humidité et écran lcd

arduino

a marqué ce sujet comme résolu.

donc c pas grave si la valeur n’est pas stables, j’ai vu sur le site du fabricant des photos exemples du capteur sur le moniteur série, et ça donne ça :Image utilisateur

et c’est déjà plus stable que chez moi, et le comportement du capteur semble différent…

C’est pas vraiment plus stable que chez toi …

  • Sol sec: écart maximum de 38 (valeur entre 19 et 57)
  • Sol humide: écart maximum de 7 (valeur entre 584 et 591)
  • Dans l’eau: écart maximum de 22 (valeur entre 926 et 948)

Il faut bien comprendre que tu mesures un phénomène analogique, et que le capteur vient mesurer la résistance du milieu dans lequel il se trouve (instabilités donc). C’est normal d’avoir des variations.

Tant que tu passes pas de 600 à 900 brusquemment dans un même milieu, il n’y a rien de choquant.

Tu le mets où ton capteur actuellement ? C’est possible que tu nous fasses un relevé plus long ?

Au vu de ta valeur, je dirais que tu es dans un sol humide, je pense qu’il faudrait essayer dans de l’eau, au moins, l’eau de va pas s’assécher à vue d’oeil.

Ça correspond aux spécifications données par le fabriquant:

Le tableau de valeurs donné par le fabricant
  • Sol sec: 0 < valeur mesurée < 300
  • Sol humide: 300 < valeur mesurée < 700
  • Eau: 700 < valeur mesurée < 950

Je te conseil de tester différents milieux mais si la valeur ne dépasse pas les différents seuils, c’est simplement que la mesure n’est pas assez précise comme l’a expliqué Unknown.

D’ailleurs ce tableau est bien là pour le montrer, le capteur est fait pour détecter 3 types de sols (sec/humide/eau) mais sans précision garantie ;)

Oui, il faut réaliser une moyenne, et actualiser la valeur en pourcentage à un rythme différent.

Exemple:

  • Tu fais 20 mesures (ou plus) sur 60 secondes.
  • Tu actualises la valeur en pourcentage toutes les minutes. (ça peut être toutes les 2 ou 5 minutes, à toi de voir).

Après la question est, comment tu détermines que la plante est à 100% d’humidité ? Tu comptes prendre la valeur 950 (valeur maximale du capteur) qui correspond à l’eau ?

Plutôt que d’envoyer 20 messages, je te mets le code un peu commenté. Surtout lis les commentaires si tu veux apprendre et n’hésites pas à demander des précisions.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#include <LiquidCrystal.h>
LiquidCrystal lcd(11,10,5,4,3,2);

int sensor = 0;

int compteur = 0;
int somme = 0;
int moyenne = 0;
//le nombre de valeur pour ta moyenne
const int NB_VALEURS = 10;
String message = "";

void setup() {
  lcd.begin(16,2);
  lcd.print("INITIALISATION");
}

void loop() {
  somme += analogRead(sensor); //à chaque boucle tu ajoutes la valeur actuelle
  // += est équivalent à somme = somme + analogRead(sensor)

  /*priorité des opérations: les parenthèses sont prioritaires au MODULO (%)
  Le modulo donne le reste de la division euclidienne entre la valeur à gauche
  et la valeur à droite.
  Tu vas donc ajouter un au compteur (compteur + 1)
  Ensuite tu fais le modulo: Tu enlèves N fois 10 au compteur (en restant dans 
  les nombres positifs), ainsi si 
  (compteur + 1) = 10 alors (compteur + 1) % 10 te renvoie 0.
  */
  compteur = (compteur + 1) % NB_VALEURS;

  //si la variable compteur est égale à 0 (tu as additionné 10 valeurs)
  if (compteur == 0){
    moyenne = somme/NB_VALEURS; //tu fais la moyenne
    somme = 0;
    //tu affiches ce que tu veux selon la moyenne
    if (moyenne < 300)
      message = (int)(100*((float)moyenne/1023)) + (String)"% HUMIDITE \n SEC";
    else if (moyenne < 650)
      message = (int)(100*((float)moyenne/1023)) + (String)"% HUMIDITE \n MOUILLE";
    else //si moyenne est >= à 650
      message = (int)(100*((float)moyenne/1023)) + (String)"% HUMIDITE \n EAU";
    lcd.print(message);
  }

  delay(1000); //intervalle d'attente entre deux valeurs (en millisecondes)
}
+2 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte