Skip to Content
SensörlerToprak Nemi ve Su Seviye Sensörü

Toprak Nemi ve Su Seviye Sensörü

Bitki sulama, sera otomasyonu, su deposu takibi ve yağmur algılama projelerinin temel sensörleridir. Ucuzdurlar ve kurulumları basittir — ancak dirençli tiplerinde çok yaygın bir sorun vardır: korozyon. Bu yazının en önemli konusu odur.

Toprak Nemi Sensörü — İki Farklı Tip

Piyasada iki farklı teknoloji satılır ve aralarındaki fark ömür açısından belirleyicidir.

Dirençli (resistive) sensör — YL-69 / FC-28

İki metal çatal şeklindedir. Toprağa batırılır ve iki çatal arasındaki elektriksel direnç ölçülür.

  • Toprak ıslakken iletkenlik artar → direnç düşer
  • Toprak kuruyken direnç yükselir

Sorun: Sensöre sürekli DC gerilim uygulandığı için çatallar arasında elektroliz olur. Metal iyonları bir uçtan çözünüp diğerine gider; anot ucu birkaç hafta içinde aşınır, korozyona uğrar ve okumalar bozulur.

Ucuz kaplama kullanılan modellerde bu süre birkaç güne inebilir. Ayrıca çözünen metal toprağa karışır.

Kapasitif (capacitive) sensör

Metal uçları yoktur; algılayıcı tamamen kaplamalı bir yüzeydir. Toprağın dielektrik sabitini ölçer.

  • Suyun dielektrik sabiti çok yüksektir, kuru toprağınki düşüktür
  • Kapasitedeki değişim gerilime çevrilerek okunur

Avantajı: Toprakla elektriksel temas yoktur, bu yüzden korozyon olmaz. Ömrü kat kat uzundur.

Dirençli (YL-69)Kapasitif
KorozyonVar, ciddiYok
ÖmürHaftalarYıllar
FiyatÇok ucuzBiraz daha pahalı
Tuzluluktan etkilenmeYüksekDüşük
KararlılıkDüşükYüksek

Kalıcı bir kurulum yapacaksanız kapasitif sensör alın. Dirençli sensör yalnızca kısa süreli deneyler ve öğrenme için uygundur.

Dirençli Sensörde Korozyonu Azaltma

Elinizde dirençli sensör varsa ömrünü ciddi şekilde uzatabilirsiniz. Yöntem: sensöre sürekli enerji vermemek.

Sensörün VCC pinini doğrudan 5V’a değil, bir Arduino dijital pinine bağlayın. Yalnızca ölçüm anında enerji verin:

const int SENSOR_GUC_PIN = 7; // sensorun VCC'si buraya const int SENSOR_OKU_PIN = A0; void setup() { Serial.begin(9600); pinMode(SENSOR_GUC_PIN, OUTPUT); digitalWrite(SENSOR_GUC_PIN, LOW); // normalde kapali } int nemOku() { digitalWrite(SENSOR_GUC_PIN, HIGH); delay(200); // sensorun kararlanmasini bekle long toplam = 0; for (int i = 0; i < 10; i++) { toplam += analogRead(SENSOR_OKU_PIN); delay(10); } digitalWrite(SENSOR_GUC_PIN, LOW); // hemen enerjiyi kes return toplam / 10; } void loop() { Serial.println(nemOku()); delay(60000); // dakikada bir olc }

Sensör 24 saatte toplam birkaç saniye enerjili kalır. Bu, korozyonu yüzlerce kat yavaşlatır.

Ayrıca ölçüm sıklığını düşürün — toprak nemi saniyede bir değişmez, dakikada hatta 15 dakikada bir okumak fazlasıyla yeterlidir.

Bağlantı

PinAçıklama
VCC3,3 – 5 V (veya bir dijital pin)
GNDToprak
AOAnalog çıkış — nem seviyesi
DODijital çıkış — potansiyometre eşiği

Ölçüm için AO kullanın. DO yalnızca “eşiği geçti mi” bilgisi verir.

Kalibrasyon

