[resolu] lecture sonde d'humidité

Bonjour à tous ,
je voudrais lire la valeur d'une sonde d'humectation qui est sur 3 fils :
un fil pour la masse ---> ok
un fil blanc pour l'excitation un signal de 5v appliqué pendant au moins 10ms ----> ok
un fil rouge pour la mesure ,et là tout ce que je sais c'est :
Any datalogger which can produce a 2.5 to 5V excitation with
approximately 10 millisecond duration and read a voltlevel
signal with 12-bit or better resolution should be compatible

pour l'instant j'arrive bien à lire une valeur resistive de ma sonde entre deux fils mais qui n'est pas tres precise et je voudrais bien recuperer cette valeur numerique qui est prevue....

quelqu'un pour m'aider à rediger le code ?

merci

Y'a rien de résistif ou de numérique : le capteur renvoie une tension qu'il suffit de mesurer. Donc il s'agit d'un simple analogRead()

oui c'est ce que pensais au début
mais le problème est que je devrais lire une tension entre 250 mv et 1v en gros
et que j'excite ou non mon capteur par le fil blanc ......cest pareil !!
c'est la que je coince

int pulse = 1;                 // fil blanc connectée à la broche numérique n° 1
int capteurH = A0;             //renomme la broche A0 en capteurH pour fil rouge
int ValeurcapteurH = 0;        // definie la variable d'Humidité
void setup()
{
  Serial.begin(9600);
  pinMode(pulse, OUTPUT);      // met la broche utilisée pour la pulse en SORTIE  
  pinMode(capteurH, INPUT);      // met la broche utilisée pour la pulse en SORTIE
}

void loop()
{
  digitalWrite(pulse,HIGH);   // pulse pendant 100ms
  delay(100);  
  ValeurcapteurH = analogRead(capteurH);
  Serial.print("Humectation = " ); //affichage sur ordi                      
  Serial.println(ValeurcapteurH);
  
  //digitalWrite(pulse, LOW);    // fin de pulse
  delay(2000);                  // pause 5 secondes avant nouvelle mesure
}

Le pin 1 c'est le TX série, prends-en un autre. Mais oublie les histoires de pulse, branche le simplement au 5V pour commencer

oui en effet je viens de me mettre sur la broche 2 et c'est mieux
la mesure à l'air de se faire correctement avec une pulse de 10ms
c'est juste le delta de mesure entre la valeur sèche et completement humide qui ne m'a pas l'air très grande
je varie entre une valeur de 100 et 250
je pense que ne dois pas delivrer assez de courant avec l'arduino....

bazounga:
oui en effet je viens de me mettre sur la broche 2 et c'est mieux
la mesure à l'air de se faire correctement avec une pulse de 10ms
c'est juste le delta de mesure entre la valeur sèche et completement humide qui ne m'a pas l'air très grande
je varie entre une valeur de 100 et 250
je pense que ne dois pas delivrer assez de courant avec l'arduino....

c'est surement du au fait que tu travaille avec le convertisseur AD sous 5 volt de reference
le pas etant alors de 5/1024 = 0.0049V
si ta valeur min renvoyée est de 100 cela signifie que ton capteur ne renvoi pas plus bas que 0.49V et plus haut avec 250 que 1.22V.
si tu veux ameliorer la resolution, il te faut une Aref externe au plus proche de 1.22 V
c'est dommage tu es un peu au dessus de la ref interne de 1.1V
une idée en passant , je mettrais en serie qq diode sur le fil d'excitation histoire de faire chute le V excitation et de renrer sous la barre du 1.1V en retour

oui c'est ça merci
je viens de ré ecrire mon code et je me retrouve avec des valeurs en mV du meme ordre de grandeur qu'avec l'équipement de mesure original ....
par contre je veux bien que tu me ré explique ton histoire de tension de ref

int pulse = 2;                 // fil blanc connectée à la broche numérique n° 1
int capteurH = A0;             //renomme la broche A0 en capteurH pour fil rouge
int ValeurcapteurH = 0; // definie la variable d'Humidité
int Vcor;
void setup()
{
  Serial.begin(9600);
  pinMode(pulse, OUTPUT);      // met la broche utilisée pour la pulse en SORTIE  
  pinMode(capteurH, INPUT);      // met la broche utilisée pour la pulse en SORTIE
}

void loop()
{
  digitalWrite(pulse,HIGH);   // pulse pendant 10ms
  delay(10);  
  ValeurcapteurH = analogRead(capteurH);
  Vcor = map(ValeurcapteurH, 0, 1023, 0, 5000);
  Serial.print("Humectation = " ); //affichage sur ordi    
  Serial.print(Vcor);
  Serial.println(" mV");
  digitalWrite(pulse, LOW);    // fin de pulse
  delay(60000);                  // pause 60 secondes avant nouvelle mesure
}

bazounga:
par contre je veux bien que tu me ré explique ton histoire de tension de ref

:grin:
déjà lire ça

pour obtenir la meilleure resolution sur la gamme , il faut dans l'ideal que la rerence de tension du convertisseur AD soit egale au Vout max du capteur.
Là dans ton cas tu excite ton capteur avec du 5V et il te sort en max 1.2 V ~
perso je ferais un test en mettant en serie sur la ligne d'excitation 1,2,3 ... diodes basiques qui vont apporter une chute de tension de 0.7V~ , l'interet est d'inserer le nombre de diodes juste suffisant pour passer le Vout max sous la barre du 1.1V et d'utiliser l'AREF interne par analogReference(INTERNAL)
ta resolution deviendra alors 1.1/1024

si tu descend le V d'excitation à ~ 3V tu passe sous la barre du 1.1V
voir specifs

ok compris,
tu utilises aussi des sondes decagon ?

bazounga:
ok compris,
tu utilises aussi des sondes decagon ?

Non, et je ne connaissais meme pas avant ton post ! :grin: