LDR’ Lİ PANJUR KONTROL DEVRE TASARIMI - Elektrik Elektronik Projeleri

Post Top Ad

17 Şubat 2015 Salı

LDR’ Lİ PANJUR KONTROL DEVRE TASARIMI

   Pic 16F628A mikrodenetleyici entegre kullanılarak yapılan bu projede, hava güneşli olduğunda panjur kapanacak, hava karardığında ise panjur açılacaktır. Havanın aydınlık yada karanlık olmasını algılayan sensör ise LDR (Light Dependent resistor) dir.






Devre Şeması:

























    LDR , Ortamdaki ışığın şiddetine göre üzerine düşen direnç değerini ters orantılı olarak ayarlayabilen  bir optik sensör çeşididir. Yani  aydınlıkta az direnç, karanlıkta yüksek direnç gösteren devre elemanlarıdır. Devrede 555 entegresi kullanılmıştır. RV1 potansiyometresi ile aydınlık-karanlık sınırı ayarlanıp LDR nin analog değişimine karşılık 555 entegresinden lojik değerler elde edilmiştir.  LDR nin yüksek direnç gösterdiği durumda 555 entegresinin çıkışı (3. bacak) lojik-1, düşük direnç gösterdiği durumda ise lojik-0 seviyesindedir. Elde edilen bu değerler PIC'in RA0 pinine girilmiştir.
   Panjurun açılıp kapanması 4 uçlu (bipolar, iki kutuplu) Step Motor ile sağlanmaktadır. Motoru sürmek için şekildeki yöntem kullanılmıştır. 16F628A PIC'inin kendi iç osilatörü olduğu için harici bir osilatör devresi yapılmamıştır. 
   Panjurun tam açıldığını veya tam kapandığını anlayabilmek için düzeneğin en aşağısına ve en yukarısına manyetik switch (Reed Switch) koyulmuştur. Panjurun alt kısmında ise bir mıknatıs vardır. Panjur aşağı indiğinde bu mıknatıs aşağıdaki manyetik switch'i kapatacak ve motor durdurulacaktır. Aynı şekilde yukarı çıktığında yukarıdaki switch'i kapatacak ve motor PIC tarafından durdurulacaktır.

Program C Kodu

/*************************************************************
**************************************************************
*********      LDR ile Otomatik Panjur Programı      *********
**************************************************************
*************************************************************/
#include <16f628A.h>
#fuses NOPROTECT,NOBROWNOUT,NOLVP,NOMCLR,NOPUT,NOCPD,NOWDT,INTRC_IO
#use delay(clock=4000000) // Çalışma frekansı 4MHz
#use fast_io(a) //Port yönlendirme komutları A portu için geçerli
#use fast_io(b) //Port yönlendirme komutları B portu için geçerli
int k,i; // i ve k isimli byte cinsinden değişken belirleniyor
   //=====================================================================

void main()          //Ana Program başlangıcı
{
set_tris_a(0xff);    // A portu komple giriş
set_tris_b(0x00);    // B portu komple çıkış
//***********************************  
output_b(0);
basla:
//******   yukurı çık güneş yok  ****
if ((input(pin_a0))  && (input(pin_a1)) && (!input(pin_a2))) //aşağıdaki switch
{
while(TRUE)
   {
   output_high(pin_b0);
   delay_ms(100);
   output_low(pin_b0);
  
   output_high(pin_b1);
   delay_ms(100);
   output_low(pin_b1);
  
   output_high(pin_b2);
   delay_ms(100);
   output_low(pin_b2);
  
   output_high(pin_b3);
   delay_ms(100);
   output_low(pin_b3);

    if (input(pin_a2)) break;// yukardaki switch
   }
if (input(pin_a2))
{
output_low(pin_b0);
output_low(pin_b1);
output_low(pin_b2);
output_low(pin_b3);
}
}


//******   asağı in  ****
if ((!input(pin_a0)) &&  (input(pin_a2)) && (!input(pin_a1)))
{
while(TRUE)
  
   {
   output_high(pin_b3);
   delay_ms(100);
   output_low(pin_b3);
  
   output_high(pin_b2);
   delay_ms(100);
   output_low(pin_b2);
  
   output_high(pin_b1);
   delay_ms(100);
   output_low(pin_b1);
  
   output_high(pin_b0);
   delay_ms(100);
   output_low(pin_b0);
 

    if (input(pin_a1)) break;// yukarıdaki switch
   }
if (input(pin_a1))
{
output_low(pin_b0);
output_low(pin_b1);
output_low(pin_b2);
output_low(pin_b3);
}
}
goto basla;
}




17 yorum:

  1. yusuf bey koddaki switch manyetik uçlarının pic'e giren pinlerinin yerinin alt switch'inkini üst'e üst switch'inkini alta yazmışsınız. kolay gelsin

    YanıtlaSil
  2. Pardon yanlış olmuş, Mehmet bey .

    YanıtlaSil
  3. Pardon yanlış olmuş, Mehmet bey .

    YanıtlaSil
  4. bu nun baskı devre cızımı varmı varsa atarmısnz bıde motoru nerden temın edebılırm

    YanıtlaSil
    Yanıtlar
    1. Devre küçük boyutta olduğu için baskı devre çizimi mevcut değil. Step motorları ise elektronik malzeme satan veya bilgisayar, yazıcı hurdaları satan yerlerden temin edebilirsiniz.

      Sil
    2. Mustafa akbaş devre hakkında yardiminiza ihtiyacım var Facebook adresinizi verebilirsiniz sevinirim

      Sil
  5. baskı devresı yokmu yani
    bı turlu cızemedm
    lutfen yardım ednn

    YanıtlaSil
  6. motorun ozellıklerı nedır nasıl bişe almalıyım

    YanıtlaSil
  7. Mrb bn soma meslek lisesinde okuyorum ve bu projeyi yapmaya karar verdim bna yardımcı olabilirseniz sevinirim lütfen bnmle iletişime geçin...

    YanıtlaSil
  8. Mrb bn soma meslek lisesinde okuyorum ve bu projeyi yapmaya karar verdim bna yardımcı olabilirseniz sevinirim lütfen bnmle iletişime geçin...

    YanıtlaSil
  9. Hocam bu devre arduinolu nasil yaparız ?

    YanıtlaSil
    Yanıtlar
    1. Biz PIC kullanarak yaptık. Arduino ile yapılmış buna benzer uygulamaları internette bulabilirsiniz.

      Sil
  10. İYİ GÜNLER BU PROJE HAKKINDA SORU SORA BİLECEĞİM KİMSE VAR MI ?

    YanıtlaSil
    Yanıtlar
    1. Buradan sorabilirsiniz.

      Sil
    2. mplab IDE ' yazılmış kodu var mı yardımcı olur musunuz ?

      Sil
  11. mplab IDE ' de yazılmış kodu var mı acaba ? yardımcı olur musunuz

    YanıtlaSil

Post Top Ad