Sensörün okuduğu ham değer toprak tipine, sıcaklığa ve gübre/tuz oranına göre değişir. Bu yüzden mutlaka kalibre etmelisiniz.

  1. Sensörü tamamen kuru havada tutun → bu değer KURU
  2. Sensörü bir bardak suya (algılama bölgesine kadar) batırın → bu değer ISLAK
  3. Bu iki değeri map() ile %0–%100 aralığına ölçekleyin
const int SENSOR_PIN = A0; // Kendi olcumunuzle degistirin const int KURU = 620; // havada okunan deger const int ISLAK = 280; // suda okunan deger int nemYuzdesi() { int ham = analogRead(SENSOR_PIN); int yuzde = map(ham, KURU, ISLAK, 0, 100); return constrain(yuzde, 0, 100); } void setup() { Serial.begin(9600); } void loop() { Serial.print("Toprak nemi: %"); Serial.println(nemYuzdesi()); delay(2000); }

Dikkat: dirençli sensörde kuru değer yüksek, ıslak değer düşüktür; kapasitif sensörde de genelde aynı yöndedir ama modele göre ters olabilir. map() içindeki sıralamayı kendi ölçümünüze göre yazın.

Otomatik Sulama Sistemi

Nem eşiğin altına düştüğünde röle üzerinden pompayı çalıştıran örnek. Histerezis ve maksimum sulama süresi ile birlikte:

const int SENSOR_GUC_PIN = 7; const int SENSOR_PIN = A0; const int POMPA_PIN = 8; const int KURU = 620; const int ISLAK = 280; const int SULAMA_BASLA = 30; // %30'un altinda sula const int SULAMA_DUR = 60; // %60'a ulasinca dur const unsigned long MAKS_SULAMA = 20000; // en fazla 20 saniye const unsigned long BEKLEME_SURESI = 600000; // sulamalar arasi 10 dk bool sulamaAktif = false; unsigned long sulamaBaslangic = 0; unsigned long sonSulamaBitis = 0; int nemYuzdesi() { digitalWrite(SENSOR_GUC_PIN, HIGH); delay(200); long toplam = 0; for (int i = 0; i < 10; i++) { toplam += analogRead(SENSOR_PIN); delay(10); } digitalWrite(SENSOR_GUC_PIN, LOW); int yuzde = map(toplam / 10, KURU, ISLAK, 0, 100); return constrain(yuzde, 0, 100); } void setup() { Serial.begin(9600); pinMode(SENSOR_GUC_PIN, OUTPUT); pinMode(POMPA_PIN, OUTPUT); digitalWrite(SENSOR_GUC_PIN, LOW); digitalWrite(POMPA_PIN, LOW); } void loop() { int nem = nemYuzdesi(); Serial.print("Nem: %"); Serial.println(nem); if (!sulamaAktif) { bool beklemeBitti = (millis() - sonSulamaBitis) > BEKLEME_SURESI; if (nem < SULAMA_BASLA && beklemeBitti) { sulamaAktif = true; sulamaBaslangic = millis(); digitalWrite(POMPA_PIN, HIGH); Serial.println("Sulama basladi"); } } else { bool hedefeUlasti = nem >= SULAMA_DUR; bool sureDoldu = (millis() - sulamaBaslangic) > MAKS_SULAMA; if (hedefeUlasti || sureDoldu) { sulamaAktif = false; sonSulamaBitis = millis(); digitalWrite(POMPA_PIN, LOW); Serial.println(sureDoldu ? "Sulama durdu (sure limiti)" : "Sulama durdu (hedef nem)"); } } delay(5000); }

Bu koddaki üç güvenlik önlemi

Histerezis (%30 başla, %60 dur). Tek eşik kullanılsaydı pompa sürekli açılıp kapanırdı.

Maksimum sulama süresi. Sensör bozulur veya toprakta kalmazsa pompa sonsuza kadar çalışır ve ortalığı su basar. 20 saniyelik sert sınır bunu engeller.

