avatar_Burak

Mini Servo Motor Sürme

Başlatan Burak, 11 Şubat 2013, 23:26:06

bilsisco

#15
Hocam sizin dediğiniz gibi ilk önce 500us verdim, sıfır dereceyi buldum ama 180 dereceyi bulamadım. Şöyle:
500us-1250us-2000us sırasıyla 0, 67, 135 derece buldum.
1000us-1500us-2000us sırayla 45, 90, 135 derecelik hareket elde ettim(bu pdfsinde yazan değerler)
Deneyerek 180 dereceyi sonunda buldum.
Zaten Tower Pro SG90 servoları 180 derece dönebiliyor.
Aşağıda bir formül çıkardım denedim ve çalışıyor.
Açı=(süre-500)/11,1  yada Süre=(açı*11,1)+500

bilsisco

0,90 ve 180 derecelik açıda dönme kodu

Include "modedefs.bas"         
@ DEVICE pic16F628A
@ DEVICE pic16F628A, WDT_OFF
@ DEVICE pic16F628A, PWRT_ON
@ DEVICE pic16f628A, BOD_OFF
@ DEVICE pic16f628A, LVP_OFF
@ DEVICE pic16F628A, PROTECT_OFF
@ DEVICE pic16f628A, MCLR_OFF
@ DEVICE pic16F628A, INTRC_OSC_NOCLKOUT

DEFINE OSC 4

TRISA=0          'A portu çıkış olarak ayarlandı.
TRISB=0          'B portu çıkış olarak ayarlandı.
PORTA=0
CMCON=7

Servo   var PortA.0
Lamba   var PortB.0
X       var word
Y       var word

high    lamba
pause   500
low     lamba

Low     servo   'İlk polaritesi low (pals pini high yapacak)
pause   1000
                   
BASLA:
    for y=0 to  30         '4Mhz de 1 pals 10us sürer
        pulsout servo,150  '150*10=1500us=1,5ms
        pauseus 18500      'low=18500
    next                   'orta
    pause   2000
         
    for y=0 to  30         '4Mhz de 1 pals 10us sürer
        pulsout servo,50   '50*10=500us=0,5ms
        pauseus 19500      'low=19500
    next                   'sağ
    pause   2000 
   
    for y=0 to  30         '4Mhz de 1 pals 10us sürer
        pulsout servo,250  '250*10=2500us=2,5ms
        pauseus 17500      'low=17500
    next                   'sol
    pause   2000   


GOTO BASLA
END


birer derecelik açı ile 180 derece sağ-sol hareket kodu

Include "modedefs.bas"         
@ DEVICE pic16F628A
@ DEVICE pic16F628A, WDT_OFF
@ DEVICE pic16F628A, PWRT_ON
@ DEVICE pic16f628A, BOD_OFF
@ DEVICE pic16f628A, LVP_OFF
@ DEVICE pic16F628A, PROTECT_OFF
@ DEVICE pic16f628A, MCLR_OFF
@ DEVICE pic16F628A, INTRC_OSC_NOCLKOUT

DEFINE OSC 4

TRISA=0          'A portu çıkış olarak ayarlandı.
TRISB=0          'B portu çıkış olarak ayarlandı.
PORTA=0
CMCON=7

Servo   var PortA.0
Lamba   var PortB.0
X       var word
Y       var word

high    lamba
pause   500
low     lamba

Low     servo   'İlk polaritesi low (pals pini high yapacak)
pause   1000
               
BASLA:

for x=50 to 250         
        pulsout servo,x   
        pauseus 20000-(x*10)     
next
for x=250 to 50 step -1         
        pulsout servo,x   
        pauseus 20000-(x*10)
next   


GOTO BASLA
END

ete

Demekki standart servoların dışında bu alette maksimum puls süresi 2ms değil 2,5ms imiş.
Data sheete dikkatli bakmak gerekiyor.

Ete

bilsisco

Hocam yine 20ms ama ilk 500us'si ayni konum sagladigindan sona eklenmiş ve 25ms olmuş. Yoksa bilgi sayfasında 20ms verilmesi isteniyor. İlginç

Powered by EzPortal