Çiçek Sulama Projesi

Proje Linki: 
Yapmış olduğum projede yaz aylarında evde olmadığımız günlerde çiçeklerimizin susuz kalması sebebiyle hayati riske girmeleri veya ölmeleri ile sonuçlanan olayları engellemek içindi. Projemde CCS C programı ve pic16f628a entegresi baskı devre çiziminde proteus programı kullandım. 2 adet 6-12 V ile çalışan minik su pompalarını sürmek için BC547 transistör kullandım. Sistem DS1302 gerçek zaman entegresi ile anlık zaman bilgisini almaktadır. Günde 3 kere 10 saniye sıra ile motor1 ve motor2'yi çalıştırmaktadır. Projeyi fonksiyonlara örnek olması için birden fazla fonksiyon kullanarak yaptım. sistemde bulunan 3 ledin biri power led olup elektrik oldukça sürekli yanmaktadır. diğer ikisi çalışan fonksiyona göre yanmaktadır.

BeklemeDurum Fonksiyonu: hiçbir şart yokken ledler birer saniye arayla flip flop yaparlar.

LedYak Fonksiyonu: Saati göster fonsiyonunun hesapladığı HesapYap değişkeni kadar iki ledi aynı anda yakıp söndürür. Böylece sırasıyla saatin onlar basamağı, saatin birler  basamağı, dakikanın onlar  basamağı ve dakikanın birler  basamağı kadar ledler yanıp söner. saatin doğruluğu kontrol edilir.

SaatiGoster Fonksiyonu: Hesap yap değişkenine o anki saat ve dakika bilgisinin atamasını yapar.

MotorCalis Fonsiyonu: For döngüsü içinde 10 saniye 2 motoru sıra ile çalıştırır. Motoru temsil eden led ise çalışma süresi boyunca yanar.

Ek sulama saati ihtiyacı olduğunda buton ile motorlar çalıştırılır.

Devrenin çalışan simülasyon, baskı devre ve kodlarını en kısa zamanda paylaşacağım. yapmak isteyenlere kolay gelsin. Baskı devrede DS1302



#include <16f628a.h>            //Kullanılacak pic
#use delay(CLOCK=4000000)         //Fosc=4Mhz
#fuses INTRC,NOMCLR,NOPUT,NOPROTECT,NOBROWNOUT,NOLVP,NOWDT  // Denetleyici konfigürasyon ayarları

#define RTC_SCLK PIN_A2            //DS1302 için pin tanımlamaları
#define RTC_IO   PIN_A3
#define RTC_RST  PIN_A1            //
#include "ds1302.c"               //ds1302 ait fonksiyonlar programa eklenir
           
#define MOTOR2  PIN_B3
#define MOTOR1  PIN_B0
#define LED1  PIN_B4
#define LED2  PIN_B5
#define DATA  PIN_B7

#define BUTON  PIN_A7
#use rs232 (baud=9600, xmit=pin_B1, rcv=pin_B2, parity=N, stop=1)
//Global değişkenler
int saniye,dakika,saat,gun,ay,yil,haftanin_gunu;   //ds1302 değişkenleri
int HesapYap=0, i=0;
int LedDizisi [11]={0,1,2,4,8,16,32,64,128,256,0};

void BeklemeDurum(){
 //output_bit(LED1,LedDizisi[5]);
 output_high(LED1);
 delay_ms(1000); // 1 sn gecikme veriliyor
 output_high(LED2);

 output_low(LED1);
 delay_ms(1000); // 1 sn gecikme veriliyor
 output_low(LED2);   

 printf("Calisma Saati Bekleniyor\n");
}

void LedYak(){
for(i=1; i<=HesapYap; i++){
 output_high(LED1);
 output_high(LED2);
 delay_ms(500); // 500ms gecikme veriliyor

 output_low(LED1);
 output_low(LED2);
 delay_ms(500); // 500ms gecikme veriliyor
}
BeklemeDurum();
}

int SaatiGoster(int saat1, dakika1){
HesapYap=saat1/10; //Saatin Onlar Hanesini Göster.
LedYak();
HesapYap=saat1%10; //Saatin Biirler Hanesini Göster.
LedYak();
HesapYap=dakika1/10; //Dakikanın Onlar Hanesini Göster.
LedYak();
HesapYap=dakika1%10; //Dakikanın Birler Hanesini Göster.
LedYak();
}


void MotorCalis(){
 for (int j=0; j<=10; j++){
 output_high(LED1);   
 output_high(MOTOR1);
 delay_ms(1000); // 1 sn gecikme veriliyor
 printf("Motor1 Calisiyor\n");
}

output_low(MOTOR1);
output_low(LED1);

 for (int k=0; k<=10; k++){
 output_high(LED2);   
 output_high(MOTOR2);
 delay_ms(1000); // 1 sn gecikme veriliyor
 printf("Motor2 Calisiyor\n");
}

output_low(MOTOR2);
output_low(LED2); 
}

///PROGRAM

void main(void){
set_tris_a(0b10000000);          // RA7 ucu giriş olarak ayarlandı.
rtc_init();  // DS1302 başlangıç ayarları yapılıyor

//rtc_set_datetime(1,6,18,5,19,13); // Tarih ve Saat ayarları yapılıyor

   while(1){
   // DS1302'den saat,dakika,saniye bilgileri alınıyor
rtc_get_time(saat,dakika,saniye);
     // DS1302'den gün,ay,yil ve günün isim bilgisi alınıyor
rtc_get_date(gun,ay,yil,haftanin_gunu);
BeklemeDurum();

if (saat==0 || saat==8 || saat==16)
{
if(dakika<=00 && saniye>=30){
MotorCalis();
}
}

if (input(BUTON)==1){
MotorCalis();}

if (saniye<=20){
SaatiGoster(saat, dakika);
}

if (saniye>=55){
output_high(LED1);
output_high(LED2);
delay_ms(3000);
}
}
}



Zeytinlik Bakimi

 03/03/2024 TARİHLİ BAKIM VE BESLEME