Automatvattning
Automatisk
vattning i ett växthus.
Styrsystem:
Arduino, jordfuktsensor, vattennivåsensor och
relä för pump.
Elsystem:
Solcell, laddregulator, batteri (12 volt, 7,2 Ah) och
spänningsregulator
Vattensystem:
Vattentunna
(200 liter), plaströr, slang, kopplingar och pump
Automatvattningen i korthet:
Jordfuktigheten
mäts av Arduinon med hjälp av jordfuktsensorn.
Sensorn
bildar tillsammans med ett motstånd en spänningsdelare så det som mäts är
motståndet i jorden.
Vattennivån i
tunnan mäts via vattennivåsensorn.
Vattennivåsensorn
är en sladd som är buntad på en sten som ligger i botten av vattentunnan
Även den
sensorn är en del i en spänningsdelare och det som mäts är motståndet mellan de
två kabelskorna
som
sitter i ändarna av sladden.
Om
jordfuktigheten är under gränsvärdet och vattennivån är över sitt gränsvärdet, skickar Arduinon en
signal till
reläet
som drar och pumpen går i gång.
Enkelt flödesschema:
Sketchen till Arduinon
(kopiera gärna och använd i dina egna project):
/*
Autowatering
This sketch
measures moisture in soil and puts a high level output when moisture is over
the threshold value.
*/
int pump1 = 2;
int enable = 5;
// the setup routine runs once when you press reset:
void setup() {
Serial.begin(9600);
pinMode(pump1,
OUTPUT);
pinMode(enable,
OUTPUT);
Serial.println ("Start");
Serial.println ();
}
void loop() {
int sensorValue0;
int sensorValue1;
// read the
input on analog pin A0 (waterlevel)
digitalWrite (enable, HIGH);
delay(200);
sensorValue0 =
analogRead(A0);
delay(200);
digitalWrite (enable, LOW);
// print out
the value you read:
Serial.print("Vattenniva: ");
Serial.println(sensorValue0);
delay(200);
// read the
input on analog pin A1 (soilmoisture)
digitalWrite (enable, HIGH);
delay(200);
sensorValue1 =
analogRead(A1);
delay(200);
digitalWrite (enable, LOW);
// print out
the value you read:
Serial.print("Jordfuktighet: ");
Serial.println(sensorValue1);
//If Values are over and
under these values, turn on the pump
if (sensorValue1 > 400 && sensorValue0 < 900)
{
digitalWrite (pump1, HIGH);
Serial.println("Pumpen ar pa");
delay(300000);
//Pumping for 5 minutes
}
digitalWrite (pump1, LOW);
Serial.println("Pumpen ar av");
// Delay for 12 hours
Serial.println ();
delay(8640000);
Serial.print("*");
delay(8640000);
Serial.print("*");
delay(8640000);
Serial.print("*");
delay(8640000);
Serial.print("*");
delay(8640000);
Serial.println("*");
Serial.println();
}
/*
Motståndsvärdet ska läsas på ingångarna A0 och A1.
A0 för att kontrollera om det finns vatten i
tunnan.
A1 för att kontrollera jordfuktiheten.
*/
Ulf
Berlin
uffe@famber.se