Valeur variable avec un capteur d'humidité

Bonjour,

Je viens de passer au test des capteurs d’humidité et j’ai besoins de vos avis.

Mon capteur d’humidité est le HIH-4000-3. Je l’ai raccordé comme sur cette photo.

Voici le programme que j’utilise :

int analogPin = 3;
int val = 0; // variable de type int pour stocker la valeur de la mesure
float humi = 0;
float tension = 0;

void setup()
{
  Serial.begin(9600);
}

void loop()
{

  // lit la valeur de la tension analogique présente sur la broche
  val = analogRead(analogPin);   
 tension = val * 0.0048828125;
  humi = (tension - 0.841)/0.031;
  
  Serial.print("Valeur : ");
  Serial.println(val);  
  Serial.print("Tension : ");
  Serial.println(tension); 
  Serial.print("Humidite : ");
  Serial.println(humi);     
  Serial.println("--------------");
  delay(1000);  

}

Lorsque je visualise les résultats, j’ai ceci :

Valeur : 342
Tension : 1.67
Humidite : 26.74

Valeur : 429
Tension : 2.09
Humidite : 40.44

Comme vous le voyez, je passe de 26% à 44% entre 2 mesures.
Or si je test la tension entre le GND et le PIN 3, j’ai une tension de 2,5V (constante) et après calcule correspond à 53,8% ce qui est proche de la valeur du hydromètre se trouvant dans la pièce.

Donc ma question:
Pourquoi analogRead me renvoi une valeur variable alors que j’ai une tension stable avec un multimètre?

silverbeach: Comme vous le voyez, je passe de 26% à 44% entre 2 mesures. Or si je test la tension entre le GND et le PIN 3, j'ai une tension de 2,5V (constante) et après calcule correspond à 53,8% ce qui est proche de la valeur du hydromètre se trouvant dans la pièce.

Donc ma question: Pourquoi analogRead me renvoi une valeur variable alors que j'ai une tension stable avec un multimètre?

bonsoir Déjà voir sur plus de 2 mesures et déduire la courbe pour voir si l'oscillation est periodique quel taux d'acquisition ?

Les multimètres lambda font de l’intégration en continu mettre un petit condo (genre 1µf) entre V+ et GND au plus prés du capteur attention aussi : le capteur est sensible à l'environnement lumineux "Light sensitive, shield from bright light."

Demande de complément d'explication : Les mesures par l'arduino sont-elles aléatoires et les deux résultats que tu donnes ne sont-ils que 2 pris parmi plein d'autres ou est-ce que tu ne trouve que ces deux là.

Dans le premier cas il faut aller voir du coté du câblage. Évites d'utiliser la ligne de 0V de la plaque à trou pour relier ton capteur à l'arduino, à la place torsade 2 fils (1) pour faire la liaison arduino/capteur, pour celui qui véhicule le 0V relies le d'un coté au plus près du capteur et de l'autre coté au plus près des broches GND de l'arduino. Dans la mesure du possible, quand tu as des signaux analogiques à transporter, câbles tes fils de masses en "étoile", le centre de l'étoile étant les broches GND de l'arduino. C'est le premier principe de base qu'on apprends dans les écoles d'électronique. La difficulté c'est que les signaux numériques (OV/5V) sont beaucoup plus tolérents et qu'on peut câbler à peu près n'importe comment ça fonctionne toujours mais l'analogique est un monde cruel.

Si par contre tu obtiens seulement que les 2 valeurs que tu indiques dans ce cas c'est cyclique et reproductible et c'est un loup à trouver...

Cas du voltmètre: Le voltmètre est un appareil de mesure précis mais lent, le signal passe à travers un puissant filtre passe bas (intégrateur) avant d'être effectivement mesuré. C'est fait par construction pour éliminer les perturbations. Si comme je le suppose tu es victime de perturbations c'est normal de ne rien remarquer avec un voltmètre.

