uln2003 ıle step motor kontrolu

Başlatan toprak0258, 27 Aralık 2012, 15:21:44

toprak0258

merhabalar...
ccs c de ogrenme amacli bazi ornekleri inceliyip kendim farkli ornekleri deniyorum.....elimde bulunan ornekte.

#include <16f877.h>   
#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD

#use delay (clock=4000000)

#define buton_ileri pin_a0
#define buton_geri  pin_a1

int i=0,hiz=10;

const int yarim_adim[]={0x01,0x03,0x02,0x06,0x04,0x0C,0x08,0x09};

/********* ANA PROGRAM FONKSİYONU********/

void main ( )
{
   setup_psp(PSP_DISABLED);       
   setup_timer_1(T1_DISABLED);     
   setup_timer_2(T2_DISABLED,0,1);
   setup_adc_ports(NO_ANALOGS);   
   setup_adc(ADC_OFF);           
   setup_CCP1(CCP_OFF);       
   setup_CCP2(CCP_OFF);         

   output_b(0x00);

   while(1)
   {

      if (input(buton_ileri))
      {
         output_b(yarim_adim);
         while(input(buton_ileri));
         delay_ms(hiz);           

         if (i==7)               
            i=-1;
         i++;                     

      }

      if (input(buton_geri))
      {
         if (i==0)               
            i=8;
         i--;                     
         output_b(yarim_adim);
         while(input(buton_geri));
         delay_ms(hiz);           
      }
   }
}
bu sekildedir ve sorunsuz bir sekilde calisiyor....ama yukarida bulunan const int yarim_adim[]={0x01,0x03,0x02,0x06,0x04,0x0C,0x08,0x09}; bolumdeki rakamlari degistirdigimde motorun hareketlerinde sacmalama oluyor....acaba bu rakamlari neye gore belirliyoruz...kullandigimiz motora gore degisirmi yoksa hep bu duzene goremi yaziyoruz....eminim bilgisi olan arkadas vardir...
simdiden tesekurler.....
Bilgi paylaşıldıkca değer kazanır.

Kabil ATICI

Bu rakamların binary (ikilik sayı) sistemindeki karşılıklarına bakarsan daha iyi olur. Çünkü bu sayılar yarım adım motor çıkışı için hangi port'daki hangi bacakların aktif olacağını belirliyor.

Yarım adım sürme durumunda motorun hangi bacakları sırayla enerjilenmesi gerekiyorsa buradaki sayı dizisi enerjilenmesi gereken o bacakları temsil etmekte.
ambar7

toprak0258

merhabalar....
bende oyle dusundum ama ikli karsiliklarinada baktim...ileride baktimki bir yerde yine sorun var ...acaba hic sorun olmadan bir siralama yapabilirmiyiz...bu konuda biraz daha aciklayici bilgi verebilirmisin....
tesekurler...
Bilgi paylaşıldıkca değer kazanır.

mehmet

#3
Burada  bir şeyler var, umarım yardımcı olur.
MCU ve C kodlarına fazla takılmadan, adımlar nasıl
yapılıyor inceleyebilirisin...

Saygılar...

EK: Burada da istediğin motor tipini
seçerek adımları inceleyebilirisin...
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr

EMP_Otto

öncelikle iyi aksamlar.{0x01,0x03,0x02,0x06,0x04,0x0C,0x08,0x09} bu rakamlar step motorun yarım adım atması için gerekli pinleri 1 yada 0 yapar.
0x01=b portunun degerini 00000001 yapar
0x03=b portunun degerini 00000011 yapar
0x02=b portunun degerini 00000010 yapar
Zaten 0x01 demek hexadesimal gösterindir ve x ten sonraki her rakam 4 bit ile ifade edilir.
Step motor tam adım ve yarım adım sürülür.Bu kodlar yarım adım içindir.
İnsallah yardımcı olabilmişimdir.
Kolay gelsin...
Bu işler zordur,özveri ister...

toprak0258

#5
merhabalar...
basta mehmet arkadas olmak uere herkese tesekurler...verılen bılgılerden bır cok örnek yaptım sorun yasanmıyor...bu yarım adım noktasında 0x0c noktasına kadar sorun cıkmıyor acaba bende her seferınde sadece oraya kadar kulansam cok sorun olurmu ...ben baktım bır sorun gözukmuyor....bırde bu motorların guc durumlarına gore fıyat ve özelıklerını nerlerde bulabılırım...guc durumları kuvet x kol uzunlugumudur...
tesekurler ....selamlar....

mesaj birleştirme:: 29 Aralık 2012, 10:02:17

merhabalar....
ılk verdıgım programda ve yapılan yazılımlarda 0x01,0x03,0x02,0x04, den soonra 0x06 geliyordu ve buda motoru bir adim geriye aliyordu bende onun yerine 0x0A yazdim o durumda motor konumunu koruyoor ....ayrica 0x0C den sonra gelen 0x08 de de motor iki adim atliyordu onun yerine 0x0D yazdim simdi daha istikrarli gozukuyor...tek sorun 0x02 den sonra 0x04 geldigi icin motor iki adim ilerliyor onada bir cozum bulamadim hepsini denedim olmuyor.....
selamlar....
Bilgi paylaşıldıkca değer kazanır.