Go Down

Topic: Valeur variable avec un capteur d'humidité (Read 4960 times) previous topic - next topic

silverbeach

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 :
Code: [Select]
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 :
Quote
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?


Artouste




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."



68tjs

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.

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":

Quote
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,...

Artouste

#4
Nov 09, 2011, 02:50 pm Last Edit: Nov 09, 2011, 02:53 pm by Artouste Reason: 1

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  :smiley-mr-green:
Tu a mis un condo au ras des pattes GND VCC du capteur ?

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.

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:
Quote
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:
Quote
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é:
Code: [Select]
int analogPin = 5;
int val = 0;

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

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

}



Artouste


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é:
Code: [Select]
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)







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

Artouste


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

silverbeach

J'ai honte  :smiley-red:

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


Artouste


J'ai honte  :smiley-red:

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  :smiley-mr-green:
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.   :)




Stef84


Go Up