Ccs C Yardım!!!

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    fortunate1357
    fortunate1357's avatar
    Kayıt Tarihi: 17/Mayıs/2007
    Erkek

    pic 16f877 kullanarak basit servo motor uygulaması yapmam gerekiyor devre tasarım dersi projem için. Üst düzey programlama dilleri hakkında bilgim var ama bu konuları pek bilmiyorum. Bir tuşa basınca motoru 90 derece sola döndürmem gerekiyor bunun kodunu nasıl yazabilirim. Açıkçası çok öğrenmek istediğim bir dil olmadığı için hazır birkaç satır kod bulabilirsem çok iyi olur benim için. şimdiden teşekkürler herkese.

  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    YeniHarman
    YeniHarman's avatar
    Kayıt Tarihi: 17/Haziran/2012
    Erkek

    Baştan sonra bir kılavuz var: http://www.pyroelectro.com/tutorials/servo_motor/index.html


    Olaylara karışmayın!
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    unbalanced
    unbalanced's avatar
    Kayıt Tarihi: 14/Haziran/2006
    Erkek

    bu işler için pwm i kullancaksın hocam. pwm i araştırırsan çözüm bulabilirsin. uğraşmayayım diyorsan serdar çiçek in kitabı var projeleri altas.com ya da com.tr de yayınlanmış orada bahsettiğin tarzda örnek olması lazım. oradaki kodları ve isis devre şemasını kullanabilirsin biraz düzenleyerek


    Ülkesini Seven Her Türk Vatandasi, Ülkesinin Sessiz Istilasi'na karsi durmak zorunda.
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    fortunate1357
    fortunate1357's avatar
    Kayıt Tarihi: 17/Mayıs/2007
    Erkek

    Sağ olasın arkadaşım ben biraz kurcalayayım bunu. Ama anladığım kadarıyla burada servo motorun her şeyini anlatıyor. Özellikle yazılımı konusunda önerebileceğin bir şeyler var mı. Basit işlemler yapan örnek pic c kodları falan .

  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Kaan
    Kaan's avatar
    Kayıt Tarihi: 23/Mayıs/2007
    Erkek

    bak bakalım hacı, dökümanlardan üstünkörü çektim bunu.

     

    /******************************************************

          PIC16F877 İle R/C Servo Motor Uygulaması

    ******************************************/

    #include <16f877.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ılacak osilatör frekansı belirtiliyor.

     

    // R/C Servo motor dönme açı değerleri

    const int8 servo_derece_1[]={8,9,10,11,12,13,14,15,16,17,18};

    const int8 servo_derece_2[]={18,17,16,15,14,13,12,11,10,9,8};

    const int8 servo_derece_3[]={8,12,18,8,12,18,8,12,18,8,12};

     

    int i=0,pwm=0,duty_0=0,duty_1=0,duty_2=0;

    int16 zaman=0; // 16 bitlik değişken tanımlanıyor

     

    #int_timer0  // Timer0 taşma kesmesi

    void kesme ()

    {

       set_timer0(113);  // TMR0 kaydedicisine 113 değeri yükleniyor

       if (pwm==0)       // Eğer PWM değişkeni 0 ise

       {

          output_high(pin_b0); // RB0 çıkışı lojik-1

          output_high(pin_b1); // RB1 çıkışı lojik-1

          output_high(pin_b2); // RB2 çıkışı lojik-1

       }

     

       if (pwm>=duty_0) output_low(pin_b0);

       if (pwm>=duty_1) output_low(pin_b1);

       if (pwm>=duty_2) output_low(pin_b2);

     

       zaman++; // zaman değişkenini 1 arttır

     

       // Servo motor dönüş adımları arası bekleme süresi için

       if (zaman>17350) // 17350x114,4µsn=1.984.840µsn, yaklaşık 2msn

       {

          zaman=0;  // zaman değişkenini sıfırla

          i++;      // i değişkeni değerini 1 arttır

          if(i==11) // Eğer i değeri 11 ise-Tüm adımlar bitti ise

             i=0;   // i değişkenini sıfırla

       }

     

       pwm++;       // pwm değişkenini 1 arttır

       if (pwm>=173) // pwm değeri 173'den büyük ise

          pwm=0;    // pwm değişkenini sıfırla

    }

     

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

     

    void main ()

    {

       setup_psp(PSP_DISABLED);        // PSP 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_timer_0(RTCC_INTERNAL | RTCC_DIV_4); // Timer0 ayarları belirtiliyor

       set_timer0(113);  // TMR0 kaydedicisine 113 değeri yükleniyor

     

       enable_interrupts(int_timer0); // Timer0 taşma kesmesi aktif

       enable_interrupts(global);     // Aktif edilen tüm kesmelere izin ver

     

       output_b(0x00);  // İlk anda B portu çıkışı sıfırlanıyor

     

       while(1)  // Sonsuz döngü

       {

          duty_0=servo_derece_1[i]; // 1. R/C servo PWM görev saykılı

          duty_1=servo_derece_2[i]; // 2. R/C servo PWM görev saykılı

          duty_2=servo_derece_3[i]; // 3. R/C servo PWM görev saykılı

       }

    }

     

  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    fortunate1357
    fortunate1357's avatar
    Kayıt Tarihi: 17/Mayıs/2007
    Erkek

    çok sağ olun arkadaşlar çok faydası oldu.

Toplam Hit: 1409 Toplam Mesaj: 6