Şimdi Ara

Robot kol Yapımı...

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
19
Cevap
0
Favori
8.392
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Arkadaşar daha öncede konu açmıştım ama konuyu uzattılar ve dağıttılar doğal olarak konu silindi.Daha önce o konuylailgilenenler biliyor ne yapmak istediğim gösteri amaçlı bir robot kol projesi yapmak istiyorum.Anadolu lisesi 3. sınıf öğrencisiyim doğal olarak elektronik bilgim zayıp nobby olarak ilgileniyorum ben bu konuyu ilk açtığımda PIC 'den anlamıyorumdum yaklaşık 1,5 haftadır basic dili üstünde çalışıyorum az çok birşeyler öğrendim kendimi gelştiriyorum.Robot kolu 3 eksenli olacak ve ben step motor kullanmaya karar verdim yapmışken düzgün bişe yapalım dedim baştan sağmaolmasın.Step kontrolüiçin devre araştırıyorum 3 adet step motoru kontrol edebilmem lazım PIC16f877 bu işe uygun galiba birde ULN2003 de kullanılabiliyorumuş.Arkadaşlar sizden istediğim bana isis de basit 3 adet step motoru kontrol edebileceğim bir devre oluşturmanız step motorlar 5 uçlu olacvak ve her biri için 2 adet tuş olacak örneğin 1. tuşa bastığımda 1. motor saat yönnde 1 adım atacak ve duracak 2. tuşa bastığımda tam ters yönde 1 tur atacak ve duracak diğer motorlar içinde aynı şey geçerli bana isis de böyle bir devre çizip eklerseniz sevinirim.
    Basic dilini az çok biliyorum eğer bana programdaki motorları nasıl kontrol edeceğim hakkında bilgi verirseniz yada örnek bir program yazabilirseniz bas. dosyası ile birlikte ben komutlara bakarak ne yapmam gerektiğini anlamaya çalışırım ve kendim yazarım programımı diye düşünüyorum.Yardımlarınızı bekliyorum.
    Birde Micro code studio programı kullanıyorum ve sadece 16f628 için kod yaza biliyorum bun nasıl halledebilirim.Başka bir program mı yüklemeliyim.
    Özellikle ilk açtığım konuda bana yardımcı olan abilerimin yardımını bekliyorum bana sen PIC basic öğren öyle yaparız demişler di bende uğraştım çabaladım az çok öğrendim.







  • Oncelikle Step motorunuzun 5 ucundan ortak olan ucu tayin edin. Bu ortak ucu bulmak icin Uclar arasi direnci olcun, bu olcumler sirasinda uclardan biri diger butun uclarla ayni dirence sahiptir, iste bu uc ortak uctur.. O ortak ucu Sekilde goruldugu gibi 12V veya sizin step motora gore kac V'sa baglayin.. ULN2003'un de COM ucunu da +12V'a baglayin. Ayrica motor icin kullandiginiz gerilimin GND ayagiyla PIC'in GND ayagini birlestirin eger ki ikisi birbirinden bagimsizsa.. Burda COM ucuna baglanan 12V beslemesi ile PIC'in beslemesi farkli seylerdir..
    Sonrasinda B portundaki uclari da sekilde gibi bagladaiktan sonra, sira geldi dogru sirayi bulmayaaa..
    Step motor bir adim atmasi icin Sirayla Port bacaklarini Lojik 1 yapacaksin tek fazli sureceksen.. Yani sira dogruysa su sekilde olacak
    PORTB = 0b1000 'Baslangic
    PORTB = 0b0100 '1.Adim
    PORTB = 0b0010 '2. Adim
    PORTB = 0b0001 '3. Adim

    16f628A kullanirsan MCLR ve OSC baglantilarini yapmadan da calistirabilirsin PIC'i... Bunun icin daha once bir baslik acmistim... Takildigin yer olursa sorarsin..



     Robot kol Yapımı...




  • serkanc ilgin için teşekkürler ben devreyi isis de çizmeye çalışiyim bakalım becerebilecekmiyim.
  • Bu resimdeki baglanti 5 kabloluya gore yapilmis daha aciklayici olabilir.. DB25 yerine direk olarak PIC'e giris yaparsiniz.. ULN2003'le gercekten kolay bir islem..

     Robot kol Yapımı...
  • Peki arkadaşlar ben bu devreyi aşağıda belirttiğim gibi nasıl oluşturacağım.pic16f628 kullanarak ve uln 2003 ile
    3 adet ayrı devre yaparım herbir step motor için tam olarak ihtiyacım olan nasıl bir komut dizisi yazmalıyımki her tuşa basışım ile motoru adım adım saat yönünde vede diğer tuşla adım adım ter yönde döndürebileyim.
  • Eskiden step motorlarla deney yapmak için bir program yazmıştım, belki yardımcı olur:

    http://www.mediafire.com/?rnjq5ik3gkl

    (Dos programı, paralel port için)
  • Paylaşım için sağol Liu Kang ama istediğimi burada bulamadım.
  • Yapay Zeka’dan İlgili Konular
    Su altı radar yapımı ardunio
    2 yıl önce açıldı
    Daha Fazla Göster
  • http://www.4shared.com/file/214341377/da3da22d/deneme_2_.html
    http://www.4shared.com/file/214342935/4f7d2c3d/STEP3.html
    Arkadaşlar elimde böyle bir devre var bunun basic kodlarını yazabilecek olan varmı ??
  • Hocam basic kodlari cok zor degil ki,.. Hobby olarak yapiyorsaniz denemeniz gerekiyor. Kimse size hazir kod yazmaz..
    Oncelikle semadaki gibi 1 tanesini breadboardda baglayin ve bir motoru dondurun ornegin her 1 saniyede bir tur seklinde
    Diyelim ki Portb0-3 portlarina dogru sirayla baglarsaniz.. yazdigim sirayla dondurebilirsiniz.
  • Peki ben yukarda paylaştığım devrede 16f84a kullanılıyor bunun için mclr ve osc bağlantıları gerekmiyormu?
    Bu devrede uln2003 kullanılmamasının sebebi nedir?
  • Simdi 16f84'un Internal Osc'si olmadigi icin mecburen disardan baglamak zorundasin...
    ULN2003'u kullansan neden kullanilmayacagini anlayacaksin :) breadboard'a kurup devre deneseniz mantikli olur. Eger elinizde 16f628A varsa OSC ve MCLR kullanmadan nasil kuracaginizi anlatirim, en azindan ufak birkac baglantidan kurtulursunuz.
  • Elimde şuanda gerekli malzemler yok devreye göre sipariş vereceğim yeni yeni ilgileniyorum bu programlama işi ile.Bir devre tasarliyim ona göre alırım malzemeleri dedim o yüzden malzeme satın almadım okuduğum yazılardada hemen malzeme almayın die uyarıyorlardı boşuna para harcarsınız diyorlardı ilk hevesle bende bişey satın almadım.
  • Iyi ama almazsaniz da bir yerden baslayamazsiniz.. Ben evde 16f628A ile step motor devresi kurdum... mikroC'de kodlar asagidaki gibi
    Config Dosyasinda da
    Oscillator: INTOSC:I/O on RA6/OSC2/CLKOUT, I/O on RA7/OSC1/CLKIN
    Master Clear Enable : Disable
    Digerleri de Off ve Disable olacak
    Frekans olarak 4 MHZ sececeksiniz...
    Breadboard'dan da resim aldim, baglantilar da bir zorluk yok zaten... 7805 kullandim, ama siz 5V veriyorsaniz direk baglayabilirsiniz..
    Video da eklerim calismasini gosteren...

    unsigned int i;
    unsigned short k;

    void main() {
    PCON.OSCF=1;
    CMCON=7;
    TRISB=0;
    PORTB=0;

    while(1)
    {
    for(i=1;i<11;i++)
    {
    PORTB=8;
    delay_ms(15);
    PORTB=2;
    delay_ms(15);
    PORTB=4;
    delay_ms(15);
    PORTB=1;
    delay_ms(15);
    }
    PORTB=0;
    delay_ms(1000);
    }
    }

     Robot kol Yapımı...




  • Biraz beklersen sana kod (ccs c) ve isis'te devre şeması hazırlayacağım. Ben yapana kadar sen de şurayı okursan iyi olurhttp://forum.donanimhaber.com/m_34905282/tm.htm

    http://en.wikipedia.org/wiki/Stepper_motor
    http://ams2000.com/stepping101.html
    http://www.cs.uiowa.edu/~jones/step/
    http://www.electojects.com/motors/stepper-motors-1.htm
    http://en.nanotec.com/steppermotor_animation.html

    Tam adım sürme
    Adım - Uç1 - Uç2 - Uç3 - Uç4
    1 ----- 1 --- 0 --- 0 --- 1
    2 ----- 1 --- 1 --- 0 --- 0
    3 ----- 0 --- 1 --- 1 --- 0
    4 ----- 0 --- 0 --- 1 --- 1

    Yarım adım sürme
    Adım - Uç1 - Uç2 - Uç3 - Uç4
    1 ----- 1 --- 0 --- 0 --- 0
    2 ----- 1 --- 1 --- 0 --- 0
    3 ----- 0 --- 1 --- 0 --- 0
    4 ----- 0 --- 1 --- 1 --- 0
    5 ----- 0 --- 0 --- 1 --- 0
    6 ----- 0 --- 0 --- 1 --- 1
    7 ----- 0 --- 0 --- 0 --- 1
    8 ----- 1 --- 0 --- 0 --- 1



    < Bu mesaj bu kişi tarafından değiştirildi metal can -- 6 Şubat 2010; 16:40:16 >




  • http://www.youtube.com/watch?v=NFKw6BlKThg

    Bakin burda da calisir haldeki videosu
  • Aşağıda kodlar ve (*.C, *.HEX, *.DSN) dosyalarının bulunduğu bağlantı verdim. Gözden geçir şöyle bir anlamadığın yeri sorarsın ya da değiştirmemi istediğin bir yer olursa söylersin düzeltmeye çalışırız. Bağlantı için şifre isterse ytu-ehm yazarsın. Aceleyle bu kadar oluyor. yanlışımız varsa affola.
    #include <16f877.h>      

    // Denetleyici konfigürasyon ayarlari
    #fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD

    #use delay (clock=4000000) // Gecikme fonksiyonu için kullanilacak osilatör frekansi belirtiliyor.

    // Giris ve çikis pinlerine isim ataniyor
    #define buton1_ileri pin_a0
    #define buton1_geri pin_a1
    #define buton2_ileri pin_a2
    #define buton2_geri pin_a3
    #define buton3_ileri pin_a4
    #define buton3_geri pin_a5

    int i1=0, i2=0, i3=0, hiz=10;

    const int yarim_adim1[]={0x01,0x03,0x02,0x06,0x04,0x0C,0x08,0x09}; // Step motor yarim adim dönüs adimlari
    const int yarim_adim2[]={0x01,0x03,0x02,0x06,0x04,0x0C,0x08,0x09};
    const int yarim_adim3[]={0x01,0x03,0x02,0x06,0x04,0x0C,0x08,0x09};

    /********* ANA PROGRAM FONKSIYONU********/

    void main ( )
    {
    setup_psp(PSP_DISABLED); // PSP birimi devre disi
    setup_timer_1(T1_DISABLED); // T1 zamanlayicisi devre disi
    setup_timer_2(T2_DISABLED,0,1); // T2 zamanlayicisi devre disi
    setup_adc_ports(NO_ANALOGS); // ANALOG giris yok
    setup_adc(ADC_OFF); // ADC birimi devre disi
    setup_CCP1(CCP_OFF); // CCP1 birimi devre disi
    setup_CCP2(CCP_OFF); // CCP2 birimi devre disi

    output_b(0x00);
    output_c(0x00);
    output_d(0x00);

    while(1) // Sonsuz döngü
    {

    if (input(buton1_ileri)) // ILERI Butonuna basildi ise
    {
    i1++; // i1 degiskenini 1 arttir
    if (i1==8) // i1 degiskeni 8 olunca i degeri 0 olsun
    i1=0;
    output_b(yarim_adim1[i1]); // Step motor 1 adim ileri
    while(input(buton1_ileri));// Basilan tus birakilana kadar bekle
    delay_ms(hiz); // Adimlar arasi bekleme süresi
    }

    if (input(buton1_geri)) // GERI Butonuna basildi ise
    {
    i1--; // i degiskenini 1 azalt
    if (i1==-1) // i degiskeni -1 ise i degeri 7 olsun
    i1=7;
    output_b(yarim_adim1[i1]); // Step motora 1 adim geri
    while(input(buton1_geri)); // Basilan tus byrakilana kadar bekle
    delay_ms(hiz); // Adymlar arasy bekleme süresi
    }

    if (input(buton2_ileri)) // ILERI Butonuna basildi ise
    {
    i2++; // i1 degiskenini 1 arttir
    if (i2==8) // i1 degiskeni 8 olunca i degeri 0 olsun
    i2=0;
    output_c(yarim_adim2[i2]); // Step motor 1 adim ileri
    while(input(buton2_ileri));// Basilan tus birakilana kadar bekle
    delay_ms(hiz); // Adimlar arasi bekleme süresi
    }

    if (input(buton2_geri)) // GERI Butonuna basildi ise
    {
    i2--; // i degiskenini 1 azalt
    if (i2==-1) // i degiskeni -1 ise i degeri 7 olsun
    i2=7;
    output_c(yarim_adim2[i2]); // Step motora 1 adim geri
    while(input(buton2_geri)); // Basilan tus byrakylana kadar bekle
    delay_ms(hiz); // Adymlar arasy bekleme süresi
    }

    if (input(buton3_ileri)) // ILERI Butonuna basildi ise
    {
    i3++; // i1 degiskenini 1 arttir
    if (i3==8) // i1 degiskeni 8 olunca i degeri 0 olsun
    i3=0;
    output_d(yarim_adim3[i3]); // Step motor 1 adim ileri
    while(input(buton3_ileri));// Basilan tus birakilana kadar bekle
    delay_ms(hiz); // Adimlar arasi bekleme süresi
    }

    if (input(buton3_geri)) // GERI Butonuna basildi ise
    {
    i3--; // i degiskenini 1 azalt
    if (i3==-1) // i degiskeni -1 ise i degeri 7 olsun
    i3=7;
    output_d(yarim_adim3[i3]); // Step motora 1 adim geri
    while(input(buton3_geri)); // Basilan tus birakilana kadar bekle
    delay_ms(hiz); // Adimlar arasi bekleme süresi
    }
    }
    }



    4shared:http://www.4shared.com/file/216271398/cf622a6e/Step_Motor.html

    serkanc sen de inceleyip yorum eklersen sevinirim.




  • Elinize saglik metalcan guzel olmus kodlar. Yalniz INTOSC ve MCLR disable yaparsan iyi olur fuses kisminda... RA5'i kullanmissin ki MCLR disable olmazsa o ayak reset butonu olur... Bir de devreyi nasil kurdun bakamadim. Ama dugmeye basilinca 1 olmasi yerine 0 olmasi daha iyi olur, cunku RA4 ayagi acik kollektordur, ve pull-up edilmezse kararsiz davranir.. O zaman da kodlar input basina unlem koyman yeterli...
  • quote:

    Orijinalden alıntı: serkanc

    Elinize saglik metalcan guzel olmus kodlar. Yalniz INTOSC ve MCLR disable yaparsan iyi olur fuses kisminda... RA5'i kullanmissin ki MCLR disable olmazsa o ayak reset butonu olur... Bir de devreyi nasil kurdun bakamadim. Ama dugmeye basilinca 1 olmasi yerine 0 olmasi daha iyi olur, cunku RA4 ayagi acik kollektordur, ve pull-up edilmezse kararsiz davranir.. O zaman da kodlar input basina unlem koyman yeterli...






    Yorumun için teşekkürler. Düzeltmelerini arkadaş sanırım devreye kendi uygulayabilir. Benim bu konu dışında merak ettiğim imzandaki glcd projesini nasıl yaptın? Şu sıralar ben de glcd ile uygumalamar yapmak istiyorum. şu glcd den alayım diyorumhttp://www.dorukanstore.com/index.php?do=catalog/product&pid=2365 döküman, tavsiye paylaşabileceğin birşeyler varsa bu konuda çok sevinirim




  • quote:

    Orijinalden alıntı: metal can


    quote:

    Orijinalden alıntı: serkanc

    Elinize saglik metalcan guzel olmus kodlar. Yalniz INTOSC ve MCLR disable yaparsan iyi olur fuses kisminda... RA5'i kullanmissin ki MCLR disable olmazsa o ayak reset butonu olur... Bir de devreyi nasil kurdun bakamadim. Ama dugmeye basilinca 1 olmasi yerine 0 olmasi daha iyi olur, cunku RA4 ayagi acik kollektordur, ve pull-up edilmezse kararsiz davranir.. O zaman da kodlar input basina unlem koyman yeterli...






    Yorumun için teşekkürler. Düzeltmelerini arkadaş sanırım devreye kendi uygulayabilir. Benim bu konu dışında merak ettiğim imzandaki glcd projesini nasıl yaptın? Şu sıralar ben de glcd ile uygumalamar yapmak istiyorum. şu glcd den alayım diyorumhttp://www.dorukanstore.com/index.php?do=catalog/product&pid=2365 döküman, tavsiye paylaşabileceğin birşeyler varsa bu konuda çok sevinirim


    GLCD'inin kutuphanesini picbasic'de kendim yazdim.. Pixel Pixel yazim yaptim.. mikroC tavsiye ederim, icinde GLCD kutuphanesi var.. Orda rahatlikla yaparsiniz.. Sanirim CCS kullaniyorsunuz, sizi fazla zorlamaz..
    Dorukan'daki test boardunu kullaniyorum ben de, expkit.. Tavsiye ederim. Yerli malidir :)




  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.