16F1937 ile VID29 step motoru sürme sorunu

Başlatan moksan, 16 Ekim 2015, 09:58:58

moksan

PIC16F1937 ile VID29 step motorunu sürmek istiyorum.RB0 pinine sensörden digital veri gelmektedir.Şuan için bu önemli değil.Ben o veriyi timer1 kesmesinden ayarlayıp frekansa çeviriyorum.Yazdığım kodda işlemler bunun için.Yani yapmak istediğim frekans metreden gelen frekans değerini arttırıp azaltıp moturu istediğim şekilde döndürmek istiyorum.Mesela 100 Hz de 30 derece ileri 50 Hz de 15 derece geri gelsin.Fakat motorda hafif hareketlenmeden sonra bir tepki alamamaktayım.Motor sürücüsüz çalışmaktadır.Datasheetinde gerekli açıklamalar var.Motorun datasheetinde adım sayısını göremedim.0-315 derece arasında microstep mod özelliği olan bir tür motor.Fakat ben Partial-Step Driving Mode yani 1/3 derecede kullanıcam.Devrenin isis simulasyonunu ve kodlarını paylaşıyorum.CCS C de yazılmıştır

#include <main.h>
#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD
#use delay(clock=20M)
#use fast_io(b)
#use fast_io(c)


unsigned long long int t,yeni=0;
float f;
const int geri[]={0x06,0x02,0x0B,0x09,0x0D,0x04};
const int adim[]={0x04,0x0D,0x09,0x0B,0x02,0x06};
int eski=0
void main()
{  


 
  setup_timer_1(T1_INTERNAL | T1_DIV_BY_8);
  enable_interrupts(INT_TIMER1);
  enable_interrupts(INT_EXT);
  enable_interrupts(GLOBAL);

   set_timer1(0);
   set_tris_c(0x00);
   set_tris_b(0x03);
   
   output_c(0);
   output_b(0);

while(1)
 {

f=t*0.0000016;
f=1/f;
f=f/5;
yeni=f;

if(yeni>eski)
   {
   while(eski<yeni)
      {

      for(i=0;i<=6;i++)
      {
         output_c(adim[i]);
         delay_ms(30);
      }
      eski++;
      }
   }

if(eski>yeni)
   {
  while(eski>yeni)
     {

      for(i=0;i<=6;i++)
      {
         output_c(geri[i]);
         delay_ms(30);
      }
      eski--;
     }    
   } 
 }
}

#int_ext
void timer1_kesme()
{
disable_interrupts(GLOBAL);
t=get_timer1();
set_timer1(0);
enable_interrupts(GLOBAL);
}

#int_timer1
void ext_kesmesi()
{
}

ferit06

#1
"Fakat motorda hafif hareketlenmeden sonra bir tepki alamamaktayım.Motor sürücüsüz çalışmaktadır." demişsiniz. PIC in şemadaki gibi  doğrudan motoru çalıştırabileceğini düşünmüyorsunuz değil mi?

skara1214

Herkes ölür ama herkes gerçekten yaşamaz

moksan

ferit06 bey yanıtız için teşekkür ederim.Fakat skara arkadaşın dediği gibi motor 15 ile 20 mA de çalışabilmektedir.Motorun datasheetini paylaşıyorum.Motor VID29-02 http://guy.carpenter.id.au/gaugette/resources/vid/20091026113525_VID29_manual_EN-080606.pdf

moksan

ferit06 bey yanıtız için teşekkür ederim.Fakat skara arkadaşın dediği gibi motor 15 ile 20 mA de çalışabilmektedir.Motorun datasheetini paylaşıyorum.Motor VID29-02 http://guy.carpenter.id.au/gaugette/resources/vid/20091026113525_VID29_manual_EN-080606.pdf
İletiyi düzenle

ferit06

#5
15-20 mA ile çalışabilir diyorsunuz. Yalnız motorun endüktif bir yük olduğunu da biliyorsunuz. Yine de çalışabilir diyorsanız, devrenize motor yerine LED bağlayarak(4 çıkışa da) çıkışı gözlemleyin istediğiniz gibi çalışıyormu ona bakın. Motor bağlantılarını da bir kontrol edin hafif hareketlenmeden sonra bir hareket yok ise bağlantı yanlış olabilir.