De Programmeerbare Plantenkas: Crowtail Capacitive Moisture V2.0 Sensor Aansluiten En Programmeren Om De Vochtigheid Van De Grond Te Meten

DE PROGRAMMEERBARE PLANTENKAS //  CROWTAIL CAPACITIVE MOISTURE V2.0 SENSOR AANSLUITEN EN PROGRAMMEREN OM DE VOCHTIGHEID VAN DE GROND TE METEN

De Programmeerbare Plantenkas: Crowtail Capacitive Moisture V2.0 Sensor Aansluiten En Programmeren Om De Vochtigheid Van De Grond Te Meten

In deze tutorial laten we zien hoe je een Crowtail Capacitive Moisture V2.0 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 de Crowtail Capacitive Moisture V2.0 Sensor is zeer eenvoudig. Je stopt de ene kant van de bijgeleverde kabel in de connector van de sensor en de andere kant in een analoge poort van een Grove base shield of Crowtail base shield.

Crowtail Capacitive Moisture V2.0 Sensor
Het aansluiten van de Crowtail Capacitive Moisture V2.0 Sensor is zeer eenvoudig, je steekt simpelweg de kabel in de sensor en in een Crowtail of Grove base shield.

Wanneer je de Crowtail Capacitive Moisture V2.0 Sensor in de grond steekt, dan is het belangrijk om de sensor niet dieper dan de witte lijn in de grond te steken. Ook is het belangrijk om te onthouden dat de onderdelen van de sensor niet beschermd zijn. Hierdoor is de bovenkant van de sensor niet geschikt om in een vochtige omgeving te gebruiken. Om de sensor langdurig te kunnen gebruiken, moet je de bovenkant van de sensor dus eigenlijk beschermen met een epoxy laagje of met bijvoorbeeld een grote krimpkous.

Programmeren

Het programmeren van de Crowtail Capacitive Moisture V2.0 Sensor is vrij eenvoudig, omdat het een analoge sensor is. In de voorbereidingsfase vertellen we het programma eerst op welke analoge poort de sensor staat aangesloten. Dit doen we door het commando #define vochtSensorPin A1 te geven. Uiteraard zou je de poort verderop ook direct kunnen invullen bij het deel waar je de sensor uitleest, maar op deze manier hoef je niet te zoeken waar je de poort kunt wijzigen als je de sensor anders aansluit.

Verder geven we in de voorbereiding de commando’s int vochtWaarde = 0; en int vochtPercentage = 0; om de variabelen aan te maken waarin we de rauwe waarde die uit de sensor komt in op te slaan en om het berekende vochtpercentage van de bodem in op te slaan.

Als laatste geven we aan welke minimale en maximale waarde we verwachten te meten als de grond zeer droog en zeer nat is. Dit doen we met de commando’s #define nat 320 en #define droog 340. We hebben deze waardes gekregen door de calibratie zoals op de pagina De Programmeerbare Plantenkas: Grove Capacitive Moisture Sensor Aansluiten En Programmeren Om De Vochtigheid Van De Grond Te Meten” beschreven staat uit te voeren. Volgens de fabrikant zou de sensor in de lucht een waarde van 600 en in puur water een waarde van 360 moeten aangeven. Onze waardes liggen hier ver vanaf, wellicht omdat de sensor zeer gevoelig is voor de grond waarin de sensor zit, of omdat de sensor naar onze ervaring zeer onstabiel werkt.

Crowtail Capacitive Moisture V2.0 Sensor
In zeer droge grond gaf onze sensor gemiddeld een waarde van 340 aan.
Crowtail Capacitive Moisture V2.0 Sensor
In zeer natte grond gaf onze sensor gemiddeld een waarde van 320 aan.

Om deze code makkelijk met andere stukjes code te combineren, hebben we het stuk van de code die de rauwe waarde uit de sensor ophaalt en de code die dit vervolgens omzet in een percentage in een aparte functie gezet. Deze functie beginnen we door het commando int vochtSensor() {} te geven. In deze functie geven we twee commando's. De eerste is vochtWaarde = analogRead(vochtSensorPin);. Dit commando haalt de rauwe waarde uit de sensor op. De tweede is vochtPercentage = map(vochtWaarde, droog, nat, 0, 100);. Dit commando zet de rauwe waarde vervolgens om in een percentage, op basis van de minimale en maximale waarde die we in de voorbereiding hebben ingevoerd. De zelf gemaakte functie activeren we in de loop-fase van het programma. Dit doen we met het commando vochtSensor();.

