M

servo motorun puls değerlerinin hesaplama pic pro basicte

Başlatan meakdogan, 23 Mayıs 2013, 13:32:37

meakdogan

merhaba

projem için mg995 servo motor kullanıyorum. motorun puls aralığını bulmaya çalışıyorum codumu yazdım simule ederken sıkıntı var.

servo motorun puls aralığını bulmak için ilk etepta 500 mıkrosonıye puls verdım ve her seferınde 50 mıkro sanıye puls süresinini artmasını istiyorum ,

artırdıktan motor her pozısyon değiştirdikten sonra led yanıp sönmesini istiyorum kı motor çalışmaya başladıktan sonra ,led kaç kere yanıp sönerse 50 ile çarpıp puls aralığını bulmayı hedeflıyorum .

ama simule ederken ıstediğimi alamıyorum led sadece bır kez yanıyor motorda -90 derece dönüp duruyor. acaba nerde hata yapıyorum yardımcı olabılırmısınız ? pıc basıc pro kodum aşağıda kı gibidir. 16F877 kullanıyorum ,

yada elınde servo motorun pulsının bulduran kod var mı pıc basıc pro da yazılmış. şimdiden teşekurler.


PORTB=0:TRISB=%00000000
'-----------------------------------------------------------------
@ __config _XT_OSC & _WDT_ON & _PWRTE_ON & _LVP_OFF & _CP_OFF
'-----------------------------------------------------------------

A var BYTE
Y VAR BYTE
A= 500

PAUSEUS 200
'-----------------------------------------------------------------
BASLA:
For Y=0 To 39

HIGH PORTB.1

Pauseus A

LOW PORTB.1

Pauseus 20000 - A

PortB.0 = 1

Pauseus 500

PortB.0 = 
A = A + 50
next
goto BASLA

ete

Bir servo motorda sıfır konumu ile 180 derece konumu önemlidir. Gerisi bu iki konumun arası olacağı için kontrol sorun yaratmaz.
Pek çok motor 0,5 ms (500us) ile 2 ms (2000us) aralığında çalışır.
Motora önce 500 us bir puls ver bakalım. Ne yapıyor. Şayet sıfır konumunu alıyor ise sorun yok demektir. Almıyor ise altını üstünü taramalısın. örneğin 400us hatta 300us ye ye kadar düşebilirsin. Yada 400-450 - 500 us lik değerleri ver ve motorun sıfır konumunu almasını gözlemle. SOnra bu değeri bir yere kaydet.
Daha sonra puls miktarını 2000us olarak ver. BAzı motorlar 1900us bazıları ise 1800us ile ile 180 derece konumunu alırlar. Bu noktayıda doğru yakaladıktan sonra artık ara değerleri vererek motoru konumlandırabilirsin.
Aslında motorun teknik dökümanı varsa orada yazıyordur bu bilgi.
Senin düşündüğün gibi 50us artımlı olarak gitmek pek akıllıca olmasa gerek. İpin ucu kolaylıkla kaçabilir bir tespit yapamazsın.
Ete

Powered by EzPortal