Robofun 機器人論壇

 找回密碼
 申請會員
搜索
熱搜: 活動 交友 discuz
查看: 6433|回復: 17

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

[複製鏈接]
發表於 2010-7-11 18:15:40 | 顯示全部樓層 |閱讀模式
本帖最後由 tommylin 於 2010-7-14 00:11 編輯

以下是先用 Arduino 測試慢速轉動很 smooth 相關影片和 code ..

http://www.robofun.net/forum/redirect.php?tid=2341&goto=lastpost#lastpost
Part 4, 16#

同樣的 servo, 同樣的機構位置, 用 Arduino 送出 pulse 慢速轉起來很順...
所以我先排除了 servo 的 D-Gain / P-Gain 值影響...
嘗試修改 RoboIO.LIB 的使用方法, 我今天試了一天..
結果還是會抖.. 不像用 Arduino 那樣順,
不知道有沒有人處理過,或是瞭解原因... 跪求解惑 ~"~
先謝謝了..
發表於 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;
}
 樓主| 發表於 2010-7-13 01:11:41 | 顯示全部樓層
修改 servo Gain 值 Hitec servo gain test.png
發表於 2010-7-13 18:50:48 | 顯示全部樓層
Tommy大大

請問修改Gain值後, 抖動情況有改善嗎^^"
 樓主| 發表於 2010-7-13 20:01:25 | 顯示全部樓層
還沒測試..
因為找了好久才找到可以修改這顆 servo 參數的程式,
但是還沒搞懂裡面的功能選項,
例如: D-Gain 和 P-Gain 就不知道有什麼差別,
而且根據 8498HB 文件說內定值都是 1,
但是我讀取servo 以後數值是3...
我會持續測試研究這個問題,
也會盡快上來回報進度,
謝謝老師喔 ^^
 樓主| 發表於 2010-7-14 00:39:58 | 顯示全部樓層
本帖最後由 tommylin 於 2010-7-14 00:50 編輯