Zoals altijd in onze tutorials is deze code nog erg minimalistisch, en wordt er niets gedaan met de waarde die uit de sensor wordt gehaald. Je kunt er bijvoorbeeld voor kiezen om deze waarde op de Serial Monitor te laten zien of om een rood lichtje af te laten gaan als de vochtigheid van de grond onder een bepaald percentage komt. Omdat deze sensor zo onstabiel lijkt te zijn, kun je de metingen ook proberen te verbeteren door bijvoorbeeld een gemiddelde van 10 metingen te nemen in plaats van een enkele meting om weer te geven of om beslissingen in de rest van het programma op te baseren.

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 Crowtail Capacitive Moisture V2.0 Sensor
   na kalibratie.

   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 A1  // Dit geeft aan op welke analoge input de sensor is aangesloten, in dit geval A1.
int vochtWaarde = 0; // Een variable om de waarde van de vochtigheid van de bodem in op te slaan.
int vochtPercentage = 0; // Een variable om de vochtigheid van de bodem als een percentage in op te slaan.
#define nat 320 // Dit is de waarde die de sensor aangaf in een met water verzandigd grond mengsel.
#define droog 340 // Dit is de waarde die de sensor aangaf in zeer droge grond.

// 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.
}

//Functie voor vochtsensor:
int vochtSensor() {
  vochtWaarde = analogRead(vochtSensorPin); // Lees de analoge pin waarop de vochtsensor zit aangesloten uit.
  vochtPercentage = map(vochtWaarde, droog, nat, 0, 100); // Zet de vochtigheid om in een percentage.
}

Achtergrond

De Crowtail Capacitive Moisture V2.0 Sensor werkt op een vergelijkbare manier als de Grove Capacitive Moisture Sensor. Een 555 timer zet de spanning naar de twee condensator plaatjes in het deel van de sensor dat je in de grond steekt voor een vaste tijd aan. De rest van de sensor meet wat het maximale potentiaal verschil tussen de twee condensator plaatjes is op het moment dat de sensor aan gaat. Hoe natter de grond is, hoe hoger de capaciteit van de sensor, en hoe minder volt er gemeten wordt.

Crowtail capacitive sensor
Net als bij veel andere capacitieve vochtsensoren, werkt ook de Crowtail Capacitive Moisture V2.0 Sensor met een 555 timer.

Het circuit van de Crowtail Capacitive Moisture V2.0 Sensor begint bij de 662K spanningsregelaar die ervoor zorgt dat de spanning die naar de ICM755ID timer loopt altijd tussen de 3,0 en 3,3 volt ligt, ongeacht of de microcontroller werkt met 3,3 of 5 volt. De ICM755ID timer zorgt er samen met de 2,2K-ohm weerstand, de 470 ohm weerstand en de 470 pF condensator ervoor dat er een wisselspanning met een frequentie van 978 kHz naar het positieve plaatje van de condensator sensor gaat. Het maximaal bereikte potentiaalverschil dat de condensator plaatjes bereiken wanneer de spanning aangezet wordt bepaald welke waarde er naar de microcontroller wordt gestuurd. Hierbij geldt dat hoe natter de grond is, hoe hoger het capaciteit van de grond tussen de condensator plaatjes, en daardoor hoe lager het maximaal bereikte potentiaal verschil zal zijn.

Crowtail Capacitive Moisture Sensor
Ondanks dat de Crowtail Capacitive Moisture V2.0 Sensor op papier goed zou moeten werken, zijn de metingen met de sensor heel ontstabiel.

In het artikel “De Programmeerbare Plantenkas: Grove Capacitive Moisture Sensor Aansluiten En Programmeren Om De Vochtigheid Van De Grond Te Meten” gaan we nog niets dieper in op hoe het meten van capaciteit op basis van een 555 timer werkt. Het enige verschil tussen de Grove sensor en deze Crowtail sensor is dat de Crowtail wel een 1M-ohm weerstand bevat die ervoor zorgt dat de condensator plaatjes kunnen ontladen. Ondanks dat het design van de Crowtail Capacitive Moisture V2.0 Sensor daardoor op papier beter is dan die van de vergelijkbare Grove sensor, lijkt de Crowtail sensor alles behalve stabiel te presteren.

Crowtail capacitive moisture sensor
Zelfs na een aantal uur in dezelfde grond, bij een constante temperatuur, te hebben gezeten, schieten de waardes van de Crowtail Capacitive Moisture V2.0 Sensor nog steeds van hoog naar laag.

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.