Sulamalar arası bekleme. Su toprağa yayılıp sensöre ulaşana kadar zaman geçer. Bekleme olmasaydı sistem aynı sulamayı defalarca tekrarlardı.

Pompayı Arduino pininden doğrudan süremezsiniz. Röle veya MOSFET kullanın, pompa beslemesini ayırın ve motora ters paralel flyback diyot ekleyin.

Su Seviye Sensörü

Üzerinde paralel iletken şeritler bulunan küçük bir karttır. Suya batan şerit sayısı arttıkça direnç düşer ve analog çıkış yükselir.

PinAçıklama
S / AOAnalog çıkış
+VCC (3,3 – 5 V)
GND
const int SU_PIN = A0; const int GUC_PIN = 7; int suSeviyesi() { digitalWrite(GUC_PIN, HIGH); delay(100); int deger = analogRead(SU_PIN); digitalWrite(GUC_PIN, LOW); return deger; } void loop() { int deger = suSeviyesi(); if (deger < 100) Serial.println("Su yok"); else if (deger < 350) Serial.println("Dusuk seviye"); else if (deger < 600) Serial.println("Orta seviye"); else Serial.println("Yuksek seviye"); delay(1000); }

Sınırları: Bu sensör de dirençli çalışır, yani aynı korozyon sorununa sahiptir. Sürekli su içinde bırakılmamalıdır. Ayrıca yalnızca kaba bir seviye verir; hassas ölçüm için su geçirmez ultrasonik sensör (JSN-SR04T) veya şamandıralı switch daha uygundur.

Kritik bir uygulamada (taşma koruması) şamandıralı switch kullanın — mekaniktir, elektronik arızaya bağlı değildir ve on yıllarca çalışır.

Yağmur Sensörü

Su seviye sensörüyle aynı prensipte çalışır ama geniş, kıvrımlı bir plaka kullanır. Plaka üzerine düşen yağmur damlaları iletken bir köprü oluşturur.

  • DO: Yağmur var/yok
  • AO: Yağmur şiddeti (ıslanma oranı)

Kullanım örnekleri: otomatik çamaşır toplama uyarısı, sera penceresi kapatma, akıllı sulama sisteminde “yağmur yağıyorsa sulama”.

Aynı korozyon uyarısı geçerlidir; plakayı sürekli enerjili tutmayın ve kullanılmadığı zamanlarda mümkünse kuru tutun.

Toprak Nemi Ölçümünde Doğruluk Sınırları

Bu sensörler hacimsel su içeriğini (VWC) kalibre şekilde ölçmez. Verdikleri değer:

  • Toprağın tuzluluğundan etkilenir (gübre eklendiğinde okuma değişir)
  • Sıcaklıktan etkilenir
  • Toprağın sıkışıklığından ve sensörle temas kalitesinden etkilenir
  • Sensörün gömülü olduğu derinliğe göre değişir

Bu yüzden “%45 nem” gibi bir sayıyı mutlak gerçek olarak değil, kendi kurulumunuza özel göreceli bir gösterge olarak okuyun. Aynı saksıda tutarlı sonuç verir; iki farklı saksıyı karşılaştırmak için güvenilir değildir.

Ciddi tarımsal ölçüm için kalibre edilmiş TDR veya FDR problar kullanılır ve fiyatları bu sensörlerin yüzlerce katıdır.

Özet

Toprak nemi sensörleri dirençli ve kapasitif olmak üzere ikiye ayrılır. Dirençli tipler ucuzdur ama korozyona uğrar; kalıcı kurulumlarda kapasitif tip tercih edilmelidir.

Bu derste şunları öğrendik:

  • Dirençli ve kapasitif sensör farkını
  • Elektroliz kaynaklı korozyonu ve enerjiyi kesme yöntemiyle azaltmayı
  • Kuru/ıslak referansla kalibrasyon yapmayı
  • Histerezis, süre limiti ve bekleme içeren güvenli otomatik sulama mantığını
  • Su seviye ve yağmur sensörlerinin kullanımını
  • Bu sensörlerin mutlak değil göreceli ölçüm verdiğini