Sla 7062 Step motor hız kontrolü

Başlatan yldzelektronik, 06 Ağustos 2013, 17:24:01

yldzelektronik

Selamlar

Sla7062 kullanarak step motor hız kontrol uygulaması yapmaya çalışıyorum.Step motorun hızını istediğim şekilde kontrol edemiyorum.Pwm frekansını değiştirerek yapmaya çalışıyorum ancak motorun hızı lineer olarak değişmiyor.Sanırım pwm frekansını düzgün arttıramıyorum.Bu entegre ile step motor kontrolü nasıl sağlanır?Bir de pwm frekansını lineer arttırabilmek için nasıl bir yol önerirsiniz?

Not:Şemayı eklemem çok mümkün değil.

Direction pini 1/0 fark etmiyor.
m1:h
m2:h
referance: uygun dirençler bağlı.direk pull up değil

Kod:


#include <16F1825.h>
#device adc=16

#FUSES NOWDT                    //No Watch Dog Timer
#FUSES INTRC_IO                 //Internal RC Osc, no CLKOUT
#FUSES WDT_SW                   //No Watch Dog Timer, enabled in Software
#FUSES NOBROWNOUT               //No brownout reset
#FUSES NOIESO                   //Internal External Switch Over mode disabled
#FUSES NOFCMEN                  //Fail-safe clock monitor disabled
#FUSES PLL_SW                   //4X HW PLL disabled, 4X PLL enabled/disabled in software
#FUSES NOSTVREN                 //Stack full/underflow will not cause reset
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOMCLR                   //Master Clear pin used for I/O

#use delay(int=1000000)

#define M1   PIN_A0
#define Set_Button   PIN_A2
#define M2   PIN_C2
#define Direction   PIN_C3
#define Enable   PIN_C4

#byte PR2 = 0x01B
#byte CCP1L = 0x291
#byte CCP1H = 0x292

unsigned int freq = 0;
unsigned int16 pwm = 0;

void main()
{
   setup_timer_2(T2_DIV_BY_16,freq,16);      //528 ms overflow, 528 ms interrupt

   setup_timer_4(T4_DISABLED,0,1);
   setup_timer_6(T6_DISABLED,0,1);

   setup_ccp1(CCP_PWM|CCP_SHUTDOWN_AC_L|CCP_SHUTDOWN_BD_L);
   set_pwm1_duty((int16)510);
   setup_comparator(NC_NC_NC_NC);// This device COMP currently not supported by the PICWizard
   setup_oscillator(OSC_8MHZ|OSC_INTRC|OSC_PLL_ON,0);

   while(TRUE)
   {
      //TODO: User Code
      if(!input(pin_a2)){                                                          
        freq++;
        //PR2 = freq;
        setup_timer_2(T2_DIV_BY_16,freq,16);
         
      }
      if(!input(pin_a3)){
         pwm ++;
         /*calc_pwm = (PR2 + 1) * pwm / 25;
         CCP1CON.pwm1 = calc_pwm >> 8;
         CCP1CON.pwm2 = calc_pwm & 0x00ff;
         CCP1L = calc_pwm >> 2;*/
         set_pwm1_duty((int16)pwm);
      }
   }

}


Ekleme:

PR2 rege direk değer atadığımda daha sağlıklı sonuçlar alıyorum ancak o da istediğim gibi değil.Bu kez de pwm duty cycle yi değiştirmem gereken durumlar oluyor.Frekans ile duty cycyle için birlikte değişebilecek bir formül oluşturamadım.Ne önenirsiniz?
Kişinin başına gelen hayır Allah'tandır. Kişinin başına gelen şer nefsindendir. Nefislerimizle kendimize zulüm ediyoruz.

skara1214

kullandığınız motorun özellikleri sla nın datasheetinde yazanlardan çok daha önemli.Ayrıca hızlanmak için rampalama önerilir.
Herkes ölür ama herkes gerçekten yaşamaz

yldzelektronik

Alıntı yapılan: skara1214 - 06 Ağustos 2013, 20:26:43
kullandığınız motorun özellikleri sla nın datasheetinde yazanlardan çok daha önemli.Ayrıca hızlanmak için rampalama önerilir.

Rampalanma ile ilgili örnek verebilir misiniz?

Bu arada sorunumu ccp modülünün frekansını değiştirmeye çalışarak değil de pini toggle etme süreleriyle oynayarak çeşitli frekanslarda clock elde ederek çözdüm.Şuan motor gayet sağlıklı şekilde dönüyor.İstediğim gibi kontrol edebiliyorum.Tek sorunum motorumun aşırı derecede ısınıyor olması.Motor boşta iken düşün devirde belki en düşük devirde 5a e yakın akım çekiyor.Ve müthiş ısınıyor.Bu sorunu nasıl aştınız?
Kişinin başına gelen hayır Allah'tandır. Kişinin başına gelen şer nefsindendir. Nefislerimizle kendimize zulüm ediyoruz.

skara1214

5a  olduğuna eminmisiniz yanlış hatırlamıyorsam sla 5 a e kadar vermiyor(nasıl stabil çalışıyor o akımda?).Referans direncinizi doğru hesapladığınızdan emin olun. rampalama için ilk başta motoru yavas kaldırıp zamanla hızlandırarak yapıyorsunuz.
Herkes ölür ama herkes gerçekten yaşamaz

yldzelektronik

Alıntı yapılan: skara1214 - 23 Ağustos 2013, 17:16:35
5a  olduğuna eminmisiniz yanlış hatırlamıyorsam sla 5 a e kadar vermiyor(nasıl stabil çalışıyor o akımda?).Referans direncinizi doğru hesapladığınızdan emin olun. rampalama için ilk başta motoru yavas kaldırıp zamanla hızlandırarak yapıyorsunuz.

O akımlara çıktığına eminim.Ancak sorunun kaynağı sens dirençleriydi.Sorunu tamamiyle çözdüm.Şuan için gayet stabil şekilde çalışıyor.Bir sıkıntı yok.
Kişinin başına gelen hayır Allah'tandır. Kişinin başına gelen şer nefsindendir. Nefislerimizle kendimize zulüm ediyoruz.