Arduino för växthusgaser, trädgården eller Growbox / uppdaterad April 2016 (19 / 24 steg)
Steg 19: Alternativa jord resistansmätning
Några tech grejer om markens fuktighet
När du använder en mätning som den här, mäter du motstånd eller konduktivitet, beroende på hur du vill titta på den.
Konduktivitet är egentligen inte det bästa sättet att mäta fuktighet i marken som själva vattnet inte är egentligen en bra ledare, vad du faktiskt mäter är mängden lösta joner i din växt-säng. En inte så fuktig jord med massor av joner kan ge dig en högre läsning för konduktivitet än en våt jord med mindre joner.
Mäta din joner naturligtvis är en bra sak också som det ger information om huruvida din jord är slut och om kanske det är dags att lägga till gödsel.
Kapacitiv måttagningen
Om du vill ha en mer tillförlitlig mätning av fuktigheten av din jord, då en kapacitiv mätning är mer tillförlitlig: vatten påverkar dielectricen av en kondensator mycket mer än joner gör.
En kondensator i din jord låter som att ha två metallplattor i din jord där marken mellan dem är dielectricen. Det är förvisso möjligt, men det är också möjligt att ha pläterar av kondensatorn bredvid varandra istället för mot varandra. Som öppnar vägen till etch dem på en bit av PCB. Uppenbarligen plattorna är isolerade från marken, annars du vill bara mätning av ledningsförmåga/resistans igen. Som har den extra fördelen att ingen jord korrosion.
Så när du har som ställer in, det finns två sätt att mäta: du kan bara mäta kapaciteten hos din diy jord kondensator, som arduino är fullt kapabel att göra detta. Problemet är dock om du har en kabel som går från att sensorn till din arduino, som är i själva verket en herrelös kapacitet som man mäter också. Hur din kabel är loopas kan påverka din läsning samt någon närmar sig din kabel. Använda coax hjälper, men det är fortfarande bäst att göra mätningen nära din diy kondensator.
Ett annat sätt är att använda denna kondensator i en krets vars utsignal är beroende på värdet av din kondensator, som en kondensator kontrollerade oscillator. Detta kan göras med en Schmitt-trigger som visas i bilden ovan.
Frekvensen av denna oscillator är:
f=1.2/(RxC)
En föränderlig mängd vatten i marken påverkar dielectricen av kondensatorn och därför värdet av kondensatorn och thus frekvensen kommer från oscillatorn. Denna frekvens kan mätas med arduino med frekvens mäter bibliotek för Arduino.
Värdet på motståndet beror på din situation. Välj ett som ger ett bra utbud av din frekvens. Arduino biblioteket stöder frequncies till 8MHz.
Om din kondensator är 10nF och din resistor 100kOhm, skulle vara 1200 Hz. Hittar du en kalkylator här.
Filen FreqCounter.cpp är hårdkodad för digital stift 5 som indata och använder båda timer avbryter T1 och T2
Om du väljer att använda capacative mätning av fuktighet, istället för att använda olika frekvens counter bibliotek, kan du också använda "PulseIn". Ett exempel funktion av hur man gör som återfinns nedan. Jag gjorde också en full instructable på en I2C läsbar kapacitiv sensor.
Motstånd mäta
Mätning av motstånd är ett av de enklaste metoderna. Jag tidigare redan diskuteras bara sticker två spön i marken och mäta ADC värdet på analog port. Dock när du är klar med DC, kommer att stavar försämras snabbt på grund av elektrolys. Ett sätt att förhindra detta är att använda AC nuvarande. Presenterade krets med "555" ger som eller åtminstone härmar det. Utsignalen är en frekvens som beror på motståndet av sensorn.
Den + ineffekt kan vara så låg som 3.5 volt och så hög som 15 volt, så den 5 Volt av Arduino är perfekt. CMOS LMC555 timern fungerar i dess direkt feedback läge, med en fyrkantsvåg utgång från pin 3 laddning eller urladdning 0,1 µf film kondensator via de fasta motstånd i serie/parallell med de ledande fjärranalys sonderna.
2.2 uf opolära kondensatorer i serie med sonderna försäkra att även de låga nivå läckströmmar från CMOS-chip inte flöda genom sonderna. Kondensatorer, en på varje sida av sonder, försäkra att denna krets är galvaniskt isolerade från andra sensorer som kan finnas i samma vattenlösning miljö.
R1 och R2 begränsa intervallet vid kortslutning eller torr extremt jord. R2 har också en annan funktion, som det urladdar någon liten DC bygga upp över kondensatorer i serie med sond som skulle kunna göra oscillatorn stoppa.
Output frekvens överförs från öppen kollektor DIS utgångsstiftet på 555. Denna pin är synkroniserad med produktionen och kommer att producera en fyrkantsvåg vars frekvens/pulsewidth kan mätas med Arduino (t.ex. genom en timer avbryta eller genom "PulseIn"). R3 är nödvändig eftersom den DIS (urladdning) pin av 555 är en öppen kollektor.
Som den nuvarande dras av 555 timer kretsen varierar linjärt i förhållande till frekvensen av svängningen på grund av laddning och urladdning cykler av timing kondensatorn, kan nuvarande utbudet användas som en analog signal, för att skicka till en analog till digital omvandlare. En 1 k resistor kan därför sättas i en av tillförselen fodrar (vanligtvis Grnd) nuvarande utvecklar en spänning över 1kohm motståndet, ge en spänning signal om önskas.
Bilden ovan visar en funktion att mäta frekvensen (i själva verket pulsewidth). Programmet nedan gör samma.
Jag använder värdet för 500 000 USA i stället för 1 000 000 oss (= 1 sekund) för avdelningen, eftersom jag vill få signal period (T), inte puls length(tpulse). Med 50%, T = 2 * tpulse. Men om du är intresserad av den sanna frekvensen, det spelar egentligen ingen roll för att bestämma markfuktighet
int pin = 7.
osignerade långa varaktighet;
void setup()
{
pinMode (pin, mata);
Serial.BEGIN(115200);
}
void loop()
{
längd = pulseIn (pin, hög);
Serial.Print ("tid");
Serial.Print(duration);
Serial.Print ("usec");
Serial.Print(500/duration);
Serial.Print ("kHz");
Serial.Print(500000/duration);
Serial.println ("Hz");
Delay(500);
}
Ovanstående program är naturligtvis bara ett bevis på konceptet/test program: vi är inte intresserade i särskilda frekvenser men i skillnader i frekvenser/perioder. Du måste bestämma för din jord vad rätt timing/frekvensen är att behöver vatten eller inte och införliva det i programmet på samma sätt som tidigare du skulle ha gjort så fr spänningsavdelaren sond på en analog port. Det är fortfarande möjligt att använda potmeter på A1 för att fastställa en nivå, t.ex. genom att mappa det din frekvensområdet, eller med något om eller Case-satser.
Att ge ett intryck, när jag testade den i mitt system (sonder med ca 6 cm avstånd, i så kallade "Mel's Mix") en något fuktig behandling var 3kHz, medan en våt jord gav 10kHz