|
本帖最後由 acen2008 於 2010-7-12 17:24 編輯
Hi
你可以試試用 PWM Mode 來送 pulse 給馬達, 每經過一段時間(delay)或等 PWM pulse
送完後, 再改變 duty 大小讓馬達轉到下一個位置, 所以馬達轉的快慢也就有了比較多的參數要
調整, 例如 : (1) delay time (2) duty 每次變化的大小 , 我做了一些測試, delay的時間用
PWM送完的時間(所以這也跟我送的 count 數有關), 再來就只要調整 duty 大小就可以控制
速度, 調整出來的值可以讓我的 KRS-788 HV 在慢速下轉的很 smooth, code如下, 你可以
把 servo 的 type 換成RCSERVO_HITEC_HSR8498, 再試試看...
===================================================
#include "stdafx.h"
#include <conio.h>
#include "roboard.h"
int main()
{
int dir = 1;
unsigned long position;
unsigned long offset = 5L; // 調整 offset 來控制速度
// 值越大, 轉越快
roboio_SetRBVer(RB_100);
rcservo_SetServo(0, RCSERVO_KONDO_KRS78X);
rcservo_Initialize(RCSERVO_USECHANNEL0);
rcservo_EnterCaptureMode();
position = rcservo_ReadPosition(0, 0); // 擷取目前馬達位置
rcservo_EnterPWMMode(); // 進入PWM Mode
while(!_kbhit())
{
if(position > 2200L) dir = -1;
else if(position < 800L) dir = 1;
if(dir == 1)
position = position + offset;
else
position = position - offset;
rcservo_SendPWMPulses(0, 10000L, position, 2L);
while(rcservo_IsPWMCompleted(0) == false); // 這裡可換成 delay
}
rcservo_Close();
return 0;
} |
|