Partage
  • Partager sur Facebook
  • Partager sur Twitter

ARDUINO -Capteur d'humidité

Sujet résolu
28 mars 2016 à 22:50:48

Bonjour

je travail sur un projet pour le bac. Ma tâche dans se projet consiste a capter le taux d'humidité dans un terrarium tropical. Le capteur que j'utilise est le suivant : http://www.conrad.fr/ce/fr/product/1170516/Capteur-dhumidit-HCZ-J3AN-20-90-rF-0-60-C-1-pcs?ref=list

Mon professeur  ma donné le code suivant : 

int valeur; 
void setup() {

}
void loop() {

pinMode(6, LOW) ; // j'éteins tout 
pinMode(5, LOW) ; 
pinMode(4, LOW) ; 
pinMode(3, LOW) ; 
pinMode(2, LOW) ;

valeur = analogeRead(1) ;

if(valeur < 45) {    // très sec
pinMode(2, High) ;   // Allume la led rouge (pin 2) 
}
else if(valeur < 80) {  // sec
pinMode(3, High) ;    // Allume la led jaune  (pin 3)
}
else if(valeur < 215) {   // humide
pinMode(4, High) ;        // Allume la led jaune ( pin 4)
}
else if(valeur < 800) {  // très humide
pinMode(5, High) ;  // Allume la led verte (pin 5)
}
else if(valeur < 1023) {  // noyé 
pinMode(6, High) ;   // Allume la led verte  (pin 6 )
}

delay(100);
}

C'est la seule aide que je pourrais recevoir de mon professeur . Mon problème est que je ne sais pas a quoi servent les valeurs ( par exemple: valeur < 45) et je ne sais pas comment je pourrais mettre sa en taux d'humidité.

Désolé si je me suis ma exprimé. 

Merci.



PS : je suis débutant dans l'électronique donc si vous trouvez mon problème assez simple au lieu de me critiquer aidez moi s'il vous plaît. Merci ^^ 

  • Partager sur Facebook
  • Partager sur Twitter
28 mars 2016 à 23:26:17

Bonjour,

Ton capteur semble être une résistance variable en fonction du taux d'humidité (et de la température!). Dans ton cas à part si tu as un capteur de température aussi dans ton projet, on peut supposer que tu travail à une température fixe du terrarium.

Tu peux lire la datasheet : http://www.rapidonline.com/pdf/61-0984.pdf qui t'apprendra beaucoup de choses sur ce capteur.

Ce que j'ai compris qu'il se passe ici, c'est un pont diviseur de tension avec ton capteur et une résistance. Avec l'ADC de l'arduino tu vas venir mesurer la tension aux bornes du capteur (qui sera renvoyé sous forme d'une valeur entre 0 et 1023). A priori ça s'arrête là, tu n'as pas à faire de calcul pour trouver le taux en % ?

Il se peux que selon dans quel sens varie la résistance du capteur en fonction de l'humidité, ça soit l'inverse, et qu'une petite valeur signifie très mouillée.

  • Partager sur Facebook
  • Partager sur Twitter
29 mars 2016 à 9:09:52

Arkturus a écrit:

Bonjour,

Ton capteur semble être une résistance variable en fonction du taux d'humidité (et de la température!). Dans ton cas à part si tu as un capteur de température aussi dans ton projet, on peut supposer que tu travail à une température fixe du terrarium.

Tu peux lire la datasheet : http://www.rapidonline.com/pdf/61-0984.pdf qui t'apprendra beaucoup de choses sur ce capteur.

Ce que j'ai compris qu'il se passe ici, c'est un pont diviseur de tension avec ton capteur et une résistance. Avec l'ADC de l'arduino tu vas venir mesurer la tension aux bornes du capteur (qui sera renvoyé sous forme d'une valeur entre 0 et 1023). A priori ça s'arrête là, tu n'as pas à faire de calcul pour trouver le taux en % ?

Il se peux que selon dans quel sens varie la résistance du capteur en fonction de l'humidité, ça soit l'inverse, et qu'une petite valeur signifie très mouillée.

Oui en effet il y a un capteur de température dans mon projet. j'ai fais quelques recherches pour calculer le taux en % mais j'ai rien trouvé.

Je pas compris votre dernière phrase : "Il se peux que selon dans quel sens varie la résistance du capteur en fonction de l'humidité, ça soit l'inverse, et qu'une petite valeur signifie très mouillée. "



  • Partager sur Facebook
  • Partager sur Twitter
29 mars 2016 à 10:59:15

Dans la datasheet, quand c'est très humide la résistance devient faible, et au contraire si c'est sec elle devient forte. Donc si tu mesure la tension aux bornes du capteur, une petite tension signifiera qu'il fait humide, tandis que dans le code d'exemple c'est l'inverse, une petite tension signifie très sec.
  • Partager sur Facebook
  • Partager sur Twitter