(1) Pourquoi des fils torsadés améliorent l'immunité aux bruits ? L'arduino mesure une différence de tension entre la masse (GND) et l'entrée A0 par exemple. Si tes fils de liaisons ne suivent pas le même chemin où si le fil de masse sert à relier un autre composant les perturbations ne seront pas les même sur les deux fils qui relient ton capteur. Par contre si tu torsades les fils et que tu n'utilises pas celui de 0V pour alimenter un autre composant les deux fils subiront les mêmes perturbations et comme l'arduino quantifira la différence : (Vcapteur +perturbation) - ("0V" +perturbation) En théorie la perturbation est éliminée, en pratique elle est très fortement atténuée.

Ce sont des valeurs non cyclique et à chaque essais. De plus, à chaque essai, les plages de résultats sont différents:
dès fois ça varie de ±3 à ±40, dès fois c’est légèrement négatif, certaines fois je suis descendu à -20…

Et Même s’il n’y a rien de raccordé, j’ai des valeurs aléatoires. Voici les résultats avec l’arduino uno “nu”:

Valeur : 429
Tension : 2.09
Humidite : 40.44

Valeur : 419
Tension : 2.05
Humidite : 38.87

Valeur : 213
Tension : 1.04
Humidite : 6.42

Valeur : 379
Tension : 1.85
Humidite : 32.57

Valeur : 461
Tension : 2.25
Humidite : 45.48

Valeur : 299
Tension : 1.46
Humidite : 19.97

Normalement je devrais avoir une tension de 0V et une valeur au alentour de -27

Concernant les essais, j’ai torsadé les fils et raccordé au plus court (en passant au dessus de la carte), en faisant passer à côté de la carte, en “oubliant” de raccorder le pin 3, en ne raccordant aucun câbles,…

silverbeach:
Ce sont des valeurs non cyclique et à chaque essais. De plus, à chaque essai, les plages de résultats sont différents:
dès fois ça varie de ±3 à ±40, dès fois c’est légèrement négatif, certaines fois je suis descendu à -20…

Et Même s’il n’y a rien de raccordé, j’ai des valeurs aléatoires. Voici les résultats avec l’arduino uno “nu”:


Normalement je devrais avoir une tension de 0V et une valeur au alentour de -27

Bonjour
Non , une entrée “en l’air” rend du “nimporte quoi”
déjà pour tester l’entrée ana (et sa susceptibilité) :

3 test simples :
entrée ana à GND et lire plusieurs fois la valeur rendue
entrée ana à +5V et " "
curseur sur entrée ana
mettre un potentiometre (peut importe la valeur) GND <------V----------+5V
et lire plusieurs fois la valeur rendue pour différentes positions du curseur.

après s’occuper du capteur :grin:
Tu a mis un condo au ras des pattes GND VCC du capteur ?

Je n'ai pas mis de condensateur, je n'en ai pas. Si ma copine ne rentre pas trop tard, j'irais en chercher un ainsi qu'un potentiomètre.

Jusqu'à maintenant, la carte était fixée sur une plaque en bois. Lors du premier test, les valeurs variaient fortement. Ensuite, j'ai refait le premier test en posant la carte sur une boite en plastique puis, en maintenant la carte par le câble usb. Les valeur variaient beaucoup moins.

Du coup, j'ai effectué les test en posant la carte sur la boite.

Comme je n'ai pas de potentiomètre sous la main, je n'ai effectué que les 2 premiers test:

Voici les résultats Pin 5 raccordé à 5V:

Valeur : 348 Valeur : 340 Valeur : 310 Valeur : 276 Valeur : 337 Valeur : 337 Valeur : 282 Valeur : 337 Valeur : 349 Valeur : 298 Valeur : 321 Valeur : 356 Valeur : 333 Valeur : 292 Valeur : 358 Valeur : 359 Valeur : 294 Valeur : 353 Valeur : 368 Valeur : 314 Valeur : 325 Valeur : 371 Valeur : 352 Valeur : 301 Valeur : 368 Valeur : 371 Valeur : 305

Et les résulats Pin 5 raccordé au GND:

