Haberler:

Foruma Resim Yükleme ve Boyut Sınırlaması ( ! )  https://bit.ly/2GMFb8H

Ana Menü

pic ile 8 servo motor kontrolü..

Başlatan gambit1244, 04 Eylül 2011, 23:15:59

gambit1244

iyi geceler arakdaslar bir sorunla karşılaştım ama anlam veremedim smdi ccs c serdar cicegin orneklerinde rc *servo motor kontrolü devresini açtım 3 tane motor ile uygulama var ben aynı satırları kopyalayarak 8 motora cıkartıyorum proteusta fakat biraz sapıtma oluyor motorlarda, sizce bunun nedeni ne olabilir satır ekledigim için pvm vuruşlarımı degişiyor acaba nasıl bir yol izleyebilirim sizce farkedermi 3 motor 8 motor?
teşekkürler.
[email]tufan_ozbek@hotmail.com[/email] Yesterday is history. Tomorrow is a mystery. Today is a gift aslında bütün mesele bu.

enigmagazi

Yanılmıyosam çiçek diziden adımları saydırıyodu tahminim bu diziden secilen adımların farklı olması olabilr yani adım başına saydırılan değişken her stepte farklı pozisyondan başlamasına neden olabilir ozamnda sapıtır.

gambit1244

off cok ozür dilerim ustam ya step degil nasıl olduysa oyle cıkmış agzımdan rc servo uygulaması demek istemiştim cok özür dilerim.
servonun calışmasını iyice inceledim ve birde şoyle bir saçmalık oluyor şimdi -90 = 8       +90=18 ya
ben 5 motor daha ekleyince  -90 yapmak için 8 degilde 1 yapmam gerekiyor duty yi
cok mantıksız geldi degişmesi aksam programı ve .dsn dosyasını zipleyip upload edeyim
[email]tufan_ozbek@hotmail.com[/email] Yesterday is history. Tomorrow is a mystery. Today is a gift aslında bütün mesele bu.

enigmagazi

Alıntı yapılan: gambit1244 - 06 Eylül 2011, 10:00:05
off cok ozür dilerim ustam ya step değil nasıl olduysa oyle cıkmış agzımdan rc servo uygulaması demek istemiştim cok özür dilerim.
servonun calışmasını iyice inceledim ve birde şoyle bir saçmalık oluyor şimdi -90 = 8       +90=18 ya
ben 5 motor daha ekleyince  -90 yapmak için 8 değilde 1 yapmam gerekiyor duty yi
cok mantıksız geldi degişmesi aksam programı ve .dsn dosyasını zipleyip upload edeyim
Sorun kesmeyle ilgili olabilir. o örneği arkadaşıma yapmıştım yanılmıyosam kesmeyle kontrol ediliyodu ama kodu gormek gerek.

gambit1244

evet evet kesme ile kontrol ediliyor  ekleme satırlarını yapınca (fazla motor için) kesme fonksiyonunun içine ekliyorum kesin oyüzden sapıtıyor ama mantıgını anlamadım aksam dosyayı upload ederim ilgilenirseniz cok memnun olurum gerçekten...
[email]tufan_ozbek@hotmail.com[/email] Yesterday is history. Tomorrow is a mystery. Today is a gift aslında bütün mesele bu.

jozzef

Ilk defa servo sürüyorsan, kesme yerine delay komutu ile direk sür, mantığı tam otursun ondan sonra kesmeleri kullanırsın. İkinci nokta orda kullanılan servonun 0-180 pals değerleri senin kullandığın servo ile aynı olmayabilir (yüksek olanakla değildir)
3 motor için yapılan işlemi 8e çıkarmanın herhangi bir sorun oluşturmayacağını düşünüyorum.
Daha açık olmam gerekirse:

// Konfigürasyon Ayarları

#include <16f877A.h>     // Kullanılacak denetleyicinin başlık dosyası tanıtılıyor.

#fuses HS,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD // Denetleyici konfigürasyon ayarları

#use delay(clock=20000000)   // Gecikme fonksiyonu için kullanılan osilatör frekansı belirtiliyor
#use fast_io(a)

// Değişkenler
int i;

// Ana Fonksiyon
void main ()
{
   setup_psp(PSP_DISABLED);        // PSP birimi devre dışı
   setup_spi(SPI_SS_DISABLED);     // SPI birimi devre dışı
   setup_timer_1(T1_DISABLED);     // T1 zamanlayıcısı devre dışı
   setup_timer_2(T2_DISABLED,0,1); // T2 zamanlayıcısı devre dışı
   setup_adc_ports(NO_ANALOGS);    // ANALOG giriş yok
   setup_adc(ADC_OFF);             // ADC birimi devre dışı
   setup_CCP1(CCP_OFF);            // CCP1 birimi devre dışı
   setup_CCP2(CCP_OFF);            // CCP2 birimi devre dışı
   setup_comparator(NC_NC_NC_NC);  // Karşılaştırıcı devre dışı
  
   set_tris_a(0x00);
   output_low(pin_a1);
   while(1)
   {
      for(i=0;i<100;i++) // 100*20ms=2sn boyunca belirttiğim konumda kalır
      {
      output_high(pin_a1);
      delay_us(550); // Benim motorum için 0.55mslik pulse 0 dereceye götürüyor
      output_low(pin_a1);
      delay_us((20000-550));
      }
      for(i=0;i<100;i++)
      {
      output_high(pin_a1);
      delay_us(2500); 2.5mslik pulse 180 dereceye götürüyor
      output_low(pin_a1);
      delay_us(20000-2500);
      }  
   }
}


gambit1244

#6
sabah ilk iş deniycem bu arada ben simulasyonda sıkıntı yaşıyorum devre henüz yok keşke derdim uyum sorunu olsa :) cok teşekkür ederim ilgin için

not: programı cok acıklayıcı bi şekilde yazmışsın ilkseferde anladım çok teşekkürler delayla yapmanın dezavantajı programı sürekli meşgul etmesi degilmi? ciddi bi proje yaparken kesme kullanmak zorundayız sanırım
[email]tufan_ozbek@hotmail.com[/email] Yesterday is history. Tomorrow is a mystery. Today is a gift aslında bütün mesele bu.