Haberler:

Foruma Resim Yükleme ve Boyut Sınırlaması ( ! )  https://bit.ly/2GMFb8H

Ana Menü

Nem sensörü ile sulama sistemi

Başlatan omurkosem, 12 Eylül 2017, 13:22:47

omurkosem

iyi günler,
Nem ölçer ile bahçe sulaması yapmak istiyorum.Nem ayarlanan değere ulaştığında  3 yada 4 saat çalışacak ve duracak. Bu zaman süresini nasıl ayarlaya bilirim?Belli bir zaman aralığında çalıştırma şansım yok. Sistem su seviye rölesine bağlı olak.
İyi çalışmalar.

mehmet

https://www.picproje.org/index.php/topic,65932.0.html

Mesajınızı, F.K. 2-c ve 2-ç maddelerine göre yeniden düzenleyiniz.
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr

ilyas KAYA

Bunun için yapılmış hazır sensor ler var. Sensör dediğime bakma içinde  birkaç tane tahta var ve islandiginda şişiyor. Şiştiginde ise mekanik switch e basıyor. Kuruma süresini hava deliklerinden ayarliyorsunuz. Kuruma ve ıslanma süreleri toprak ile hemen hemen aynı olduğu düşünülerek yapılmış. 60 tl gibi de bir fiyatı var.
" Tarla yagmur sensörü " olarak ararsaniz Rain bird diye bir markaya ulaşacaksınız.

omurkosem

Verdiğiniz  bilgi için teşşkür ederim. Cihaz güzel, benim işimi görmüyor.Ben suyu kanaldan alıyorum,her zaman kanalda su olmuyor. Bunun için kanala su seviye rölesi ve zamanlama saati koydum. Zamanlama saati yerine neme duyarlı sistem yapmak ve bir süre koyup, çalıştırıp kapatmak istiyorum. Hazır paketler işimi görmüyor. Pic ile bir devre yapıp çalıştırmak istiyorum. Takıldığım konu süre ayarlaması. Su kanala geldiği zaman ve nem oranı düşük ise sistem çalışacak. 12:00 15:00 gibi zaman aralığı olmayacak. Şartlar uygun ise  üç saat çalışacak. Bunu Timer ile  döngü yaparak çalıştırsam  uygun olur mu?

omurkosem


#include <16f877.h> //Programın kaydedildiği yer ve programın adı
#device ADC=10 //10 bitlik ADC kullanılacağı belirtiliyor
#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD
#use delay (clock=4000000) // Gecikme fonksiyonu için kullanılacak osilatör frekansı belirtiliyor.
#include <lcd.c> //LCD kütüphanesi açılıyor
#define use_portb_lcd TRUE //LCD nin b portuna bağlandığını belirtiyor 
unsigned long int bilgi=100;  //bilgi adında integer özelliğinde değişken tanımlanıyor ve değeri 100e eşitleniyor 
unsigned long int nem; //nem adında işaretsiz uzun integer özelliğinde değişken tanımlanıyor 
 




void main()            // programın başladığı satır 
{setup_adc_ports(AN0_AN1_AN3); //mikro denetleyicinin ilk 3 analog girişi aktif ediliyor 
setup_adc(ADC_CLOCK_DIV_8);  //analog girişten 8 mikro saniyede bir bilgi okunacak 
setup_psp(PSP_DISABLED);     //PSP birimi devre dışı
setup_spi(SPI_SS_DISABLED);        //PSP birimi devre dışı
setup_timer_1(T1_DISABLED);        //T1 zamanlayıcısı devre dışı
setup_timer_2(T2_DISABLED,0,1);   //T2 zamanlayıcısı devre dışı
enable_interrupts(INT_AD);     // AD çevrimi bitti kesmesi tanıtılıyor
enable_interrupts(GLOBAL);     // Tüm kesmeler aktif


lcd_init();   //LCD yi hazır hale getiriyor 
set_tris_d(0xFF);   // d portunun tamamını giriş yap
set_tris_c(0x00);  // c portunun tamamını çıkış yap
output_c(0x00);  // c portunun tamamını sıfırla


 while(TRUE)  //sonsuz döngü oluşturma
{
basla:  // basla adındaki etiket
while(TRUE) //sonsuz döngü oluşturma
{
if(input(pin_d0)==1) //d0 pinine bağlanan butona basıldımı
{
while(TRUE){if(input(pin_d0)==0) //d0 pinine bağlanan butondan elimiz çekildimi
{
goto menu;  //butondan elimiz çekildiyse menu etiket satırına git
}
}
}




set_adc_channel(0);  // 0. analog girişten veriyi al
nem=read_adc();   //analog girişten alınan veriyi nem sabitine eşitle
 printf(lcd_putc,"\f nem=%lu \n bilgi=%f",nem,bilgi); //LCD de nem ve bilgi değerlerini göster 
delay_ms(250);  //250 ms bekle
 if(bilgi<=nem)  //bilgi değişkeni küçük eşit nem değişkenine ise alt satırdaki komutu çalıştır 
{
output_c(0x01); //c0 portunu 1 yap (c0 a bağlanan pompayı çalıştır)
}
if(bilgi>nem)   //bilgi değişkeni büyük nem değişkeninden ise alt satırdaki komutu çalıştır
{
output_c(0x00); //c0 portunu 0 yap (c0 a bağlanan pompayı durdur)
}
} 
menu://menu etiketi
while(1)
{
if(input(pin_d0)==1) //d0 pinine bağlanan butona basıldımı
{
 
while(1)
{
if(input(pin_d0)==0) //d0 pinine bağlanan butondan elimiz çekildimi
{
goto basla; //butondan elimiz çekildiyse basla etiket satırına git
}
}
}
printf(lcd_putc,"\f bilgi\n %f",bilgi); //bilgi değişkenini ekrana yaz
delay_ms(250); if(input(pin_d1)==1) //d1 pinine bağlanan butona basıldımı
{delay_ms(10); //10 ms bekle
bilgi=bilgi-1; //bilgi değişkeninden 1 çıkar (bilgi referansımızdır)
 if(bilgi<0)  //bilgi değişkeni 0 dan küçükse alttaki komutu çalıştır 
{
bilgi=0;  //bilgi değişkenini 0 a eşitle
}
}
if(input(pin_d2)==1) //d1 pinine bağlanan butona basıldımı
{
delay_ms(10);       //10 ms bekle
bilgi=bilgi+1;     //bilgi değişkenine 1 ekle (bilgi referansımızdır)
 if(bilgi>1023)   //bilgi değişkeni 1023 ten büyükse alttaki komutu çalıştır 
{bilgi=1023;     //bilgi değişkenini 1023 e eşitle
}
}
}
}
}

Derlerken hata oluyor.
printf(lcd_putc,"\f nem=%lu \n bilgi=%f",nem,bilgi);

[/size][size=16px !important]Yazdırma biçimi türü geçersiz hatası veriyor .Yardımcı olurmusunuz?[/size]
[/size]
[/size]


omurkosem

sorunu buldum.
printf(lcd_putc,"\f nem=%lu \n bilgi=%f",nem,bilgi);
printf(lcd_putc,"\f nem=%lu \n bilgi=%ld",nem,bilgi);
olacak.