29 mars 2016 à 11:03:11

Ah d'accord.

Je pense avoir une idée de comment calculer le taux d'humidité. Je divise par 10 la valeur que j'obtiens je trouve le résultat en %.

Mais le problème est que je ne sais pas comment mettre sa sur arduino.

  • Partager sur Facebook
  • Partager sur Twitter
29 mars 2016 à 11:25:20

Vu la tête des courbes de la doc, je pense que c'est un peu plus compliqué que ça, qu'il y a un peu plus de math derrière avant de s'attaquer au code de l'arduino.

Attention aussi dans la doc ils parlent d'opérating frequence range, et de rated voltage < 1V. A priori il faut une courant alternatif (sine wave qu'ils disent dans un paragraphe).

Tu dois dessiner le circuit aussi ou c'est imposé ?

  • Partager sur Facebook
  • Partager sur Twitter
29 mars 2016 à 11:28:21

Arduino lit une valeur entre 0 et 1023. Toi tu veux une valeur entre 0 et 100. Donc tu dois utilser une proportionnalité tout simplement.

si Arduino te donne une valeur x, ta valeur en % sera : x*100/1023 soit x/10.23

  • Partager sur Facebook
  • Partager sur Twitter
29 mars 2016 à 13:12:30

C'est un peu plus compliqué que ça.

Arduino te donne une valeur x comprise entre 0 et 1023, qui est proportionnel à la plage de tension entre 0 et Vref (la tension appliquée à la broche Vref de l'arduino, ou bien Vref=1,1V si tu utilise la tension de référence interne).

La tension que tu va mesurer c'est x/1024 * Vref. Tu ne peux pas mesurer une tension supérieure à Vref, dans ce cas il faut utiliser un pont diviseur de tension et faire les calculs appropriés après.

Une fois que tu as la tension aux bornes du capteur, tu peux calculer la résistance du capteur.

Avec la résistance du capteur (avec une température connue) tu peux calculer le % d'humidité en utilisant le tableau de la doc.

-
Edité par Arkturus 29 mars 2016 à 13:13:29

  • Partager sur Facebook
  • Partager sur Twitter
5 avril 2016 à 9:15:17

Bonjour ( désolé du retard problème de connexion)

J'ai réussi ^--^

int valeur;
int b = 10;

void setup() {
 // initialize serial communication at 9600 bits per second:
  Serial.begin(9600); 
}

void loop () {
   
  pinMode(6, LOW );
  pinMode(5, LOW );
  pinMode(4, LOW );
  pinMode(3, LOW );
  pinMode(2, LOW );
  valeur = analogRead(1);
  Serial.print ( "humidite %: ");
  Serial.println (valeur/ b);

  if(valeur < 45) {
    pinMode(6, HIGH );
  }
  else if (valeur < 80) {
    pinMode(5, HIGH );
  }
  else if(valeur < 415) {
    pinMode(4, HIGH );
  }
  else if(valeur < 800) {
    pinMode(3, HIGH );
  }
  else if(valeur < 1023) {
    pinMode(2, HIGH );
  }
  delay(100);
}

Voilà le nouveau code :)

merci pour votre aide.

  • Partager sur Facebook
  • Partager sur Twitter
29 juin 2019 à 17:28:09

Bonjour j ai vu votre code mais Je voudrais comprendre une chose: comment intégrer le module realtime block?
  • Partager sur Facebook
  • Partager sur Twitter
20 juillet 2020 à 19:16:59

Besoin d'aide sur un programmepermettant de contrôler l'humidité dans une ère. Vraiment urgent s'il vous plaît!
  • Partager sur Facebook
  • Partager sur Twitter
21 juillet 2020 à 15:02:11

@HenriJoelLelah1 Bonjour, merci de ne pas déterrer d'ancien sujet.

Déterrage

Citation des règles générales du forum :

Avant de poster un message, vérifiez la date du sujet dans lequel vous comptiez intervenir.

Si le dernier message sur le sujet date de plus de deux mois, mieux vaut ne pas répondre.
En effet, le déterrage d'un sujet nuit au bon fonctionnement du forum, et l'informatique pouvant grandement changer en quelques mois il n'est donc que rarement pertinent de déterrer un vieux sujet.

Au lieu de déterrer un sujet il est préférable :

  • soit de contacter directement le membre voulu par messagerie privée en cliquant sur son pseudonyme pour accéder à sa page profil, puis sur le lien "Ecrire un message"
  • soit de créer un nouveau sujet décrivant votre propre contexte
  • ne pas répondre à un déterrage et le signaler à la modération

Je ferme ce sujet. En cas de désaccord, me contacter par MP.

  • Partager sur Facebook
  • Partager sur Twitter