Valeur : 300 Valeur : 238 Valeur : 282 Valeur : 261 Valeur : 243 Valeur : 302 Valeur : 292 Valeur : 249 Valeur : 315 Valeur : 316 Valeur : 261 Valeur : 327 Valeur : 332 Valeur : 275 Valeur : 326 Valeur : 338 Valeur : 286 Valeur : 321 Valeur : 346 Valeur : 304

Les résultats me semble anormal. Les résultats ne devraient pas être proche de 1024 pour le 5V et 0 pour les 0V?

Pour info, voici le programme utilisé:

int analogPin = 5;
int val = 0;

void setup()
{
  Serial.begin(9600);
}

void loop()
{
     val = analogRead(analogPin);   
       Serial.print("Valeur : ");
  Serial.println(val); 
   delay(1000);  

}

silverbeach: Je n'ai pas mis de condensateur, je n'en ai pas. Si ma copine ne rentre pas trop tard, j'irais en chercher un ainsi qu'un potentiomètre.

Les résultats me semble anormal. Les résultats ne devraient pas être proche de 1024 pour le 5V et 0 pour les 0V?

Pour info, voici le programme utilisé:

int analogPin = 5;
int val = 0;

void setup() {   Serial.begin(9600); }

void loop() {      val = analogRead(analogPin);           Serial.print("Valeur : ");   Serial.println(val);    delay(1000); 

}

Il y a un probleme ! vérifiez les "cables" de liasons. ça ressemble à de l'entrée ana en l'air faire le test directement avec un seul "cable" sur le uno (pas de breadboard) tester avant la manip la continuité du câble, faire le test avec plusieurs differents. chez moi à l'instant : A5 en l'air j'ai du n'importe quoi entre 150 et 500 ~ mais ça c'est normal ou du moins pas anormal A5 sur GND du UNO 0 constant (nominal) A5 Sur +5V du UNO 1023 constant (nominal) A5 sur 3.3V du UNO légère fluctuation entre 670 mini et 672 max (rien d'anormal)

J'avais déjà fait le test avec un seul câble.

J'ai recommencé le test à 5V avec plusieurs câbles (vérifié) et j'ai toujours les mêmes résultats. De plus, j'ai mesuré +-5V entre le pin 5 et le gnd avec le multimètre.

J'ai l’impression que ma carte a un problème

silverbeach: J'avais déjà fait le test avec un seul câble.

J'ai recommencé le test à 5V avec plusieurs câbles (vérifié) et j'ai toujours les mêmes résultats. De plus, j'ai mesuré +-5V entre le pin 5 et le gnd avec le multimètre.

J'ai l’impression que ma carte a un problème

on parle bien de A5 ? je viens de tester A5 (et 5 aussi ) avec le programme en fonction entrée en l'air résultat 0.7V (ce qui est électroniquement compréhensible)

Tu a essayé les autres entrées ana ? A0---->A4 en modifiant le sketch

J’ai honte :blush:

Je me branchais sur le pin 5.

Je viens de refaire le test et ça fonctionne. J’ai une humidité de ±55% qui varie légèrement (1 à 2%). Il me reste plus qu’a vérifier la calibration même si il a été calibré en usine.

J’ai perdu une journée pour ce bête problème plus le temps perdu par vous.

En tout cas merci pour m’avoir aidé et surement à bientôt, je vais bientôt commencer à tester un ecran lcd série lol

silverbeach: J'ai honte :blush:

Je me branchais sur le pin 5.

Je viens de refaire le test et ça fonctionne. J'ai une humidité de +-55% qui varie légèrement (1 à 2%). Il me reste plus qu'a vérifier la calibration même si il a été calibré en usine.

J'ai perdu une journée pour ce bête problème plus le temps perdu par vous.

En tout cas merci pour m'avoir aidé et surement à bientôt, je vais bientôt commencer à tester un ecran lcd série lol

hé bien voilà, c’était donc bien une entrée en l'air :grin: c'est le genre de bourde qui arrive à tous, le probleme c'est que lorsque l'on a la tête dans le guidon, que l’erreur est aussi triviale, on la reproduit systématiquement, mais l'avantage c'est qu'une fois le probleme resolu, c'est que l'on ne se fait pas pas piéger 2 fois. :)

tu pars sur quoi comme ecran serie