Merhaba arkadaşlar bu yazımda Rf ile uzaktan kumandalı araba nasıl yapılır kısaca onu anlatacağım. Arabanın mekanik kısmı hakkında durmayacağız. Sadece elektronik kontrol olarak anlatacağım.  Öncelikle controller olarak Pic 16f877 ve programlama dili olarak Pic CCS C kullanacağız.  Kablosuz haberleşme için Udea firmasının ürettiği ATX-34(Verici) ve ARX_34(Alıcı)  RF kitini kullanıyoruz. RF Radio Frequency olarak bilinir.   

Alıcı Verici

 Şimdi bu projede can alıcı kısım tahmin edilen gibi RF kitleri olacak.  Çünkü iki kart arasındaki bilgi alış verişi bu RF kitleri arasında sağlanacaktır. Bunun için RF kitini  sizlere kısaca tanıtmak istiyorum.  RF, dediğimiz gibi Radyo frekensıyla bilgileri taşıyan bir çeşit seri haberleşme kitidir.  Bilgi vericiden alıcıya  kare dalgalar ile taşınır. Verici modül’de, digital data girişi için DIN pini bulunur. DIN pini RF ile gönderilecek sinyallerin kullanıcı tarafından verildiği giriştir.  Gönderilen data formatı şu şekildedir; 

TX :  preamble + sencron + data1+…..+dataX

ATX-34S

  Burada ki preamble uyandırma kodudur. Yani alıcı data almadığı durumlarda uyku durumundadır. Hiçbir işlem yapmaz. Bunun için öncelikle bir uyandırma kodu gönderilir ve alıcı uyandırılır. Bu kod şu şekil olabilir;  01010101.  Yada kitin datasheet ‘inden farklı uyandırma kodlarıda gönderebilirsiniz.  

  Sencron, bir çeşit şifre niteliği taşır. Mesela biz programda sencron’ u ‘X’ olarak gönderdik.  Bu durumda X in ASC2 codları bir şifre niteliği taşır.  Şifre gönderildikten sonra asıl data gönderilir. Bu data yine istediğiniz şekilde olabilir. Karakter yada sayı. Biz programda data yı yine karakter olarak gönderdik.   

 Geçelim alıcıya;  alıcı modülde, digital data çıkışı için DOUT pini bulunur. DOUT pini RF’ten alınan sinyallerin demodüle edilerek verildiği çıkıştır.

  RF kitinde bilmemiz gereken şimdilik bukadar. Daha fazla bilgi için kitlerin datasheet lerine bakabilirsiniz. Bakabilirsiniz demeyelim mutlaka bakın.  Çünkü genelde bu tür entegrelerin datasheetleri İngizlicedir.  Ama bu firmanın datasheeti Türkçe hazırlanmış. Madem Türkçe hazırlamışlar, okumazsak biz  ayıp etmiş oluruz.   Birde anten boyları ve kitlerin bağlanma şekillerini datasheetlerden öğrenebilirsiniz.   Data sheetler için ;  ARX-34C_3            ATX-34S KILAVUZ         🙂 

  Rf i bu şekilde kısaca anlattıktan sonra sıra tasarlayacağımız elektronik kartlara geldi. İki tane kart tasarlayacağız. Bunlardan birincisi alıcı yani motor sürücü kartı diğeri ise verici yani kumanda kartı olacak.   Alıcı kartta, en önemli entegreler olarak bir adet 16f 877 microcontroller  ve L293d motor sürücü entegresi kullanacağız.  Buradaki motor sürücü entegresinin yaptığı tek şey motora giden akım yönlerini değiştirmektir.   Şu an için size sadece kart tasarımlarının Isıs çizimlerini vereceğim. Eğer  isteyen olursa Arese aktarılmış tasarımları da verebilirim. 

     Kumanda_anakart 

  İki kartımız da kaba taslak proteus çizimi bu şekilde olacak.  Alttaki Pic alıcı üstteki Pic ise verici için kullanılmıştır. Şimdi alıcı ve vericilerinin data uçları içinPic in özel bir pini vardır bu pinler c6 ve c7 pinleridir. Zaten c6 ve c7 pinlerindede  TX ve RX diye yazar. TX (transmitter) yani alıcı bacağı RX(Reciever) alıcı bacağıdır.    ARX ve ATX in paketleri Isısta similasyon olarak tanımlanmadığı için ben Pic lerin alıcı ve verici pinlerini direk birbirlerine bağladım. Similasyonda programı çalıştırmak istiyorsanız başka çareniz yok. 🙂    Eğer RF kitlerinin Microcontrollere nasıl bağlandığını öğrenmek istiyorsanız datasheet’ inden öğrenebilirsiniz. Ve kitleri datasheet’ indeki gibi bağladığınızda her şey gayet güzel bir şekilde çalışacaktır.  Yalnız Ares tasarımına geçerken ARX ve ATX için paket yapmanız gerekiyor.  Yani ayrı bir kroki çizip o şekilde Ares e aktarabilirsiniz. Çünkü dediğim gibi ATX ve ARX Proteus programında tanımlanmamıştır.  

 Şekilde de görüyorsunuz vericide 4 tane düğme bulunuyor.  Bunlar ileri, geri, sağ, sol butonları olacak. Alıcıda ise L293d ye bağlanmış iki motor görüyorsunuz. Bu motorların yön hareketleri ise alıcı pic’ in pin b0, b1, b2, b3 logic bilgileri ile sağlanıyor. Tabi bu logic bilgi dir yani 5V.  

 Şimdi gelelim programa. İki kart ve iki Pic olduğu için iki tane program yazılması gerekiyor. Bu programlardan biri alıcı diğeri ise verici programıdır.   

  Veri Programı; 

