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

                      ARDUINO -Capteur d'humidité

                      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                      • Editeur
                      • Markdown