Arama butonu
Bu konudaki kullanıcılar: 1 misafir, 1 mobil kullanıcı
18
Cevap
8404
Tıklama
0
Öne Çıkarma
Robot kol Yapımı...
T
16 yıl
Er
Konu Sahibi

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.

DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.

Üye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.

Üye Ol Şimdi Değil



S
16 yıl
Binbaşı

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..



< Resime gitmek için tıklayın >


Bu mesaja 1 cevap geldi.
T
16 yıl
Er
Konu Sahibi

serkanc ilgin için teşekkürler ben devreyi isis de çizmeye çalışiyim bakalım becerebilecekmiyim.


Bu mesaja 1 cevap geldi.
S
16 yıl
Binbaşı

Bu resimdeki baglanti 5 kabloluya gore yapilmis daha aciklayici olabilir.. DB25 yerine direk olarak PIC'e giris yaparsiniz.. ULN2003'le gercekten kolay bir islem..

< Resime gitmek için tıklayın >


Bu mesaja 1 cevap geldi.
T
16 yıl
Er
Konu Sahibi

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.


Bu mesaja 1 cevap geldi.
L
16 yıl
Binbaşı

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)


Bu mesaja 1 cevap geldi.
T
16 yıl
Er
Konu Sahibi

Paylaşım için sağol Liu Kang ama istediğimi burada bulamadım.


Bu mesaja 1 cevap geldi.
T
16 yıl
Er
Konu Sahibi

S
16 yıl
Binbaşı

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.


Bu mesaja 1 cevap geldi.
T
16 yıl
Er
Konu Sahibi

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?


Bu mesaja 1 cevap geldi.
S
16 yıl
Binbaşı

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.


Bu mesaja 1 cevap geldi.
T
16 yıl
Er
Konu Sahibi

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.


Bu mesaja 1 cevap geldi.
S
16 yıl
Binbaşı

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);
}
}

< Resime gitmek için tıklayın >


Bu mesaja 1 cevap geldi.
M
16 yıl
Yarbay

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 >
Bu mesaja 1 cevap geldi.
S
16 yıl
Binbaşı

M
16 yıl
Yarbay

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.


Bu mesaja 1 cevap geldi.
S
16 yıl
Binbaşı

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...


Bu mesaja 1 cevap geldi.
M
16 yıl
Yarbay

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


Bu mesaja 1 cevap geldi.
S
16 yıl
Binbaşı

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 :)



DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.