終於解決了啦.. 新手請看, 老手請勿看, 會傷眼睛 ~"~
過程說明如下:
1. 使用 Arduino 很順.( 實驗/程式連結 http://www.robofun.net/forum/red ... o=lastpost#lastpost  )
2. 使用 MR-C3024 控制板, 很順.
3. 都是輸出一樣的 pulse,
servo 參數也都一樣,
實驗時的機構也是一樣,
程式寫法邏輯一樣..
這些實驗差異在哪裡阿 @@

因為之前一直因為電壓太低,導致作業系統不穩一直重新開機,
最後直接用 AC110V to DC 12V ,
系統穩定後確發現 servo 在慢速轉動抖動嚴重,
然後一直朝程式方向測試和研究,
( 在此也感謝 Roboard原廠所有人 + RoboIO.lib 的掌門人協助)
礙於我的智商太低, 正面臨絕望之時..
開始搬出老古董 MR-C3024 和 Arduino
分別寫一樣的程式跑... 來交叉確認,
servo 一切正常, 也不會抖動..

這~~ 這是為什麼阿~
最後開始用冥想.. 面對機器人發呆了2天... ~"~
終於在剛剛做了一條杜邦線,
把 MR-C3024 接上 RB-100,
MR-C3024 接電 7.8V, 再拉 PWM 訊號線到 servo,
電表量測後確認 servo 吃約 7.8V電壓, 一切就完成了 @@

結論: 供給 servo 的電壓太高 ..

報告完畢~
有影片為證:
影片一:供電 11.2V ( 抖動)

影片二:供電 7.8V ( 很順 )


影片三:MR-C3024 控制板,手邊可以先幫忙降壓的工具 @@
發表於 2010-7-14 00:44:21 | 顯示全部樓層
roboard的電壓通入多少
給馬達的電壓就是多少

所以我當初用MG系列的才會分開供電
roboard和馬達各自6V就沒有問題

現在接11.2V是因為我用祥儀的馬達
電壓可以正常運作
所以就直接接roboard

結論就是, 如果你的馬達是6V或以下
分開供電吧
 樓主| 發表於 2010-7-14 01:47:13 | 顯示全部樓層
剛剛又把電壓降低在 6.5V 給 servo, 轉動起來更順了,
沒有絲毫的抖動和延遲...
而且回到剛開始測試 RoboIO.LIB 的 rcservo_MoveTo() 函式,
也 ok 了.
真是圓滿完結阿.. 感謝所有提供協助的人, 再一次謝謝~
發表於 2010-7-14 08:30:05 | 顯示全部樓層
本帖最後由 acen2008 於 2010-7-14 08:38 編輯

原來如此....壓根沒想到是電壓問題@@"
發表於 2010-7-14 11:13:38 | 顯示全部樓層
搞了半天是電的問題........... 終於還 小主板的清白 之前還一度懷疑 是小主板 and RoBoIO 的問題
看來很多事的解決 都要開始從基本面想起
不過 hitec 直接給他灌  11.2v 還不會掛.... 還算是極品呀

你要不要再去 弄一顆output DC 6.5V - 7V 的 adapter or 電源供應器呀
 樓主| 發表於 2010-7-14 13:38:54 | 顯示全部樓層
哈哈~ 抱歉阿... 一時偷懶電壓沒有正確供給... SORRY~

>> output DC 6.5V - 7V 的 adapter ?
我有一個很高級的喔 MR-C3024 ,
這樣整個組裝起來 RB-100 + MR-C3024 就有 24 + 24 PWM = 48 組,
這樣都可以做 "臉部表情" 了喔..
喔~ 對了..還會加上 Arduino ...
全部整合在一起啦..
 樓主| 發表於 2010-7-14 13:49:25 | 顯示全部樓層
本帖最後由 tommylin 於 2010-7-14 14:07 編輯

To: 和我一樣新的新手...
我在這次實驗的過程中,
使用了 Futaba / GWS / Hitec servo 除了廠牌,還有很多種型號,
測試 servo 轉動流暢度的時候,
一定要把機構安裝上, 尤其是力矩長有一點重量的機構,
會把整個 servo 轉動的微小抖動放大,
千萬不要偷懶, 甚至連 servo arms 都沒裝,
這樣是看不出來的 @@
servo 轉動的 smooth 要用在哪裡?
下面照片中那2隻一定要很溫柔對待的...
ShowRoom.JPG
發表於 2010-7-14 17:37:14 | 顯示全部樓層
哇   直升機耶  可是我好像在某人的不落格上有看到 一段影片 有表演 失速 直接降落的橋段  請問是其中的一台嗎... 哈哈
發表於 2010-7-15 00:35:50 | 顯示全部樓層
咦?
所以你講半天...是說要把roboard裝到直升機???
哇!!!!
可是給6.5的電壓, 感覺會壞很快吧, 一般的SERVO不是說極限4.8~6V???

其實會知道電壓的問題也是因為前陣子勇敢的測下去
完全不顧會燒掉的危險(工程師跟我說, 燒壞他負責修, 哈哈)
胡搞一通以後才發現的
不過現在我已經另外作一片5V額外供電的板子
所以roboard直接接6V開機也能直接讓馬達動作都沒問題了
只是那塊板子接在旁邊看了很討厭

roboard未來是否有機會可以選擇PWM端接頭的輸出電壓呢
哈哈
我來亂的
 樓主| 發表於 2010-7-15 11:01:42 | 顯示全部樓層
鯨魚大,
更新一下這顆 servo 的 spec
Specifications

Motor Type:        3 Pole
Bearing Type:        Dual Ball Bearing
Speed (6.0V/7.4V):        0.20 / NA
Torque oz./in. (6.0V/7.4V):        103 / NA
Torque kg./cm. (6.0V/7.4V):        7.4 / NA
Size in Inches:        1.57 x 0.78 x 1.45
Size in Millimeters:        39.88 x 19.81 x 36.83
Weight oz.:        1.94
Weight g.:        55.00

你做的額外供電的板子,
是否可以做 "可調式的", 這樣我才可以用阿..
發表於 2010-7-15 17:56:18 | 顯示全部樓層
咦?他運作電壓是6.0~7.4V喔. 真特別

我額外供電的板子是自己胡搞來用的啦
只是普通的電路焊的跟狗啃的一樣
純粹為了額外供電而已
所以馬達只有signal接到roboard, 這樣就完全沒有任何問題了
PS.和roboard要共地
發表於 2010-7-16 20:11:43 | 顯示全部樓層
回復 13# tommylin

我看到的是很老的DOS遊戲倚天屠龍記

看起來還收藏的很好的樣子
發表於 2010-7-16 23:36:06 | 顯示全部樓層
哈哈
DOS的創世紀系列和勇者鬥惡龍的盒子我都還在哩
磁片都發霉了就是
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2022-8-12 16:25 , Processed in 0.239377 second(s), 9 queries , Apc On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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