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