Bonjour à tous
aujourd’hui, je voudrais vous présenter un nouveau capteur que nous avons dans notre boutique à partir d’aujourd’hui. Notre hygromètre capacitif V1.2
Ce module fonctionne avec capacité, c’est-à-dire contrairement au modèle précédent, il n’y a pas de corrosion par des processus galvaniques. La sortie de ce capteur est analogique, c’est-à-dire bien qu’il supporte les contrôleurs 3.3V, il ne peut pas être lu par une framboise qui n’a pas d’entrée analogique. En principe, ce module de capteur est non seulement adapté pour mesurer l’humidité dans le substrat, mais aussi pour afficher un niveau. Avant d’utiliser le capteur de manière productive, notre esquisse doit être calibrée selon les valeurs respectives.
Pour notre exemple d’application, nous utilisons un NanoV3. Et un verre d’eau au lieu d’un pot de fleurs, parce que l’humidité du substrat ne peut pas être changé aussi facilement que le niveau d’un verre. Les libarys ne sont pas nécessaires.
L’assignation à broches :
NanoV3 (NanoV3) | Capteur |
5V | Vcc Vcc |
Gnd | Gnd |
A0 (en) |
Aout (Aout) |
Nous commençons par la mise en service la plus simple, l’exemple AnalogReadSerial, qui est déjà intégré dans l’IDE: Exemples -gt; Basics -gt; AnalogReadSerial
et recevoir la sortie suivante dans le Serial Monitor:
dans le Serial Plotter, il semble un peu plus attrayant, mais n’est toujours pas idéal:
Nous utilisons le tutoriel de lissage sur Arduino.cc, voici le code:
/* Lissage créé 22 avril 2007 par David A. Mellis et lt;dam@mellis.org.gt; modifié 9 avril 2012 par Tom Igoe Cet exemple de code est dans le domaine public. http://www.arduino.cc/en/Tutorial/Smoothing */ Const Int numReadings (en) = 10; Int Lectures[numReadings (en)]; les lectures de l’entrée analogique Int lireIndex = 0; l’indice de la lecture actuelle Int Total = 0; le total en cours d’exécution Int Moyenne = 0; la moyenne Int inputPin = A0 (en); Vide Configuration() { Série.Commencer(9600); Pour (Int thisReading = 0; thisReading < numReadings (en); thisReading++) { Lectures[thisReading] = 0; } } Vide Boucle() { soustraire la dernière lecture : Total = Total - Lectures[lireIndex]; lire à partir du capteur: Lectures[lireIndex] = analogRead (en)(inputPin); ajouter la lecture au total : Total = Total + Lectures[lireIndex]; passer à la position suivante dans le tableau: lireIndex = lireIndex + 1; si nous sommes à la fin du tableau... Si (lireIndex >= numReadings (en)) { // ... envelopper autour du début: lireIndex = 0; } Calculez la moyenne : Moyenne = Total / numReadings (en); Série.println(Moyenne); Retard(1); retard entre les lectures pour la stabilité }
Après avoir téléchargé le code, la sortie optique est un peu plus agréable:
Nous constatons donc que le verre vide donne des valeurs autour de 792. Nous avons donc déterminé la valeur la plus élevée. Maintenant, nous déterminons la valeur la plus basse en trempant notre capteur dans l’eau jusqu’à une hauteur que vous spécifiez.
La profondeur d’immersion, c’est-à-dire la hauteur du niveau dans le verre /substrat doit toujours rester le même pour les comparaisons, nous avons choisi le point de v1.2 comme une marque. Et obtenir les valeurs suivantes:
Le verre plein délivre donc environ 419. Cela signifie que nous nous déplaçons dans une gamme de 792 - 419. S’il vous plaît assurez-vous d’effectuer cet étalonnage dans le milieu que vous voulez utiliser plus tard, que les valeurs varient en fonction du substrat.
Étant donné que ce capteur peut être utilisé de tant de façons, différents substrats sont possibles, les plantes ont des préférences différentes et nous ne pouvons pas estimer votre échelle, nous fournissons à ce stade le code que nous avons déjà dans notre AlcoTester AlcoTester ont montré:
Si (Moyenne >= 0 Et Moyenne <= 400) { État = "Sensor défectueux?"; } Autre Si (Moyenne >= 400 Et Moyenne <= 500) { État = "Soif !"; } Autre Si (Moyenne >= 500 Et Moyenne <= 649) { État = "Wet!"; } Autre Si (Moyenne >= 650 Et Moyenne <= 800) { État = "Patschnass !";
Un logement pour l’auto-impression est disponible gratuitement, vous pouvez trouver les fichiers requis Ici.
Amusez-vous à essayer et à expérimenter, peut-être vous trouverez un lecteur fidèle qui veut faire un verre à boire intelligent, qui montre le barman le niveau de ses invités. :) Jusqu’au prochain post
8 commentaires
Uwe
Um Lucas’ Frage (auch wenn schon etwas alt) hier mal zu beantworten. JA, es dringt Wasser über die Schnittkanten der Platinen ein, dadurch habe ich inzwischen 8 Sensoren geschrottet. Es löst sich die gesamt Isolierung ab und legt die Kupferflächen frei, so dass es hier doch wieder zu einem Ionenaustausch mit dem Boden kommt. Von völlig absurden Messwerten mal ganz zu schweigen. Ich hatte mal versucht, das Ganze vor der ersten Verwendung mit Nagellack auf den Kanten zu isolieren, brachte aber auch nur kurzfristig eine Besserung, länger als 3 Monate hat bei mir kein Sensor durchgehalten.
Held
Hallo,
ich bin der gleichen Meinung wie Ralf.
Bei Raumluft bekomme ich einen hohen Wert und im Wasser einen niedrigen .
Habe das Ganze mit einem ESP32 getestet am A0 Pin.
Der Serialmonitor gibt bei Luft einen Wert von ca. 2100 und mit Wasser ca. 700 aus. Die Werte verarbeite ich in der MAP- Funktion so, das sie einen logischen Sinn ergeben. Luft- niedrig, Wasser- hoher Wert zwischen 1 und 100.
Mit dieser Spreizung muß man nun selber ein Gefühl entwickelt was für die Pflanze nun trocken oder nass ist.
Nach einer Woche Test bin ich zu der Erkenntnis gekommen, das der Sensor unbrauchbar ist. Nach drei Tagen Messdauer ist der umgerechnete Messwert nur um 5 Punkte gefallen (85 auf 80). Die Erde obenauf wurde aber schon grau.
Darauf hin habe ich den Sensor heraus gezogen abgewischt und wieder eingesteckt. Siehe da, der Wert fiel um 50 Punkte.
Vor dem abwischen habe ich mir die Platine betrachtet, auf ihr befand sich ein Feuchfigkeitsfilm. Also hat der Sensor die Feuchtigkeit auf der Platine gemessen.
Die Erde herum war schon trocken. Ich habe Messung an einer anderenStelle im Blumentopf wiederholt, mit ähnlichem Ergebnis.
Eine automatische Bewässerung würde hiermit scheitern.
Meine Urlaubsbewässerung habe ich wieder auf Pauschalmenge umgestellt.
Gruß Eckard
Murphy
The sensor is said to be version 1.2 but there are differences from other 1,2 version available directly from china market. On the AZ_Delivery sensor, the LDO (U2) seems to be replaced by diode. There is not schematic offered on the web site :(
When supplied with 3.3V, sensor did not provide any output voltage (NE555 is requiring 5V supply). When supplied with 5V, sensor provide 4V on its output as dry (less voltage, when wet) . For 3.3V controllers (like ESP32) this can be fatal!
I have found (as possible solution) resistor of 100 Ohms in series to the 5V power pin is dropping the voltage over the sensor and impacting the sensor output voltage in positive way (3V as dry, less when wet) . This allows to work safely with ESP32 microcontrollers.
Samira
Hallo,
danke für Ihre nutzbare Aufgabe. Ich möchte diese Aufgabe mit STM32 und HAL_Drive schreiben. Wie kann ich letzten Teil schreiben? Wie kann zeigt , der Boden Nass ist oder trocken?
Viele Grüße
Samira
Dennis
Wenn ich den Sensor in das Wasser tauche und den Beispielcode “AnalogReadSerial” ausführe, liefert mir der Monitor lediglich Werte zwischen 0 und 13. Was mache ich falsch?
Klaus
sehe ich auch so wie Ralf.
Gruß
Klaus
Lucas
Dringt von den (Schnittkanten der Platine) kein Wasser in den Sensor ein?
Ralf
Hallo,
sind eure Werte für die Feuchtigkeit nicht verdreht, Müßte nicht zwischen 400 und 500 Patschnass und zwischen 650 und 800 Pflanzen haben Durst sein.
Gruss
Ralf