Der Bodenfeuchtesensor misst die Feuchtigkeit der Erde durch den Widerstand, welcher eine Spannung abfallen lässt. In verschiedenen Foren wurde von Benutzern angesprochen das diese sich “auflösen” dieses geschieht durch die Spannung in Verbindung mit Feuchtigkeit.
In dem Paket zum Sensor liegen die benötigten Kabel, der Sensor und die Auswerteeinheit bei.
Bezug
Der Bodenfeuchtesensor kann Bsp. über eBay.de* für ca. 2 € erworben werden.
Hinweis von mir: Die mit einem Sternchen (*) markierten Links sind Affiliate-Links. Wenn du über diese Links einkaufst, erhalte ich eine kleine Provision, die dazu beiträgt, diesen Blog zu unterstützen. Der Preis für dich bleibt dabei unverändert. Vielen Dank für deine Unterstützung!
Technische Daten des Bodenfeuchtesensor
- Betriebsspannung 3,3 bis 5V
Schaltplan
Der Sensor hat 2 Ausgänge welche mit “A” und “B” beschriftet sind.
Die Auswerteeinheit besitzt 4 Ausgänge
- VCC – Spannung
- A0 – analoger Ausgang
- D0 – digitaler Ausgang
- GND – Ground
Somit ergibt sich eine einfache Schaltung (und auch Programmierung).
Bodenfeuchtesensor | Arduino Nano |
---|---|
VCC | 5V |
A0 | A0 |
GND | GND |
Sensorwerte messen
Da die Feuchtigkeit im Boden nicht von einer zur anderen Sekunde abfallen wird, messe ich Bsp. im Beispiel 1 alle 15min. wobei dieses schon recht viel sein wird.
Da durch die Spannung und der im Boden gelösten Salze (und Mineralien) eine Galvanische Lösung entsteht löst diese mit der Zeit den Sensor auf.
Quellcode
Beispiel 1 – Blumentopfüberwachung
Zur Überwachung einer Pflanze (Wasserversorgung) habe ich folgendes Sketch erstellt.
/* * Dateiname: lektion28_bodenfeuchtesensor.ino * Thema: Bodenfeuchtesensor (mir RGB LED) */ #define BLUE_LED 2 /* PIN für die blaue LED */ #define RED_LED 4 /* PIN für die rote LED */ #define GREEN_LED 3 /* PIN für die grüne LED */ #define SENSOR_PIN A0 /* PIN für den Bodenfeuchtesensor */ int sensorValue = 0; /* Variable für den Sensorwert */ void setup() { Serial.begin(9600); /* Begin der Seriellenkommunikation */ pinMode(BLUE_LED, OUTPUT); /* Setzt den PIN für die blaue LED als Ausgang. */ pinMode(RED_LED, OUTPUT); /* Setzt den PIN für die rote LED als Ausgang. */ pinMode(GREEN_LED, OUTPUT); /* Setzt den PIN für die grüne LED als Ausgang. */ } void loop() { sensorValue = getSensorValue(); reset(); if(sensorValue >= 0 && sensorValue <=300){ /* unterer Grenzwert (zu nass) */ analogWrite(RED_LED, 255); analogWrite(GREEN_LED, 255); analogWrite(BLUE_LED, 0); } else if(sensorValue >= 301 && sensorValue <=450){ /* Grenzwert i.O. (nicht zu nass und auch nicht zu trocken) */ analogWrite(GREEN_LED, 255); } else if(sensorValue >= 451){ /* oberer Grenzwert (zu trocken) */ analogWrite(RED_LED, 255); } delay(900000); /* Pause für 15min. */ } //Ließt den Wert des Bodenfeuchtesensors und gibt diesen zurück. int getSensorValue(){ return analogRead(SENSOR_PIN); } //Setzt die Farben der RGB LED zurück. void reset(){ analogWrite(RED_LED, 0); analogWrite(GREEN_LED, 0); analogWrite(BLUE_LED, 0); }
Download
Fazit
In einem Versuchsaufbau über 3 Tage habe ich die Bodenfeuchtigkeit in einer Pflanze gemessen.
Als Substrat wurde Kokoserde und Blumenerde verwendet.
Der erste Ausschlag im Diagramm ist der Zeitpunkt, wo ich die Pflanze initial gegossen habe.
Danach wurde kein Wasser hinzugefügt.
Wenn es einen Zerfall aufgrund der Spannung gibt, könnte man den Sensor nicht über einen digitalen Pin betreiben? Hast du das schon mal probiert? Reicht da der Strom aus?
Hallo Agre,
nein ich habe das bisher nicht probiert.
Gruß,
Stefan
Vielen Dank für die Rückmeldung. Ich probier das mal aus, wenn ich alle Teile beisammen habe. Dann könnte man den Sensor abschalten und die Lebensdauer erhöhen.
Beim Verwenden von dem digitalen Pin gibt es immer noch die gleiche Spannung bei der Messgabel.
Mit dem kleinen Rad kann ist Einzustellen ab welchem Schwellenwert (Analoger Wert) der Digitale Pin von ON auf OFF umschaltet.
Aber der Sensor arbeitet grundsätzlich immer auf die gleiche Weise, egal ob man den DO oder AO verwendet.
Eine Möglichkeit um den Verschleiß zu verbessern ist, die 3,3V Versorgungsspannung verwenden anstatt der maximalen 5V.
LG
Hi! Habe eine Frage: und zwar verstehe ich nicht ganz warum die Feuchtigkeit nicht deutlich weniger wird im Diagramm obwohl 3 Tage lang nicht gegossen wurde. Außerdem würde ich gerne wissen welcher Sensor das genau ist und warum die Entscheidung auf diesen gefallen ist?
LG
Natascha
Guten Tag Herr Draeger,
durch Suche nach einem Bauteil bin ich durch Zufall auf Ihre Seite gestoßen u fand als Arduino-Einsteiger viele Anregungen. Der logische Aufbau alle Seiten hat mir sehr gut gefallen.
Und nun zum Bodenfeuchte-Sensor.
Ein solche Projekt habe ich für den Früh-Sommer geplant.Nach früheren Recherchen habe ich immer wieder gelesen, daß sich die Bodensensoren mit der Zeitauf Widerstandsbasis leicht auflösen, bedingt durch Elektrolyse.
Ich fand dann: https://www.tindie.com/products/miceuz/i2c-soil-moisture-sensor/
auf kapazitiver Basis,was mir dann logischer erschine. Bei ebay für ca 10€ zu haben. Ich habs bezogen bei http://dvs-beregnung.de/ und auf Anfrage auch ein schönes sketch für Arduino bekommen.
Wäre sicher eine Überlegung wert
All the schematics and code is available at https://github.com/Miceuz/PlantWateringAlarm
Grüße von Udo Tillmann
0160 78 26 421
Hallo,
ich habe ein ähnliches Projekt und mir als Gehäuse für meine Steuerung ne Brotdose geholt….
Nun sehe ich gerade du hast exakt die selbe Dose bei einer Pflanzenüberwachung… LOL
Hallo, um die Lebensdauer der Sensoren zu erhöhen habe ich deren Versorgungsspannung nicht an +5 oder +3,3 Volt des Arduino gelegt, sondern an einen digital-out, der nur kurz zur Messung auf HIGH geschalten wird, nach der Messung ist dann wieder minutenlang auf LOW geschaltet.
Hi, das ist eine sehr gute Idee.
Gruß,
Stefan Draeger
also ich gebe nur wenig strom, und so läuft es bei mir.
analogWrite(strom, 130);
delay(500); //halbe sec warten
int fuhl = analogRead(fuhler);//dann auslesen
delay(20); //kurtz warten
analogWrite(strom, 0); // sensor aus ;-))
int IntTemp = fuhl;
if (IntTemp > 530 & var ==0) {