"]#include <16f877.h>#fuses xt,nowrt,nowdt,nobrownout,nolvp,nocpd,nodebug,noprotect,noput#use delay(clock=4M)#use rs232(baud=600,parity=N,xmit=pin_c6,rcv=pin_c7,bits=8) // Verici pinin konfigrasyon ayarları belirtiliyor. #use fast_io(a)void main(){while(1){set_tris_a(0xff);if(input(pin_a0)==1){putc(0b01010101);       // Uyandırma kodu gönderiliyorputc('X');                             // sencron gönderiliyorputc('A');                            // data gönderliyordelay_ms(50);}else if(input(pin_a1)==1){putc(0b01010101);      // Uyandırma kodu gönderiliyorputc('X');                            // sencron gönderiliyorputc('B');                            //data gönderiliyordelay_ms(50);}else if(input(pin_a2)==1){putc(0b01010101);putc('X');putc('C');delay_ms(50);}else if(input(pin_a3)==1){putc(0b01010101);putc('X');putc('D');delay_ms(50);}else{delay_ms(2);}}}

 Şimdi bu programda dikkat edilmesi gereken önemli nokta, pic in verici konfigrasyonundaki bound sayısıdır. Bound sayısı bu kit için 2400 e kadar olabilir ve verici ile alıcının aynı bound sayısına sahip olması gerekiyor. 

   Alıcı Programı; 

"]#include <16f877.h>#fuses xt,nowrt,nowdt,nobrownout,nolvp,nocpd,nodebug,noprotect,noput#use delay(clock=4M)#use rs232(baud=600,parity=N,rcv=pin_c7,bits=8, stop=1) // alıcının konfigrasyon ayarları, bound aralığı ve diğer gerekli şeyler belirtiliyor.#use fast_io(b)char e;void main(){set_tris_b(0x00);output_b(0x00);while(1){if(getch()=='X'){e=getch();if(e=='A'){output_high(pin_b0);output_low(pin_b1);output_high(pin_b2);output_low(pin_b3);}if(e=='B'){output_low(pin_b0);output_high(pin_b1);output_low(pin_b2);output_high(pin_b3);}if(e=='C'){output_high(pin_b0);output_low(pin_b1);output_low(pin_b2);output_high(pin_b3);}if(e=='D'){output_low(pin_b0);output_high(pin_b1);output_high(pin_b2);output_low(pin_b3);}}}}

  Bu programda da anlatılandan farklı birşey yapmadık. İki programa göz gezdirirseniz algoritmayı kısa zamanda kavrayabilir ve çözebilirsiniz.    

 Ve böylece Proteus ortamında similasyonu çalıştırdıınızda arabamızı ileri geri, sağa sola hareket ettirmiş olduk.  Teoride tamamlamış olduğunuz projeyi uygulamaya sokmak çok daha kolay olacaktır.  Tek yapmanız gereken uygulama yaparken ne yapmanız gerektiğini bilmek.   Şimdilik benden bu kadar arkadaşlar.

 Uğraşan arkadaşların her türlü yardım talebine açığım ve burada olacağım.  Bu teori meselesini hallettikten sonra uygulamada yardım edeebilirim.  Kolay Gelsin… 

