Picproje Elektronik Sitesi

DERLEYİCİLER => CCS C => Konuyu başlatan: SK - 01 Mayıs 2014, 19:26:09

Başlık: POT ile Servo Motor Kontrolü
Gönderen: SK - 01 Mayıs 2014, 19:26:09
beyler, 5 tane servo motor aldım. Bunları pot ile sürmem gerek ancak programını yazamadım.5 ini aynı anda kontrol etmeden önce ilk olarak RB0 pinindekini kontrol etmeyi deniyorum ama olmuyor. Forumda da aradım ancak CCS C dilinde yazılmışını bulamadım, yardımcı olabilecek varmı?

(http://i.hizliresim.com/MYJLkk.jpg)

KODLAR;


#include <16f877A.h>     // Kullanılacak denetleyicinin başlık dosyası tanıtılıyor.
#device ADC=10  // 10 bitlik ADC kullanılacağı belirtiliyor.
#use delay (clock=4000000) // Gecikme fonksiyonu için kullanılacak osilatör frekansı belirtiliyor.
#define fast_io_a
#define fast_io_b
#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD,STVREN

int i;
int a,potvalue;
void main ( )
{
   setup_spi(SPI_SS_DISABLED);     
   setup_timer_1(T1_DISABLED);
   setup_ccp1(CCP_PWM);
   setup_timer_2(T2_DIV_BY_16,124,1);  // Timer2 ayarları yapılıyor
   enable_interrupts(GLOBAL);          // Tüm kesmeler aktif
   
   set_pwm1_duty(50);                // PWM1 çıkışı görev saykılı belirleniyor
   set_tris_a(0xFF);
   set_tris_b(0x00); 


   output_b(0x00);
   while(true) 
   {

          set_adc_channel(0);
          delay_us(20);
          potvalue=read_adc();
          a=potvalue*10+600;
          if (a>2600) {
          a=2650; }
         
          for (i=0;i<50;i++)
          {
          output_high(pin_a0);
          delay_us(a);
          output_low(pin_a0);
          delay_us(20000-a);
          }

}
}
Başlık: Ynt: POT ile Servo Motor Kontrolü
Gönderen: gökhan_ - 01 Mayıs 2014, 20:47:46
set_adc_channel(0);
ilk olarak bu kısımda hata var. pin A0 ı adc okumak için kullanıyor burası
setup_adc_ports(AN0_AN1_AN2_AN3_AN4); olarak değiştirmelisin
Başlık: Ynt: POT ile Servo Motor Kontrolü
Gönderen: SK - 01 Mayıs 2014, 20:52:21
cevabın için teşekkürler,denedim ama olmadı :/
Başlık: Ynt: POT ile Servo Motor Kontrolü
Gönderen: Salih - 01 Mayıs 2014, 22:56:20
Alıntı yapılan: SK - 01 Mayıs 2014, 20:52:21
cevabın için teşekkürler,denedim ama olmadı :/
Osiloskopla istediğin dalga şekli çıkıyormu bakarmısın.
Başlık: Ynt: POT ile Servo Motor Kontrolü
Gönderen: xfrieyt - 03 Mayıs 2014, 02:38:56
Aldığınız servolar R/c mi digital mi ? ayrıca ilk defa 2600 ms palsi gördüm. ben pot ile çok defa kullandım.2 ms olarak . analog değeri 5/1024 ile çarparak voltaj değeri oluşturun bunu 400 ile çarpın . yada 200 ile çarpıp 1000 ekleme yapın(TAmamen hassasyet amaçlı. ) Ve R/c servolarda delay_ms değeri low için 20ms dir. değişmez. digital ise yaptığınız gibi. pic ile motoru farklı kaynaklardan besleyin. İyi çalışmalar.
Başlık: Ynt: POT ile Servo Motor Kontrolü
Gönderen: SK - 29 Haziran 2014, 12:14:13
adlığım servo motorlar http://www.hobbyking.com/hobbyking/store/__16269__hk15138_standard_analog_servo_38g_4_3kg_0_17s.html (http://www.hobbyking.com/hobbyking/store/__16269__hk15138_standard_analog_servo_38g_4_3kg_0_17s.html)
bugün başka bi program yazıp denedim ama biraz sorun var, sorun da şu şekilde;

Potansiyometre ile PWM üretme (konum sorunu) (http://www.youtube.com/watch?v=54gpS82Y8O4#)

programı ve devresi de şu şekilde;

#include <16F877A.h>
#device adc=8
#fuses XT,NOWDT,NOPROTECT,BROWNOUT,PUT,NOLVP
#use delay(clock=4000000)

//================================
void main()
{
int8 value;

setup_ccp1(CCP_PWM);

setup_timer_2(T2_DIV_BY_16, 255, 1);

setup_port_a(AN0);
setup_adc(ADC_CLOCK_DIV_8);
set_adc_channel(0);
delay_us(20);

while(1)
  {
   value = read_adc();

   set_pwm1_duty(value);
  }

}


devresi;
http://i.hizliresim.com/qq5Y0q.jpg (http://i.hizliresim.com/qq5Y0q.jpg)

yardımcı olabilecek arkadaşlar varsa 4 gozle bekliyorum.
Başlık: Ynt: POT ile Servo Motor Kontrolü
Gönderen: Salih - 29 Haziran 2014, 13:27:35
ADC ile okuduğun değeri 3 bölüme ayır örnek, 0-75 , 76-150, 151-255 gibi.
BU aralıklardan birincisi için motor sola döndürme görevi ver.
Ve pwm ile gerekli sinyali üret.
ikinci kısma motor orta konumda durma görevi ona göre bir pwm sinyal üret.
üçüncüsü için sağa dönme ile ilgili pwm değeri ürettir.
Böylelikle kararsız çalışma alanı bırakmamış olursun.
Kullandığın servo'nun gerekli pwm değerlerini araştırmanı tavsiye ederim.
Başlık: Ynt: POT ile Servo Motor Kontrolü
Gönderen: SK - 30 Haziran 2014, 16:27:52
takıldığım yer şurası;

Alıntı yapılan: salih - 29 Haziran 2014, 13:27:35
BU aralıklardan birincisi için motor sola döndürme görevi ver.
Ve pwm ile gerekli sinyali üret.

adc ile okunan değeri 3 aralığa ayırmayı ve ona göre pwm üretmeyi şu şekilde yapabiliriz;

while(1)
  {
   value = read_adc();
   if (0<value<=75){
   set_pwm1_duty(value);}
   if (76<value<=150) {
   set_pwm1_duty(value); }
   if (150<value<=255) {
   set_pwm1_duty(value); }
  }

kolay ancak sola döndürme emrini nasıl vereceğim?
Başlık: Ynt: POT ile Servo Motor Kontrolü
Gönderen: Salih - 30 Haziran 2014, 17:55:00
eğer senin servo çok farklı değilse sağa, sola dönme ve sabit durma  pwm'nin on olma süresine bağlıdır.
Aşağıda örnek bir sinyal var, senin servoya uyarmı bilmem. Ama bir fikrin olsun diye veriyorum.

(http://pamungkas99.files.wordpress.com/2010/02/servo2.jpg)
Başlık: Ynt: POT ile Servo Motor Kontrolü
Gönderen: SK - 02 Temmuz 2014, 16:19:39
gecikmeli cevabım için kusura bakmayın, dediğnizi anladım ama çözünürlüğü programsal olarak nasıl halledebilirim?
Başlık: Ynt: POT ile Servo Motor Kontrolü
Gönderen: Salih - 02 Temmuz 2014, 22:02:58
Neyin çözünürlüğü?
Başlık: Ynt: POT ile Servo Motor Kontrolü
Gönderen: SK - 03 Temmuz 2014, 00:43:04
bi başka forumda aynı sorun için çözümün pwm çözünürlüğünden kaynaklandığını, artırılması gerektiğini okumuştum.
Başlık: Ynt: POT ile Servo Motor Kontrolü
Gönderen: Salih - 03 Temmuz 2014, 13:35:21
Alıntı yapılan: SK - 03 Temmuz 2014, 00:43:04
bi başka forumda aynı sorun için çözümün pwm çözünürlüğünden kaynaklandığını, artırılması gerektiğini okumuştum.

Kullandığın servo'ların pwm özelliklerini öğrendin mi?
Eğer öğrendi isen ona göre çözüm bulalım.
Başlık: Ynt: POT ile Servo Motor Kontrolü
Gönderen: SK - 03 Temmuz 2014, 14:23:46
bulabildiğim tüm özellikleri bunlar;

Spec.
Torque: 3.8kg @ 4.8v, 4.3kg @ 6v
Weight: 38g
Speed: 0.21 / 60deg @4.8v, 0.17 / 60deg @ 6v
Voltage:4.8v~6v
Plug: JR Style

Torque: 3.8kg @ 4.8v, 4.3kg @ 6v
Weight: 38g
Speed: 0.21 / 60deg @4.8v, 0.17 / 60deg @ 6v
Spec.Torque: 3.8kg@ 4.8v, 4.3kg @ 6vWeight
Speed: 0.21/ 60deg @4.8v, 0.17 / 60deg @ 6vVoltage
Başlık: Ynt: POT ile Servo Motor Kontrolü
Gönderen: Salih - 03 Temmuz 2014, 17:12:19
Serdar Çiçek Hocanın kitabın da verdiği RC Servo örneğini veriyorum.
Aşağıdaki link den indirebilirsin.

https://dl.dropboxusercontent.com/u/20087162/Pic_Program/R_C%20Servo%20Motor%20Uygulamas%C4%B1.rar (https://dl.dropboxusercontent.com/u/20087162/Pic_Program/R_C%20Servo%20Motor%20Uygulamas%C4%B1.rar)
Başlık: Ynt: POT ile Servo Motor Kontrolü
Gönderen: ali789 - 19 Aralık 2022, 17:34:17
pic 16F887 kullanarak potansiyometre ile 4 tane servo motoru kontrol ettirmek istiyorum. CCS C dilinde.
yardımcı olabilecek var mı?