DE PROGRAMMEERBARE PLANTENKAS // GROVE MOISTURE SENSOR AANSLUITEN EN PROGRAMMEREN OM DE VOCHTIGHEID VAN DE GROND TE METEN
In deze tutorial laten we zien hoe je een Grove Moisture Sensor aansluit en programmeert om de vochtigheid van grond te meten met een Arduino microcontroller of een andere microcontroller. Onderaan de pagina vindt je meer informatie over de techniek achter deze sensor.
Aansluiten
Het aansluiten van een Grove Moisture Sensor op een microcontroller is heel eenvoudig. Je steekt simpelweg de ene kant van de bijgeleverde Grove kabel in de sensor en de andere kant in een analoge poort van een Grove Base Shield die aangesloten is op een Arduino microcontroller. In dit voorbeeld is de sensor aangesloten op de A0 poort van een Arduino Mega, met Grove Base Shield.
Het deel van de Grove Moisture Sensor dat de vochtigheid van de grond bepaald is ongeveer 3,5 centimeter lang. Om de sensor te plaatsen dus je de twee beentjes van de sensor voorzichtig in de grond, zodat het goudkleurige deel niet meer zichtbaar is, maar de weerstanden en andere onderdelen op het blauwe gedeelte van de sensor wel boven de grond uitsteken. Mocht het zo zijn dat de grond erg hard is, bijvoorbeeld omdat er veel klei in zit, dan is het aan te raden om eerst met een mes een kleine opening in de grond te maken. Op die manier hoef je niet te veel druk op de sensor te zetten als je hem in de grond duwt.
Doordat het deel van de sensor dat de vochtigheid van de grond meet maar 3,5 centimeter hoog is, is deze sensor alleen geschikt om te bepalen of jonge plantjes water nodig hebben. Het deel van het wortelstelsel dat water en voedingsstoffen uit de bodem op neemt ligt bij oudere, grotere planten meestal op een diepte van 20 tot 40 centimeter. Doordat de bovenste grondlaag vaak veel sneller opdroogt dan de diepere grondlaag waarin de meeste wortels van grotere planten groeien is de kans groot dat deze Grove Moisture Sensor te snel aangeeft dat de grond te droog is. Om te voorkomen dat grotere planten te veel water krijgen is het daarom aan te raden om deze sensor niet te gebruiken, maar een sensor te gebruiken waarbij het meetgedeelte dieper ligt.
Programmeren
Het programmeren van een Grove Moisture Sensor is gelukkig zeer eenvoudig. In de voorbereidingsfase geef je allereerst aan op welke analoge pin de sensor zit aangesloten. Dit doe je met het
commando #define vochtSensorPin A0
In dit voorbeeld is de sensor aangesloten op de A0 pin. Mocht de sensor in jouw project op een andere pin aangesloten zitten, dan moet je uiteraard
de 0 veranderen in het juiste nummer.
In de voorbereidingsfase wordt ook een variabele aangemaakt om de waarde die uit de sensor komt op te slaan. Dit doen we met het commando int vochtWaarde = 0;
. Zoals je kunt zien
wordt dit een int variabele. Dit is, omdat de vochtigheid in hele cijfers wordt weergegeven.
Om ervoor te zorgen dat het kleine stukje code dat nodig is om de Grove Moisture Sensor te gebruiken makkelijk te combineren is met andere sensors, hebben we een aparte functie gemaakt om de
waarde uit de sensor op te halen. We maken deze functie aan met het commando int vochtSensor() {}
. In dit voorbeeld heet deze functie dus vochtSensor. Tussen de {}-haakjes zetten we
het commando vochtWaarde = analogRead(vochtSensorPin);
. Dit commando zorgt ervoor dat de analoge pin waarop de sensor is aangesloten uitgelezen wordt en dat de waarde opgeslagen
wordt in de variabele vochtWaarde.
In de loop fase van dit programma geven we het commando vochtSensor();
om de functie die we gemaakt hebben om de Grove Soil Moisture sensor uit te lezen te activeren. Op dit moment
doen we nog niets met de waarde die hieruit komt. Er zijn verschillende manieren om de waarde van de sensor te gebruiken. Zo kun je een groen lampje laten branden als de plant geen water nodig
heeft en een rood lampje als de plant wel water nodig heeft.
Volgens Seeedstudio, de makers van Grove sensoren, zal de sensor een waarde van 300 aan geven als de grond vochtig is. Als de waarde onder de 300 ligt, dan is de grond droog en als de waarde
boven de 300 ligt, dan is de grond te nat. De exacte waarde waarbij de grond te nat en te droog is, verschilt per grondsoort, dus de juiste waardes vinden vergt altijd een beetje
trial-and-error. De meest eenvoudige manier om erachter te komen wat de waardes die uit de sensor komen betekenen, is door de sensor te kalibreren. Dit kun je doen op de manier die op de
"De Programmeerbare Plantenkas: Grove
Capacitive Moisture Sensor Aansluiten En Programmeren Om De Vochtigheid Van De Grond Te Meten" beschreven staat. Voor deze Grove weerstand sensor kun je de wachttijd die in het
artikel de capacitieve sensor wordt aangeraden helemaal achterwege laten of inkorten naar een paar minuten. De extreme waardes kun je vervolgens gebruiken om een vochtigheidspercentage te
berekenen met het commando vochtPercentage = map([gemeten waarde], [droge waarde], [natte waarde], 0, 100);
, zoals ook in het artikel over de capaciteit sensor beschreven staat.
ARDUINO IDE CODE
/* Voorbeeld code gemaakt door www.foodplanting.com voor de Programmeerbare Plantenkas serie. Deze code is gemaakt voor het bepalen van de vochtigheid van de bodem met een Grove Moisture Sensor. Deze code is zeer minimalistisch, omdat het idee is dat deze code gecombineerd wordt met codes voor andere modules. Zo wordt de vochtigheid bijvoorbeeld niet in de loop fase, maar in een aparte functie op geroepen en wordt de gemeten vochtigheid niet in de Serial Monitor af geprint. */ // Voorbereiding: #define vochtSensorPin A0 // Dit geeft aan op welke analoge input de sensor is aangesloten, in dit geval A0. int vochtWaarde = 0; // Een variable om de waarde van de vochtigheid van de bodem in op te slaan. // Setup fase: void setup() { // In de setup fase hoeft niets te gebeuren } // Loop fase: void loop() { vochtSensor(); // Vraag de microcontroller om de functie die de vochtigheid uit de sensor ophaalt uit te voeren. delay(60000); } //Functie voor vochtsensor: int vochtSensor() { vochtWaarde = analogRead(vochtSensorPin * 0.0049)); // Lees de analoge pin waarop de vochtsensor zit aangesloten uit en vermenigvuldig met 0.0049 om het aantal volts te krijgen. }
Achtergrond
Een weerstand bodemvochtigheidssensor meet eigenlijk hoe goed de grond stroom geleid. Deze sensoren bestaan uit twee metalen “beentjes”. Deze beentjes zijn de elektroden. De ene elektrode zit vast aan de VCC-aansluiting van de microcontroller en werkt als de positieve elektrode. De elektronen stromen naar deze elektrode toe. De andere elektrode zit vast aan de GND-aansluiting van de microcontroller en werkt als de negatieve elektrode. De elektronen stromen van deze elektrode af.
De twee elektroden van een weerstand bodemvochtigheidssensor zijn niet met elkaar verbonden. De grond waarin je de sensor steekt werkt als de verbinding tussen de twee elektrode, en maakt het elektrische circuit dus compleet.
Het idee achter een weerstand bodemvochtigheidssensor is dat de grond een goede stroomgeleider is als deze nat is, en een slechte stroomgeleider als deze droog is. Dat natte grond stroom geleid komt niet door het water dat in de grond zit, maar door de zouten die in de grond aanwezig zijn. Wanneer zouten in contact komen met water, dan vallen ze uiteen in positief en negatief geladen ionen
Wanneer er spanning op de sensor wordt gezet dan komen de ionen die in het gebied rondom de twee elektroden zitten in beweging. De negatief geladen ionen trekken naar de positief geladen elektrode. Hier kunnen ze hun extra elektronen afstaan, waardoor ze een neutrale lading krijgen. De positieve ionen trekken naar de negatief geladen elektrode. Hier kunnen deze ionen elektronen op nemen, waardoor ook deze elektronen geneutraliseerd worden.
De positief en negatief geladen ionen zorgen er voor dat er dus een elektronen stroom plaats kan vinden tussen de twee elektroden. De analoge poort van de microcontroller registreert hoeveel van de 5 volt die de weerstand bodemvochtigheidssensor in is gestuurd via de grond weer terug stroomt. Hoe droger de grond is, en dus hoe minder zouten opgelost zijn tot ionen, hoe lager het aantal volt is dat terug stroomt.
Eigenlijk ontstaat er een elektrolytische cel wanneer de weerstand bodemvochtigheidssensor in vochtige grond wordt gestopt. Wanneer de sensor is gemaakt van een edelmetaal, zoals goud, dan levert dit weinig problemen op. Weerstand bodemvochtigheidssensoren die gemaakt zijn van andere metalen, zoals koper of ijzer, dan zorgt dit vaak wel voor problemen. Het metaal van de positieve elektrode zal langzaam aan in de grond oplossen. Dit komt, omdat de metaalmoleculen in de positieve elektrode hun elektronen afstaan aan het elektrische circuit. Wanneer de metaalmoleculen hun elektronen afstaan veranderen ze in positief geladen ionen en lossen ze op in het water dat in de grond zit. Dit zorgt er niet alleen voor dat weerstand bodemvochtigheidssensoren die gemaakt zijn van een onedel metaal snel onbruikbaar zijn, maar ook dat er op één plek veel metaal ionen in de grond komen.
Een ander nadeel van weerstand bodemvochtigheidssensoren is dat de werking hiervan afhangt van het aantal ionen dat zich in de bodem bevind. Wanneer je plantenvoeding aan de bodem toevoegt, dan komen er meer ionen in de grond terecht en zal de sensor sneller aangeven dat de grond vochtig is. Dit komt, omdat het toevoegen van plantenvoeding de geleidbaarheid verhoogd, omdat het dus rijk is aan zouten die bij contact met water oplossen tot ionen.
Vragen en opmerkingen
We proberen de serie DE PROGRAMMEERBARE PLANTENKAS zo toegankelijk mogelijk te maken voor iedereen. Toch zijn sommige concepten best wel ingewikkeld, omdat er kennis van heel veel verschillende domeinen, zoals natuurkunde, elektrotechniek en computerwetenschappen, samen komen. Het kan daarom best zijn dat we iets niet goed uitgelegd hebben. Mocht er iets niet duidelijk zijn of iets niet zo werken zoals we het in deze tutorial uitgelegd hebben, stuur dan gerust een berichtje via de Disqus op deze pagina. Je kunt de Disqus vinden door naar beneden te scrollen, tot onder de advertenties.