Robofun 機器人論壇

 找回密碼
 申請會員
搜索
熱搜: 活動 交友 discuz
查看: 7334|回復: 17
打印 上一主題 下一主題

[求救]Servo慢速轉動還是不夠 Smooth ...(已解決^^)

[複製鏈接]
1#
發表於 2010-7-12 16:32:13 | 顯示全部樓層
本帖最後由 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;
}
2#
發表於 2010-7-13 18:50:48 | 顯示全部樓層
Tommy大大

請問修改Gain值後, 抖動情況有改善嗎^^"
3#
發表於 2010-7-14 08:30:05 | 顯示全部樓層
本帖最後由 acen2008 於 2010-7-14 08:38 編輯

原來如此....壓根沒想到是電壓問題@@"
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

小黑屋|手機版|Archiver|機器人論壇 from 2005.07

GMT+8, 2024-5-12 19:19 , Processed in 0.209496 second(s), 7 queries , Apc On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表