PIC|ULAK PIC|ULAK ile Otomatik Kapı Uygulaması By Sinan Sözügüzel Posted on 14 Mart 2016 4 min read 0 0 7,007 Paylaş ! Facebook Paylaş ! Twitter Paylaş ! Google+ Paylaş ! Reddit Paylaş ! Pinterest Paylaş ! Linkedin Paylaş ! Tumblr Merhaba arkadaşlar, Bu yazımızda, MekatronikLAB firmasının üretmiş olduğu PIC mikrodenetleyiciler ile proje geliştirme kiti PIC|ULAK ile adına otomatik kapı dediğimiz uygulamayı gerçekleştirdik. 🙂 Kullandığımız hareket sensörü(pir sensörü) hakkında bilgi vericek olursak, dijital çıkışlı olan bu modül, ortamda hareket algılamadığı zaman lojik 0, hareket algıladığı zaman ise lojik 1 çıkışı vermektedir. Sensör üzerinde Sx ve Tx olmak üzere iki adet potansiyometre bulunmaktadır. Sx potansiyometresi sensörün görme mesafesini 3 ile 5 metre arasında değiştirmektedir. Tx potu ise sensör gördükten sonra ne kadar süre daha çıkış pininden lojik 1(3.3V) çıkışını vereceğini ayarlamaktadır. Uygulamada hareket sensörü hareketi algılandığında step motorumuz sağa doğru 3 tur dönüyor ve hareket sona erdikten sonra 3 adım sola dönüyor, yani otomatik kapı gibi düşünürsek hareket algılandığında kapı açılıyor hareket algılaması bittikten sonra kapı kapanıyor. 🙂 Bilgisayardan step motor kontrolü adlı çalışmama buradan ulaşabilirsiniz. iyi çalışmalar…. Malzemeler pic|ulak hareket(PIR) sensörü step motor uln2003 Bağlantı Şeması CCS C Kodları [php] #include <18f2550.h> //kullanılacak denetleyici tanımlanıyor. #use delay (clock=4M) // osilatör frekansı #fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD // konfigürasyon ayarları. int a; // a değişkeni tanımlanıyor. void main() { set_tris_a(0xFF); // A portu giriş olarak tanımlanıyor. ser_tris_b(0x00); // B portu çıkış olarak tanımlanıyor. output_a(0x00); // A portu sıfırlanıyor. while(TRUE) { if(input(pin_a0)==1 ) // pir sensörü hareketialgılamışsa. { output_high(pin_c0); // C0 pinini lojik 1 yap. for(a=0;a<=35;a++) // 4*7.5=30 => 30*36=1080 3 tur adım atıyor 24×3.75=90 derece sağa hareket edecek. { // step motor tam adımda ileri sürme. output_b(0b00001001); delay_ms(80); output_b(0b00000011); delay_ms(80); output_b(0b00000110); delay_ms(80); output_b(0b00001100); delay_ms(80); } while(input(a==35)); // step motor 3 tur atana kadar bekle. } if(input(pin_a0)==0 ) // sensör hareket algılamadıysa. { output_low(pin_c0); // C0 pinini lojik 0 yap. for(a=0;a<=36;a++) { // step motor tam adımda geri sürme. output_b(0b00001100); delay_ms(80); output_b(0b00000110); delay_ms(80); output_b(0b00000011); delay_ms(80); output_b(0b00001001); delay_ms(80); if(a==36) // eğer step motor 3 tur attıysa. while(input(pin_a0)==0); // sensör hareket algılamayana kadar bekleş. } } } } [/php] Devrenin Çalışma Videosu