http://www.youtube.com/watch?v=7Wrt3DGHaUk&feature=youtu.be

Ares-Isıs Çizimleri ve programı buradan indirebilirsiniz;   Prototip Araba

  • serhat

    Tebrikler emeğinize sağlık.Yalnız Atx ve Arx mıkrodenetleyıcılerın hangı portuna bağlayacaz bu konuda yardımcı olursanız sevınırım .

  • ATX ve ARX çizimde de görüldüğü gibi denetleyicinin RC6 ve RC7 pinlerine bağlanmalıdır. Çünkü elektromanyetik sinyalleri yalnız bu pinlerden alıp gönderebilirsiniz. RC6 pinine dikketli bakılırsa /TX ibaresi mevcut bu transmitter yani verici bacağı , RC/ de ise /RX ibaresi mevcut buda reciever bacağı olduğunu belirtmektedir. Eğer yapmakta sıkıntı yaşarsanız burdan size yardım etmeye devam edebilirim. 🙂 kolay gelsin…

  • serhat44

    Çok tşk ederim güzel bir çalışma olmuş.Devreyi kurmaya başladım bir sıkıntı olursa burda olmanız memnuniyet verici 😀 ayrıca ares ısıs dosyalarını yayınlarsanız sevinirim.Paylaşımlarınızın devamı dilerim emeğinize yüreğinize sağlık 😀

    • Ares isıs ve programı eklenmiştir.

  • Serhat

    Devreyi boarda kurdum 9 v verdim ama çalışmadı 12 v vermem mi gerekiyor ? Acil yardım şimdiden teşekkür ederim.

  • Serhat

    Motor sürücüye kadar sorun yok entegre ve rf ler de sıkıntı yok gıbı

  • Boardda istediğiniz sonucu verimli bir şekilde alamazsınız baskı devre haline getirin. Bylelikle devreyi daha rahat kontrol edebilirsiniz. RF in analog pinini ölçün voltaj alıyorsanız alıcı ve verici pinin giriş çıkışlarını ölçün. Vericiden çıkış alıcıdan giriş alabiliryor musunuz?

  • serhat

    tamamdır tşk ederim devre gayet iyi çalışıyor

  • celal

    kardeşim eline sağlık süper olmuş. bi sorum olacaktı bu sisteme ek olarak kademeli hız ayarı yapabilirmiyiz ör ileri butonu iki tane olacak ve birine basınca yarım kapasiteyle gidecek diğerine basınca tam kapasite gidecek bunu nasıl yapabiliriz .Programlama konusunda fazla bilgim yok cvb bekliyorum teşekkürler.

  • Evet dediğin tarzda birşey yapılabilir. Kullandığımız denetleyicinin PWM modülü var. Bu modül motor sürücüsüne giden sinyali kare dalgaya bölüp görev çevrim süresini değiştirerek motorun hızını kontrol edebilir. Detaylı bilgi için şu sayfaya göz atabilirsiniz ; http://elektronikhobi.net/pwm-ile-hizi-ayarlanabilen-dc-motor/

    İyi çalışmalar…

  • celal

    cevap için teşekkürler. kardesim benim bi tez ödevim var rf uzaktan kumandalı oyuncak araba senin bu mevcut devreye motor hız kontrol kodlarını nasıl eklerim ben kodlardan anlamıyorum bu c dilinde mi yazılmış lütfen bana yardım et

    • Site içerisinde pic başlangıç diye aratırsanız bir çok başlangıçeğitimi bulabilirsiniz.

  • celal

    teşekkürler ..Ben bu devreyi proteusta kurdum vermiş olduğunuz kodları yükledim fakat 1 butona bastığım zaman 2 motorda hareket ediyor normal mi anlayamadım..

  • Evet normal. Bütün butonlarda iki motor da hareket edecek fakat bazı butonlarda aynı yönlü bazılarında zıt yönlü hareket etmesi gerekiyor.

  • celal

    Yusuf bey ben bir butonla 2 motorun çalışma mantığını anlamadım biraz açıklama yaparsanız sevinirim tesekkürler..

  • celal

    Yusuf bey lütfen biraz açıklama yaparmısınız bir butonla 2 motor un çalışma mantığını cevap bekliyorum teşekkürler

    • Motorların yönleri için l293 motor sürücü entegresi kullanıldı. Motor sürücü entegreleri içerisinde h köprüsü olan ve akım yönünü verdiğimiz logic değerlerle değiştiren bir entegredir. Aracımın düz gitmesi için yanlardaki iki motorunda ileri yönüne aynı hızla dönmesi gerekiyor. Geri gitmesi için yine aynı şekilde iki motorunda geri gitmesi gerekiyor. Sağ ve sol dönüşler için ise motorların ters yönlü hareket etmesi gerekiyor. Motor yönleri alıcı karttaki işlemcinin b0,b1,b2,b3 pinlerinin logic durumlarına göre değiştiriliyor. Bu logic değerler motor sürücü entegresine gönderiliyor. Daha iyi anlamak için motor sürücü entegrelerinin datasheetlerini inceleyebilirsiniz.

  • osman barut

    hocam bu indirdiğimiz dosyadaki programın dosyasını içinde bulunan alıcı ve vericini birlikte çizilmiş olduğu isis dosyasını çalıştırıp.anakart ve kumandanın hex dosyasını koydum.çalışmadı.yardımcı olursanınz sevinirim hocam

    • pic16f877a ile pic16f877 arasında fark yok diye biliyorum. Hatanın bu sebepten olabileceğini düşünümüyorum ben.

  • osman barut

    bir de kodları 16f777a ya göre yazmışsınız 16f877 yapınca derlemede hata veriyor
    //setup_comparator(NC_NC_NC_NC);
    //setup_vref(FALSE);
    bu iki kodda hocam.

  • Prototip isimli dosyadaki verici programı pull-down butonlara göre yazılmıştır. “!=” operatörlerini “==” diye değiştirirseniz çalışır. 16f877a ve 16f877 de arasında sadece analog karşılaştırıcı ve hız farkı var. Bu uygulamada iki pic içinde programın farkı olmayacaktır.

  • ahmet

    Kristal ISIS de 1 MHz görünüyor, doğrumudur?

    • Hayır kristal 4 Mhz olacak. Dosyayı kontrol ettim tekrar. Bende başta ayarladığım gibi 4Mhz görünüyor. Sizde nasıl 1Mhz görünüyor çözemedim.

  • ahmet

    devreyi kurdum fakat çalıştıramadım. galiba programı atma kısmında hata yapıyorum. prototip klasöründe anakart, kumanda ve program klasörleri var. bahsettiğin değişikliği yaptım(==). PIC’e hangisini atacağımı bilemedim. kumanda ve anakart devrelerine hangi hex. dosyalarını atacağımı bilemedim. Rica etsem yardımcı olabilirmisin?

    • Şimdi program klasörünün içinde bi proteus dizayn dosyası var. Alıcı- verici isimli. Bu şematik uygulamanın similasyonu.bunu ısıs da çalıştırın ve Alttaki pic e verici programını üsttekine de alıcı programını atıp simülasyonu başlatın. Butonlara basarak motor hareketlerini inceleyin. Düzgün çalışıyor olması gerekiyor. Eğer sizde de düzgün çalışıyor ise baskı devrelerini basabilirsiniz. Alıcı programı “alıcı-a” klasörünün, verici programı, “verici-a” klasörünün içinde. Baskı devresini yapmak isterseniz pcb çizimleri, anakart ve kumanda kalasörlerinde. Bunlar simülasyon için değil. Baskı devre için. Yani burada simülasyon edemezsiniz. Bunları basıp, anakart a takacağınız pic e alıcı programını diğerine vericiyi gömüyorsunuz.

  • ahmet

    Tamam şimdi oldu çok teşekkür ederim 🙂

  • celal

    Yusuf bey ben söylediğiniz alıcı verici yi udea firmasından bulamadım.Bunların yerine Arx34b2 ve Atx34M kullansam programda bir değişiklik yapmak gerekir mi? Teşekkürler..

  • Aldığınız kitin datasheet’ini inceleyin eğer udea nın RF kitleri ile aynı özelliklere ve aynı pinlere sahipse kullanabilirsiniz. Yanlış hatırlamıyorsam udea’nın ki dediğiniz kitlerle aynıydı.

  • kaya kandaz

    motor olarak bildiğimiz oyuncak araba motorumu kullandınız…

  • Kazım Zeybek

    MERHABA YUSUF BEY…..
    Öncelikle bilgi paylaşımınız için teşekkür ederim.Yukarıdaki bilgiler harika ve en can alıcı kısmı ise yardımcı olabileceğinizi ifade etmenizdir.Bunun için ayrıca teşekkür ederim.
    Yusuf bey sizden bir konuda bana yardımcı olmanızı rica edecektim.Şayet yardımcı olurdanız beni çok mutlu edersiniz.
    Bir kaç gün önce 1.5 m uzunluğunda sürat tekne maketi yapmaya karar verdim.Maket yapımına başladım yalnız istediğim nitelikte rf uzaktan kumanda devresini internetten bulamadım.
    Size sormak istediğim konu bu kumanda devresiyle ilgili olarak…
    TEKNE MAKETİNİN UZUNLUĞUNU VE AĞILIĞINI HESAP EDECEK OLURSAK
    ( BOY :1.5m EN:20+20 cm çift gövde AĞIRLIK: 6 KG )
    2 ADET MAKETE UYGUN MOTOR TAKMAK İSTİYORUM ( SÜRATİ İÇİN)
    DEVRE ELEMANLARINDA NASIL BİR DEĞİŞİKLİK YAPMAM GEREK.?
    2. SORUM İSE VERİCİDE KADEMELİ HIZLANDIRMA İSTİYORUM DEVREYİ YAPARKEN VERİCİYE BUNU NASIL EKLEYEBİLİRİM.?

  • Şimdi yazıda anlatılan rf kitinin kapsama alanı yaklaşık 150 metre, fakat siz bu kapsama alanını bir amplifier ya da repeater kullanarak arttırabilirsiniz. Google a 433 , 434mhz amplifier ya da repeater yazarsanız bulabilirsiniz. Makete ne kadar motor takarsanız o kadar çok motor sürücüye ihtiyacınız var. Ayrıca motorların çektiği akım ve güç de önemli. Motor sürücüsünü ona göre tasarlamalısını ya da hazır varsa almanız gerekiyor. Son sorunuz yani motoru kademeli olarak hızlandırmak için de mikrodenwtleyicinin pwm sinyali kullanmanız gerekiyor. Pwm sinyalini bu web sayfasınından ya da google den aratırsanız hakkında bilgiler öğrenebilirsiniz.

  • sefa

    Hocam ileri geri sağ sol tamam da aracı durdurma işlemi nasıl oluyor? Smilasyonda mesela bir kere ileri basıp çekince sürekli ileri gidiyor?

  • Sefa bey durdurmak içinde hareket pinlerinin hepsine low verirseniz durur. Yani bu program sadece örnek. Siz kendiniz programı modüle ederek farklı özellikler ekleyebilir, çıkarabilirsiniz.

  • süleyman

    hocam kumanda devresinde 7805 bağlantıları yanlış değilmi ben kurdum devreyi çalışmadı hem devreboarda hemde baskı devresini yaptım çalışmadı yardım edermisiniz

    • 7805 bağlantısı için sitemizde arama yapabilirsiniz. Ben resimlerde 7805 bağlantısı göremedim.

  • süleyman

    birde ben ARX-ATX SERİSİ ALICI VERİCİ PİYASADA BULAMADIM FS1000A VE MX-RM-5V ALICI VERİCİ KULLANDIM uygun olurmu devre için

  • süleyman

    hocam bu kodlarda sıkıntı var heralde ben devreyi kurdum enerji var devrede çalışıyor ama atılan kodları entegre işlemiyor kodlarda eksiklik mi var bana kodları tekrardan atabilirmisiniz bu arada ben alıcı modül olarak NRX-34U verici modülü de ATX-34S kullandım bunlarla ilgisi varmıdır

    • Hocam kullandığınız Modüllerin datasheetine bakin. Örnek kodlar varsa bu konudaki kodları onlarla değiştirin. Datashetten bulamazsanız internetten arayarak örnek uygulamalar bulmaya çalışın. Muhtemelen konudaki kodlar sizin Modüllere uymuyordur

      • süleyman

        modüllerin hangi özellikleri önemlidir besleme gerilimi mi baud sayısımı frekansımı

        14 Mayıs 2016 09:42 tarihinde Disqus yazdı:

        • Besleme gerilimi önemli ama kodlamayla alakası yok. Baudrate önemli. Seri iletişim için doğru seçilmeli. Kodlamada o kısmı modüllerinize uygun olarak değiştirmeniz lazım. Konu sahibi arkadaş belki daha iyi yardımcı olabilir.

  • SERTKAYA

    projede pic 16f877 yerine ic 16f877a kullansak çalışırmı birde kumanda 1 ve kumanda 2 olarak iki tane proteus çizimi var hangisini kullanacağız