RF HABERLEŞME İLE DC MOTOR KONTROL DEVRESİ - Elektrik Elektronik Projeleri

Post Top Ad

15 Temmuz 2015 Çarşamba

RF HABERLEŞME İLE DC MOTOR KONTROL DEVRESİ

   Merhabalar. Bu projede RF haberleşme modülü kullanarak PIC16f628A mikrodenetleyicisi ile DC motor kontrolü anlatılmıştır. İki buton yardımıyla motor sadece sağa ve sola dönderilmektedir. Siz, bu devreyi isteğinize göre geliştirebilirsiniz. Örneğin hız ayarı yapabilir veya stop butonu koyarak motoru istediğiniz zaman durdurabilirsiniz.

   Çok çeşitli haberleşme teknikleri vardır. Kablosuz olarak veri aktarımı yapmak için bu projede teknik olarak RF haberleşme kullanılmıştır. RF haberleşme, Radyo Frekansı üzerinden bir alıcı ve bir verici cihaz arasında veri iletimine verilen isimdir. 
“   Radyo dalgaları ya da radyo sinyalleri 3 KHz ile 3000 GHz arasında oldukça geniş bir frekans aralığını kapsar. Bu aralıkta VLF, LF, MF, HF, VHF, UHF şeklinde belirli bantlara ayrılmıştır. Aşağıdaki şekilde radyo dalgalarının elektromanyetik spektrum üzerindeki frekans dağılımı ve isimlendirilmiş bant aralıkları gösterilmiştir. Haberleşme uygulamalarında bu bantların sadece belirli bölümleri kullanılmaktadır. Bunlardan ISM (Industrial Scientific Medical band) bandı birçok ülkede telsiz iletişimi için sertifika veya lisansa gerek olmadan belirli bir çıkış gücü sınırlamasına uyarak, üzerinden yayın yapılabilen bir banttır. Ülkemizde ISM bandının yaygın olarak kullanılan frekansları, 315 MHz, 418 MHz, 433,92 MHz, 868 MHz, 915 MHz, ve 2.4 GHz frekanslarıdır.”[1]


·      Very Low Frequency (VLF)
·      Low Frequency (LF)
·      Medium Frequency (MF)
·      High Frequency (HF)
·      Very High Frequency (VHF)
·      Ultra High Frequency (UHF)
·      Super High Frequency (SHF)
·      Extremely High Frequency (EHF)

   Haberleşmede en önemli problem verinin sağlıklı, hızlı ve ulaşabileceği en uzak noktaya iletilmesi problemidir. Bu problemi çözmek için modülasyon dediğimiz tekniğe başvuruyoruz. Modülasyon, iletmek istediğimiz düşük frekanslı bilgi işaretinin yüksek frekanslı taşıyıcı işarete bindirilerek istenilen uzaklığa taşınması olayıdır. Modülasyonun da kendi arasında türleri vardır.

-Mesaj işareti ve Modüle edilmiş işaretler-
Modülasyon sonucundaki modüleli işaret istenilen yere ulaştığında burada bulunan demodülatör sayesinde taşıyıcı sinyal ile bilgi sinyali ayrıştırılarak bilgi sinyali elde edilmiş olur. Demodülatör kısmında alçak geçiren veya band geçiren filtre bulunmaktadır.

RF ALICI
RF VERİCİ


   Öncelikle haberleşmenin sağlıklı bir şekilde yapılabilmesi için verici modül tarafından “Preamble” mesajının gönderilmesi gerekmektedir. Bu işlem, alıcı modülün uyandırılması şeklinde tabir edilebilir ve alıcı modülün, göndermiş olduğumuz verileri düzgün bir şekilde alabilmesi için şarttır. Sonra senkron ve ardından data bitleri yollanır. Bu projede preamble mesajı 0x55 (0101 0101) olarak ayarlanmıştır. Siz, 0xAA (1010 1010) olarak veya daha farklı şekilde ayarlayabilirsiniz.






Anten Boyu Hesabı:






Devre Şeması
 Devrenin PCB Çizimi:


Malzemeler:
1 adet RF alıcı-verici modül
1 adet L293D motor sürücü entegresi
2 adet pic 16f628A
2 adet 10 K direnç
2 adet buton
1 adet DC motor

2 adet 7805 regülatör

Program CCS C Kodu:


VERİCİ:


#include <16f628A.h>
#fuses INTRC_IO,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOCPD
#use delay (clock=4000000)
#use rs232 (baud=9600, xmit=PIN_B2, rcv=PIN_B1)

void preamble(){ // (Preamble: donanım senkronizasyonunu sağlamak için.)
    putc(0x55);   
    putc(0x00);
    putc(0xff);

    return;
}

void main(){
   setup_timer_1(T1_DISABLED);     // T1 zamanlayıcısı devre dışı
   setup_timer_2(T2_DISABLED,0,1); // T2 zamanlayıcısı devre dışı
   setup_CCP1(CCP_OFF);            // CCP1 birimi devre dışı

  set_tris_a(0xFF);   // A portu komple giriş
  set_tris_b(0x00);   // B portu komple çıkış
  output_b(0x00);     // B portu temizlendi

while(1)
  {
     preamble();
   
    if(!input(pin_a0))  // A0 pini 0 volt ise A bilgisini yolla
    {
    putc('A');
    }
    if(!input(pin_a1)) // A1 pini 0 volt ise B bilgisini yolla
    {
    putc('B');
    }
   }
}


ALICI:


#include <16f628A.h>
#fuses INTRC_IO,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOCPD
#use delay(clock=4000000)
#use rs232(baud=9600, xmit=PIN_B2, rcv=PIN_B1)

   char a;

void main(){

   setup_timer_1(T1_DISABLED);     // T1 zamanlayıcısı devre dışı
   setup_timer_2(T2_DISABLED,0,1); // T2 zamanlayıcısı devre dışı
   setup_CCP1(CCP_OFF);            // CCP1 birimi devre dışı

   set_tris_b(0xFF); // B portu komple giriş
   set_tris_a(0x00); // A portu komple çıkış
   output_a(0x00);   // A portu temizlendi

   while(1){

      a=getc();               // Gelen bilgiyi a değişkenine ata
      if(a=='A') // A bilgisi geldi ise motor sağa dönsün
      {
         output_high(pin_A0);
         output_low(pin_A1);
      }
      if(a=='B')              // B bilgisi geldi ise motor sola dönsün
      {
         output_low(pin_A0);
         output_high(pin_A1);
      }
   }
}  
Kaynaklar
1-       Odtü Robot Topluluğu sitesi :http://www.robot.metu.edu.tr



3 yorum:

  1. paylaşım için teşekkürler

    YanıtlaSil
  2. Merhabalar

    Yazmış olduğunuz yazılımı 16f946 için denedim ancak çalışmıyor.

    YanıtlaSil
  3. Merhaba ben daha önceleri udea firmasının modülleri ile çalışmıştım. Fakat hız problemi yaşamıştım. 300bps i geçince mesafe çok kısalıyordu. Bu modülleri altın dedektörü sisteminde kullandık. Fakat mesafe sorunlarımız var.

    YanıtlaSil

Post Top Ad