Projet Arduino bloqué, détecteur d'humidité dans le sol ne fonctionne pas.

Bonjour,
Pour voir les images de mon projet: Dropbox - Error
Voici plusieurs semaines que j'essaie de mesurer l'humidité dans un pot de fleur mais je souhaite pour cela, construire ma propre sonde du taux d'humidité, ce que j'ai fais.

Comme vous pouvez le voir sur les différentes photos, ma sonde est reliée à un combo Arduino UNO - WifiShield par les ports 5V et A0.
L'idée est la suivante, on envoi 5V dans l'une des visses, le port analogique A0, lit la valeur reçue par la seconde vise grace au code C suivant:

/*
  ReadAnalogVoltage
  Reads an analog input on pin 0, converts it to voltage, and prints the result to the serial monitor.
  Attach the center pin of a potentiometer to pin A0, and the outside pins to +5V and ground.
 
 This example code is in the public domain.
 */

// the setup routine runs once when you press reset:
void setup() {
  // initialize serial communication at 9600 bits per second:
  Serial.begin(9600);
}

// the loop routine runs over and over again forever:
void loop() {
  // read the input on analog pin 0:
  int sensorValue = analogRead(A0);
  // Convert the analog reading (which goes from 0 - 1023) to a voltage (0 - 5V):
  float voltage = sensorValue * (5.0 / 1023.0);
  // print out the value you read:
  Serial.println(voltage);
  delay(1000);
}

Ainsi, si la terre du pot de fleur est humide, l'électricité entre les deux visses passera et donc le port analogique recevra une tension en lecture. A partir de là je peux étalonner.
Déjà, un premier test "à vide", c'est à dire que la sonde est à l'air libre, donne des résultats étonnant; des valeur entre 4.70 et 5V ..
Je ne comprend pas pourquoi, vu qu'il n'y a rien qui conduit l'électricité entre les deux visses de ma sonde.

Ensuite, je fais des tests dans un pot de terre sèche et la bizarre ... Je lis en entrée analogique A0 une tension de 5V. J'ai laissé tourné le test 10min et j'ai un résultat de 5V de moyenne ... J'ai donc pendant 10min reçue une tension continue de 5V alors que la terre est sèche .. Il y a donc un problème, je pense que sa vient de la sonde en bois, mais j'ai vu sur internet que le bois ne conduit pas .. Ou peut etre le bois humide ... Mais il n'y a pas de trace d'humidité sur ma sonde ..

Merci de votre aide par avance. GibsonSG_76

bonjour,
mets déjà dans le setup la pin en INPUT.
puis teste sans le bloc de bois.
mets le tout dans un verre d'eau, tu devrais avoir une valeur en 1024
puis à l'air libre, cela devrait donner 0

faudrait que je regarde sur une sonde toute faite s'il y a pas une résistance quelque part.

C'est fait, mon code ressemble donc à ça maintenant:

/*
  AnalogReadSerial
  Reads an analog input on pin 0, prints the result to the serial monitor.
  Attach the center pin of a potentiometer to pin A0, and the outside pins to +5V and ground.
 
 This example code is in the public domain.
 */

// the setup routine runs once when you press reset:
void setup() {
  // initialize serial communication at 9600 bits per second:
  Serial.begin(9600);
  pinMode(A0, INPUT);
}

// the loop routine runs over and over again forever:
void loop() {
  // read the input on analog pin 0:
  int sensorValue = analogRead(A0);
  // print out the value you read:
  Serial.println(sensorValue);
  delay(500);        // delay in between reads for stability
}

a l'air libre sa donne des valeur entre 300 et 400

GibsonSG_76:
C'est fait, mon code ressemble donc à ça maintenant:
...

a l'air libre sa donne des valeur entre 300 et 400

Bonjour
il faut que tu cable ta sonde en diviseur de tension , pas seulement la cabler entre +5V et entrée Ax

je savais bien qu'il fallait une résistance quelque part

La terre plus ou moins humide présente une certaine résistance.
Si cette résistance est tirée au +5V quelque soit sa valeur tu liras toujours 5V.
Maintenant sonde en l'air, la broche A0 n'est reliée à rien donc tu attrapes france-inter, RTL, ton téléphone portable, le 50Hz du secteur donc en fait tu captes n'importe quoi et le résultat c'est n'importe quoi.

La terre présentant une certaine résistance il faut réaliser la mesure en faisant un pont diviseur et en mesurant la tension en sortie de ce pont. Je n'ai pas trop idée de l'ordre de grandeur de la résistance de la terre sèche mais elle doit sans doute faire plusieurs centaines de kOhms alors que la terre mouillée doit présenter une résistance plus faible. Donc je préconiserais une résistance d'une centaine de kOhms entre le +5 et A0 et ta sonde branchée entre A0 et la masse. Après quelques mesures tu pourras peut être faire évoluer la valeur de la résistance pour avoir des résultats de mesure plus fin.

Ok je commence à comprendre.
Mais ne devrais-je pas faire dériver vers l'analogique input après la résistance et non avant ?

C'est bon ! Tout marche impect !
J'ai fais comme sur le schéma de la photo postée par infobarquee.

Je ne comprend pas pourquoi fait-on dériver vers l'entrée analogique avant la résistance mais sa marche, donc si quelqu'un pouvait m'expliquer ( j'aime pas rester sur un incompris ... ) pourquoi sa sera serait cool :slight_smile:

Sinon, pour ceux qui essayeraient de faire une sonde maison, allez sur le lien que j'ai donné avant j'ai uploadé les image du projet entier. Le fonctionnement est simple et bien expliqué par la photo-schéma précédemment citée.

Merci encore pour votre aide. Bye.

EDIT: La résistance utilisée et une résistance 10Kohms comme précisé sur le schéma, et les mesures de tensions effectuées par la carte grace au code précédemment citée dans les autres posts son très cohérentes et surtout sont égales à 0 quand je sonde à vide.

content d'avoir pu rendre service :wink: