1-82_zpsf18b7b67

Günümüz akıllı evlerinde artık o kadar çok gelişme var ki, insanlığa pek yapacak iş kalmıyor. Eski zamanların filmlerinde robotların ev işlerini yapması, farklı bir yol ile gerçek oluyor.

Bu yazımızda konumuz otomatik sulama ve toprağın nemini dengeleme üzerine.

Fotoğrafını gördüğünüz bu basit dedektör, toprağın direncindeki değişimi opamp ile karşılaştırarak toprağın nemini ölçmemize yardım ediyor. Kullanımı oldukça basit;

Eğer profesyonel bir ölçüm yapmayacak isek, normalde sulamamız gerektiğinde toprağa bu ölçüm kısmını batırıp, üzerindeki trimpottan, yine üzerindeki kırmızı ışığın tam söndüğü ana ayarlıyoruz ve toprağımızı normal bir şekilde suluyoruz. Toprak nemlenince direnci düşüyor ve sensörün üzerindeki opamp, bizim d0(kırmızı) ledimizi yakıyor. Led yanarken dijital çıkışın sıfır olduğunu aklımızda tutmakta fayda var. Tekrardan led söndüğünde ise anlıyoruz ki toprağın artık sulama vakti gelmiş ve dijital çıkışı bu durumda bir(3.3v) oluyor. Bu sensörü sadece görsel uyarma ya da çıkışı ile buzzer tetikleyip sesli uyarma olarak kullanabilir ya da bir mikrodenetleyiciye bağlayarak belirli süre otomatik sulama yaptırabiliriz.

nem

Buzzer yerine röle bağlayarak herhangi bir cihazı aktif etmeyi sağlayabilirsiniz, toprak nemlendiği gibi çıkış deaktif olacaktır ancak bu toprağı otomatik sulamak için pek de sağlıklı yöntem olmayabilir, zira sansörün deaktif olması için gereken su miktar bitkilere yetmeyebilir. Bunu için mikrodenetleyici kullanmak gerekirse:

nem1

Böylelikle ne kadar süre sulamamız gerektiğini kolayca programlayabilir ve ardından sulama motorunu durdurabiliriz. Ayruca birden fazla pompa ile toprağa sıvı katkıların da zamanlaması yapılabilir(örneğin orkidelerin ayda bir kendi besiniyle birlikte sulanması gibi). Örnek kodlar ektedir.

Röle seçerken 5v ile tetiklene ve kontaklarının sulama motorunu kaldırabileceği güçte olmasına dikkat etmeliyiz. Ayrıca motorun bağlandığı kontaklara voltaj uygulanırken motora uygun voltaj verilmeli(örneğin 220v gibi) ve bu uçlar karıştırılmamalı. Aksi halde devremizi yakabiliriz.

Tüm bunların haricinde nem sensörümüzün ayrıca bir de analog çıkışı var ki toprağın nem oranını ölçmemize yardımcı olabilir ve süreyle tahmini sulamadansa tam değerinde sulama yapabiliriz. Bu hassas bitkiler için özellikle gerekebilir. Bu analog çıkışı direk mikrodenetleyicimizin analog girişine bağlanıp, gerekli durumlarda çıkış değeri ölçülerek karşılaştırma yapılabilir.

nem2

Sadece saksı sulama yapılacak ise şu tarz minik mompa motorları bulmak mümkün, üstelik 5v ile verimli çalışmaları, ekstra güç kaynağı ve gerilim hattı derdini de ortadan kaldırıyor.

pump

Dijital output için hazırlanmış pic ile 5sn sulama yazılımı (güncellendi)–> nem

  • Elo

    bu devreyi yaptım ancak çalışmıyor. ne yaparsam yapayım A0 dan çıkış alamıyorum sensör de arıza yok çalışıyor? kodları değiştirmedim. sorun neden kaynaklanıyor olabilir.

  • Hangi işlemleri yaptığınızı sırasıyla açıklarsanız size daha iyi yardımcı oluruz. Sensörü ve Pic i ne ile beslediniz? Herhangi bir regilatör kullanmalısınız. Eğer 5 volt supply sağladıysanız pic in MCLR bacağı ile ground arasında 5V a yakın bir değer ölçmeniz gerekiyor. Ölçemiyorsanız sorun pic dedir yahut devrenizde herhangi bir kısa devre mevcuttur. MCLR den 5v alabiliyorsanız picin giriş ve çıkışlarını kontrol edin. Buralardan voltaj alamıyorsanız ya pic de sorun vardır ya da programınızda.

  • elo

    öncelikle ilgilendiğiniz için teşekkür ederim. devremde 7805 var ve 4.89V ölçüyorum. 13 nolu bacakta sensörün durumuna göre 4V ve 0V ölçüm yaptım kısa devre kontrolü yaptım ama 17 nolu bacaktan asla çıkış alamadım. hex dosyasını oluşturmadan buradaki hex. yükledim.programı okuduğumda kristal kullanılmayacak diye anladım yanlış mı? kristal kullanarakda denedim kullanmadanda.

  • Şimdi öncelikle programda sensörün output’u, pic’in 18. RA1 analog pinine bağlanmış. 13. pine değil. Buna ek olarak, nem sensörünün outputundan aldığınız değerlerin analog mu yoksa digital mi olduğunu anlamanız gerekiyor. Bu şu demek, sensörün output voltajı nem oranına göre 0V ile 4V yada 0 dan başka bir voltaj değeri arasında değişiyor ise bu analog çıkış, eğer sensörün output voltajı, 0V ve 5V olmak üzere sadece 2 voltaj değerini alıyorsa bu digital çıkıştır. Programı biraz önce okudum. Eğer toprak nem sensörünü analog olarak kullanmak ve hassas ölçüm yapmak istiyorsanız, bu program sizin için pek uygun olmayacaktır.Çünkü program sadece sensörün output voltajının 4V olduğu anda 1 logic değerini ve diğer alt değerlerde ise 0 logic değerini çıkış verecektir. Yani sizin 100 tane değeriniz mevcut ise, pic iniz bu değerlerden birisini yada bir kaçını logic 1 olarak diğer değerleri ise logic 0 olarak kabul eder. Hangi nem oranında sensörden kaç volt output alınacağınızı datasheetinden bakabilir yada kendiniz sensörün outputunu ölçerek bulabilirsiniz. Eğer hassas ölçüm yapmak ve elde ettiğiniz analog değerlere göre farklı çıkılar elde etmek istiyorsanız nem sensörünün outputunu pic in analog bacaklarından herhangi birisine bağlamalısınız, bunlar sadece RA0 ve RA1 olabilir yani 17. ve 18. pinler. Ve girişten uygulanan analog bilgiyi program ile digitale çevrilmelisiniz. Bu yüzden Pic in Analog/digital convertırını kullanmanız gerekiyor. Bunun için de programda pic in converterı, convertırın clock frekansı, giriş kanalı belirtilmesi ve analog girişten okunan analog bilginin digitale çevrilip bir değişkene atanması gerekiyor. Analog/digital converter programlamasını ya da anlattığım analog bilginin digitale nasıl çevrildiğini biliyor musunuz?

  • Tris ayarları ile ilgili ufak bir eksiklik varmış yazılımda. B portu 0x00 yazılarak tamamı çıkış olarak ayarlanmış, en azından B7 ucu input ayarlanması gerekirdi. 0xFF ile değiştirilerek B portunun tamamı input yapıldı. Yeni dökümanı tekrar indirip doğrudan hex i yükleyerek sorununuzu düzeltebilirsiniz. Şema da yazıda dijital olarak nasıl bağlandığı görünüyorsa aynıdır, değişiklik yapmanıza gerek yoktur.

  • Elo

    yeni attığınız hex. i yükleyip tekrar denedim çalışmadı ,rb7 ye direk 5v verdim yine çalışmadı. isiste simule ettim yok çalıştıramadım.

    • Üstat güncellenen programda girişi pinb7 seçmiş. Çıkışı pina0 dan almış. Çizimde çıkış pina0 ve giriş pina1 olarak gözüküyor. Proteusta yeni programa göre çıkış ve giriş aldığımda program bende çalışıyor bu şekilde. Eski program da çalışıyordu. Sorun programsal değil. set_tris_a(0b00000010) komutu ile a1 i giriş a0 ı çıkış olarak ayarlamıştık zaten.

      Proteusta çalışıyorsa program doğrudur. Gerçekte program bir şekilde icra edilmiyorsa, pickit in programı pic e yazıp yazmadığından da şüphelenebiliriz. Bence baskı devre haline getirdikten sonra tekrar deneyin. Bread board da pek sağlıklı sonuçlar alınmıyor bazen. Akşam görüntülü konuşma için ben musait olurum üstat. Baskı devre haline getirdikten sonra bir çok şey daha da netleşir 🙂

  • bi yerde yaptığınız bir hata olmalı, gayet basit ve çalışan bir devre..
    @payitaht yanılıyorsun lütfen yazıyı daha detaylı incele. çünkü dijital çıkışı anlatırken farklı bir devre çizip paylaştım, analog çıkışı anlatırken farklı devre.. Ve lütfen farklı kişilerin yazılarında oynama yapmayalım, çok elzem durumlarda hemen altına kendi ismimizi belirterek ek ekleyelim..
    not:
    Sistemde birden çok aynı isimde dosya oluşmuş hepimiz ekleye ekleye, bu sebeple sorun olmasına karşın diğer eklediğim dosyaları temizledim ve güncel olanı tekrar ekledim. Son halini indirirerek adım adım yaptıklarınızı gösterebilirseniz sevinirim..

  • Elo

    yeni bir pic e yeni attığınız programı yükleyip bunu baskı devre üzerinde denedim ancak şöyle bir sıkıntı var Rb7 ye enerji vermediğim halde röle her beş saniyede bir durum değiştiriyor. baskı devreyi payitaht arkadaşa yolluyorum.

  • Elo

    yardımlarınız için tekrar teşekkür ederim. soruna gelince ben ilk önce sensörü bağlamadan denemek istedim çalışırsa bağlarım diye düşündüm, ama sensör bağlanmadığında (b7 boşta iken) sanki 5 v varmış gibi davranıyor neden olduğunu bilmiyorum açıklarsanız sevinirim. b7 ye eksi verdiğimde yada sensörü bağladığımda devre sorunsuz bir şekilde çalıştı.

  • Datasheetini inceledim biraz. Sebebi şu üstat. B portu denetleyici içerisinde dahili pull-up yapılmıştır. Bu port pinlerinin korunması amaçlı sanırım. Yani bu şu demek; B portu denetleyicinin içerisinden bir dirençle VDD bacağına bağlanmış gibidir. Voltaj gitmediği sürece bir direnç üzerinden VDD bacağına bağlanılmış gibi davranıyor bu yüzden.