Robofun 機器人論壇

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

推薦一塊好用又便宜的Servo控制板 ServoRunner A

[複製鏈接]
跳轉到指定樓層
1#
發表於 2008-3-10 02:26:08 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
看到最近版上有很多大大對自製Servo 控制板有很大的研究,感覺到原來有這麼多同好,心中突然有股溫暖~~~咳咳  好像太肉麻了~~

其實在看了很多大大的文章之後,受到精神感召,也來介紹一塊控制Servo的版子,這塊版子可完完全全都是愛用國貨  核心是用盛群的HT46R24

程式也是國產的(此模組的規格還有程式架構是小弟我構思的 現醜囉:P)

就連Regulator和 版子上用來存frame的eeprom也全都是國產(盛群)的,那就是利基應用科技所推出的16CH ServoRunner A控制版

雖說這塊版子的ch數只有16個,但是若是配合利基應用科技開發程式的環境,最多可以接32塊ServoRunner A控制版,算一算做個一兩百支腳的馬陸應該不是問題了 呵呵

廢話不多說  我就直接轉入正題  就先來介紹這塊版子的feature吧


1.十六組伺服器輸出介面,可同時控制十六組伺服器。

2.可控制伺服器位置由0.5 ms 至2.5 ms。
3.軟體微調指令,不用機械拆裝,僅由軟體設定,就可以達到微調各個伺服器轉向角度的目的,可設定-128~127 μS

4.程式可以設定伺服器轉向速度,使用者可根據需求設定多段的伺服器轉向速度。(簡單說就是同時給個速度還有角度的資料 模組就會自己幫你算好並把servo移到定位)

5.使用者可以設定一個共同時間,讓各個伺服器在同時間達到不同的轉向角度。(這個跟上一條很像,不過速度被換成時間了 也是一樣只要下時間還有腳度的參數 模組就幫你移到定位囉)

6.內建120 組伺服器記憶空間,每組可以儲存目前設定好的十六個伺服器目標位置,
與速度或時間參數,在需要時直接呼叫,可以免去重覆設定的動作,也可以快速組
合出多樣化的效果。(這個功能超好用)

7.設有四組事件提醒,讓使用者可以在判斷動作完成後,自動進行下一項操作。箇是
件可以設定任意1~16 各伺服器作為判斷依據。(基本上就是把大家在寫程式的Event的功能(在MCU上就是interrupt)讓user在等待動作完成之餘可以先去做其它事情之後又可以很精準的控制下個動作)


 各種狀態取得指令,使用者可以隨時確認伺服器是否動作完成,取得現在位置,目
標位置,微調參數,或是設定的時間與速度值。
 解析度可達2μS。(2us我想也夠了  之前跟廣營的林董聊,他說他們的servo解析度也只有做到3~4us而已)

再來聊到價格, ServoRunner A的價格(一千多一點) 這就由各位大大來決定是否劃不划算囉:p

要操作ServoRunner A 其實非常簡單  以下是操作的程式碼 利用利基應用的開發環境(軟體完全免費)
基本上程式碼跟VisualBasic是一樣的
ServoRunnerA在程式裡就如一個物件一樣


範例程式:
' 範例程式中的位址是以多數伺服器的範圍設定,
' 請根據所使用的伺服器可設定的位址做調整,以免造成伺服器毀損


Peripheral mySer As ServoRunnerA @ 0 ' 設定模組編號為0 (基本上可以接最多32個ServoRunnerA模組 做個蜈蚣吧 呵呵)

Dim EventEnd As Byte ' 儲存事件處理完成的判斷參數
Dim i As Byte ' 儲存迴圈的判斷值
Dim SerStatus As Byte 『 儲存Servo 的Status 值



Sub Main() ' 主程式

mySer.SetPosOffset(0, 0) ' 設定Servo0 的微調值為0  (在之前的程式碼已經把ServoRunnerA定義為MySer了)
mySer.SetPosAndRun(0, 1500) ' 啟動Servo0 移動到1500 的位址

Pause 1000 ' 暫停一段時間讓伺服器移動到固定位址

mySer.SetPos(0, 2200) ' 指定Servo0 目標位址為2200

mySer.SaveFrame(0) ' 將目前設定的伺服器動作存到Frame0 中(總共有120個frame可以存在ServoRunnerA裡 每個Frame都可以同時存住16ch的角度 速度還有時間資料)

mySer.Run1Servo(0) ' 讓Servo0 開始動作 (不僅是Run1Servo 還有Run2Servo一直到RunAllServo都可以讓servo同時動作,要動做的ch完全可以任意選擇)

Pause 500

mySer.SetPosSpdAndRun(0, 700, 1000) ' 啟動Servo0 以速度1000 移動到700 的位址

Pause 2000

mySer.SetPosTimeAndRun(0, 2200, 1000) ' 啟動Servo0 花一秒的時間移動到2200 的位址

Pause 1000

EventEnd=0

mySer.SetPosTime(0, 700, 1000) ' 設定Servo0 花一秒的時間一動到700 的位址

mySer.SaveFrame(1) ' 將目前設定的伺服器動作存到Frame1 中

mySer.Run1ServoWithEventA(0) ' 啟動Servo0 並於動作結束產生EventA

Do                 '(此部份在等待event回傳)
Pause 1
Loop Until EventEnd=1

' 下面的迴圈反覆讀取Frame0 與Frame1 的設定值,再啟動Servo0 執行
' Frame0 儲存的位址為2200,Frame1 儲存的位址為700
' Servo0 將在這兩個位址間來回移動四次


For i=0 To 3

mySer.LoadFrame(1) ' 讀取儲存於Frame1 的設定值
mySer.Run1Servo(0)

Pause 1000

mySer.LoadFrame(0) ' 讀取儲存於Frame0 的設定值
mySer.Run1Servo(0)

Pause 1000

Next


mySer. SetPosAndRun(0, 1500)
' 下面的迴圈反覆執行讀取Status 的動作,
' 在確定動作結束後,才會跳出迴圈
Do

mySer.Get1ServoReadyStatus(0, SerStatus) 『 讀取Servo0 的狀態存於SerStatus 中(這裡也一樣可以同時讀取1~16ch的共同的status ,例如  mySer.Get3ServoReadyStatus(2,4,13,serstatus) :此指令會告知ch2 ch4 ch13是否都已到定位)
Loop Until SerStatus>0


End Sub


Event mySer.ServoPosReadyEventA()     (此部份就為event的寫法 基本上跟VC VB的寫法完全一模一樣 用法也一樣)  
mySer.SetPosAndRun(0, 2200)
Pause 1000
EventEnd=1
End Event


其實小弟當初在構思這塊Servo控制模組時 花了很多時間在構思如何用簡單的指令 但是卻可以做出複雜的動作
若是各位大大還有興趣的話 可以參考附件裡的這塊模組的指令完整說明,看看是否還有些指令可以改進的

此外 做這模組也算是替國產IC爭口氣吧,因為總覺得國貨IC其實並不比國外M牌或A牌話T牌來的難用,
當然也希望各位大大也能多多支持小弟  (寫到這已經半夜頭昏中:p 快神智不清了 )  

聯結裡的影片都是用這塊版子所做的機器人動作

小弟我下一次再介紹 另一個專為ServoRunnerA的Frame所做的Frame motion Editor 些這樣囉~~~
謝謝囉










新圖片.jpg (38.81 KB, 下載次數: 460)

ServoRunner A 照片

ServoRunner A 照片

Innovati_ServoRunnerA_V102.pdf

424.81 KB, 下載次數: 1239

ServoRunner A 說明文件

2#
發表於 2008-3-10 08:13:57 | 只看該作者
原帖由 freddie 於 2008-3-10 02:26 發表
看到最近版上有很多大大對自製Servo 控制板有很大的研究,感覺到原來有這麼多同好,心中突然有股溫暖~~~咳咳  好像太肉麻了~~其實在看了很多大大的文章之後,受到精神感召,也來介紹一塊控制Servo的版子,這塊版 ...

freddie 大大,

     小弟這個要求可能比較……。請問這塊板子的原始程式可否公開,如不方便的話,請不要見怪。
不然透露一下,板子的開發程式是用組合語言或是c語言來寫的,不可能用basic語言來寫的吧??

利基是很棒的產品。可是在伺服機和機構的價格方面,小弟還是下不了手。因為廣營的伺服機對小弟來講,比較買不下去。(要是實驗不出來的話,再買囉。)

不是對林董的產品批評,廣營的服務很好,實在沒話說,小弟之前買一個伺服機,實驗壞了,自己弄壞的。
可是寄去給廣營,修好寄回來。問維修費多少,客服人員說:不用錢
從此對林董的公司有很大的好感。                                                                                   好像在打廣告

可不可以麻煩一下,假如小弟用自己的伺服機,而請您們設計機器人的結構,這樣不知是否可行。價格應該很高吧。
小弟很推崇您們的產品喔。


對了,再求教一下,
當初設計這塊控制板的時候,公司用了多少工程師??

因為看了mr-c3024控制板的程式,覺得應該是一組工程師大家組合起來的設計方式。(真的好厲害,寫了幾百頁的程式。看了頭都大了)

當然,假如您們可以瞭解mr-c3024控制板程式的話,運用在盛群晶片上,那是最好不過了。(可能您們的程式比mr-c3024控制板的程式架構還好也說不定,算小弟失言囉。 )

請問有沒有這個可能,把控制板的程式釋放出來,讓大家學習,然後我們自己diy這塊控制板,學習程式如何設計呢??
不然請大大教一下如何用51或其它晶片來寫程式??不曉得可不可行??

這是小弟的一些私下想法,請大大參考一下,謝謝喔。

[ 本帖最後由 ayu 於 2008-3-10 09:15 編輯 ]
3#
發表於 2008-3-10 11:07:45 | 只看該作者
這塊板子之前也有看過,好像是用 cpld 做核心 輸出 servo 控制訊號的。所以輸出的訊號應該是同步的。可以的話想看看它輸出的訊號,特別是 2us 的解析度。看起來不錯,也很特別。
核心程式能公開的機會是微了一點,不過說明一下它的通訊資料格式想是可以吧!!
4#
發表於 2008-3-10 12:31:32 | 只看該作者
原帖由 irobot 於 2008-3-10 11:07 發表
這塊板子之前也有看過,好像是用 cpld 做核心 輸出 servo 控制訊號的。所以輸出的訊號應該是同步的。可以的話想看看它輸出的訊號,特別是 2us 的解析度。看起來不錯,也很特別。
核心程式能公開的機會是微 ...

Hi iRobot,

是八位元的單晶片 http://www.holtek.com.tw/chinese/docum/uc/46x24.htm

Data Sheet  沒看到 tqfp 封裝的晶片。

參考書籍 http://www.opentech.com.tw/search/bookinfo.asp?isbn=9572151509
5#
發表於 2008-3-10 14:38:19 | 只看該作者

可以問一下語言的操作嗎?

使用的是VB like的語法,看來是靜態編譯語言:也就是要先編好,下載再執行。我這樣猜不知對不對?
我在找可以動態編譯語言,因為可以線上編輯,單一函式執行的方式。像Lisp、Forth或Lua這種。這對單一機器人動作的除錯會比較有幫助。不然動作多了會不好修改及測試,像我想發展自主式機器人會比較需要。
6#
發表於 2008-3-10 16:43:33 | 只看該作者
Ayu 大大:
謝謝指正。看來是我記錯了。
原來也是 8bit mcu,這個我很有興趣想知道是如何做到 2 us 的解析度啊。
7#
發表於 2008-3-10 16:52:53 | 只看該作者

再問一下,同步控制有指令支援嗎?

如果同時控制數個Servo,每個Servo可能獨立執行,此時使用各自的Pause是O.K。但因為關節是連動的,一個Servo到位時會同時觸發數個Servo齊動,而這些Servo不會同時做完。這是屬於Concurrent問題,不知是否有支援?簡單的說,能不能開另一個Main()的執行程序去管理另一組Servo。

[ 本帖最後由 wallace_tsou 於 2008-3-10 17:11 編輯 ]
8#
 樓主| 發表於 2008-3-10 18:34:24 | 只看該作者
原帖由 ayu 於 2008-3-10 08:13 發表

freddie 大大,

     小弟這個要求可能比較……。請問這塊板子的原始程式可否公開,如不方便的話,請不要見怪。
不然透露一下,板子的開發程式是用組合語言或是c語言來寫的,不可能用basic語言來寫的吧??
...



ayu兄  大家都是同好 所以也別不好意思囉 看有啥需求就直接說,我也就一一回答ayu兄的問題囉

關於是否可開放程式這件事,因為畢竟利基這家公司花了很多時間一步一腳印把這些東西做起來,所以要開放程式碼可能會比較困難,

但是我想關於架構還有程式技巧部份,我這邊還是可盡我所能為大家解決一些開發上的問題,

基本上這塊ServoRunnerA 模組是用組語寫的,畢竟HT46R24只是一顆8bit mcu 沒有乘除法,內部也沒有pll倍頻技數要四個clk才是一條指令時間,
只有用組語才可以把timing控制做的很完美,其實當初在做的時候,看到H8還有AVR的性能,其實還真沒把握,不過花了一些時間推敲演算法(這演算法我看我另外開個topic來講好了 因為講下去會沒完沒了:P),發現是可以在8MHz下做到8ch 2us,而來自盛群的消息說跑16MHz在5v是ok的,所以現在跑的是16MHz 16ch 2us的規格

另外ayu兄會覺得伺服機和機構會下不了手,其實利基在這方面所有東西都是有各別零賣的,伺服機是標準的,只要是standard size的servo都可以塞進我們的機構裡,大陸的標準servo只要有圓盤舵片通通都可以用
另外關於機構方面,這邊我們也很想把價錢壓下來,但是鋁合金加上雷射切割加上軸承還有沙拉孔對我們真的是有點困難:P
所以ayu兄其實是可以用你現有手邊的的伺服機,若是還不嫌棄的話可以買一些利基的機構件,雖說設計成多功能的機構件醜了點,但這樣可以自己設計自己的機器人,愛怎麼組就怎麼組囉:P

ServoRunnerA這塊版子從定規格 程式 PCB 到測試,前後大概花了半年,參與人大概就是小弟我及一位軔體工程師一起開發的
mr-c3024我看過規格,那的確是一個大計劃,要把那麼多東西做在同一塊板子上真的不簡單,還希望有機會可以跟ayu兄一起研究研究看看:P

利基的理念其實跟robonova走的是不同方向,我們是覺得現在台灣就是mcu最便宜,那把每個模組都自己裝上一顆mcu,我只要下指令,那些模組自己就會動了 所以是走分散式的設計
可以參考一下附件裡的資料 又要現醜啦:P
不知道這樣有沒有回答到ayu兄的問題 若是小弟有回答不週的地方 還請ayu兄多給指教:P

其實寫了這模組之後,大概知道用哪些mcu會比較容易完成servo的精準控制,avr,microchip都好用,因為是risc價構,user可以很容易掌握很精準的timing
但是用8051我就比較不推薦了,cisc架構其實對時間的精準掌握會比較難控制(不是說不能寫 只是比較難寫 在補程式branch長短腳的時候就會知道了)
我想下一次我來開個如何用盛群的組語寫出2us 解析度的程式技巧的話題好了:P

[ 本帖最後由 freddie 於 2008-3-10 18:41 編輯 ]

DM_Page1 of 2.pdf

348.48 KB, 下載次數: 968

9#
 樓主| 發表於 2008-3-10 18:51:20 | 只看該作者
原帖由 irobot 於 2008-3-10 11:07 發表
這塊板子之前也有看過,好像是用 cpld 做核心 輸出 servo 控制訊號的。所以輸出的訊號應該是同步的。可以的話想看看它輸出的訊號,特別是 2us 的解析度。看起來不錯,也很特別。
核心程式能公開的機會是微 ...



irobot大大:

通訊格式是利基開發的cmdBUS架構, 必需要搭配Basic Commander核心才能使用,  其實當初在開發時有討論過這問題,
但是為了除錯 穩定性以及為了要能讓程式介面更密切的結合(例如event架構), 所以才會發展到最後成為一專屬架構,
但是透過Basic Commander核心還是可以跟外面別家的模組溝通或是一般IO應用都可以, 基本上就跟stamp一樣

但是有stamp所做不到的功能(例如浮點運算)
10#
 樓主| 發表於 2008-3-10 18:58:29 | 只看該作者
原帖由 wallace_tsou 於 2008-3-10 14:38 發表
使用的是VB like的語法,看來是靜態編譯語言:也就是要先編好,下載再執行。我這樣猜不知對不對?
我在找可以動

態編譯語言,因為可以線上編輯,單一函式執行的方式。像Lisp、Forth或Lua這種。這對單一機器人動作的除 ...



wallace大大

    你說對了, 是先下載再執行, 但是雖說先下載再執行, 沒辦法做到像vb一樣是script language ,
但是可以做到像C++一樣, 在寫程式的時候就把 資料上傳還有下載的的指令先擺好, (類似C的debug, 跟stamp的debug 和 debugin指令一樣)
此外basicCommander裡有256bytes的eeprom可以隨時讓你存放一些動態修正的參數, 關機也不會消失下次還可以繼續用
11#
 樓主| 發表於 2008-3-10 19:00:21 | 只看該作者
原帖由 irobot 於 2008-3-10 16:43 發表
Ayu 大大:
謝謝指正。看來是我記錯了。
原來也是 8bit mcu,這個我很有興趣想知道是如何做到 2 us 的解析度啊。



看來irobot大大都這麼說了~~~~小弟我下次就來找大家探討一下如何做到2us的解析度吧:P
12#
 樓主| 發表於 2008-3-10 19:03:46 | 只看該作者
原帖由 wallace_tsou 於 2008-3-10 16:52 發表
如果同時控制數個Servo,每個Servo可能獨立執行,此時使用各自的Pause是O.K。但因為關節是連動的,一個Servo到位時會同時觸發數個Servo齊動,而這些Servo不會同時做完。這是屬於Concurrent問題,不知是否有支援?簡單 ...



wallace大大  你所說的完全沒問題囉

舉個例子
你可以先用
SetPosSpdAndRun(Byte SerID, Word Pos, Word Spd)
讓你的一個servo慢慢移到定位
另在在移到定為的過程中
SetPosSpd(Byte SerID1, Word Pos1, Word Spd1)
.
.
.
SetPosSpd(Byte SerIDN, Word PosN, Word SpdN)

    用這條指令把你接下來所要移動的servo都先設好速度和角度

之後在polling
Get1ServoReadyStatus(Byte SerID, Byte Status)    (或是用event的方式也行)
這條指令 一直到status=1之後

下RunxServo(Byte SerID_1,......,Byte SerID_N)

應該就能達到你的要求了,  每個servo結束的時間會不一樣,就看你的speed值還有current position和Target position的拒離如何了

[ 本帖最後由 freddie 於 2008-3-10 19:18 編輯 ]
13#
發表於 2008-3-10 19:27:04 | 只看該作者
原帖由 freddie 於 2008-3-10 19:00 發表



看來irobot大大都這麼說了~~~~小弟我下次就來找大家探討一下如何做到2us的解析度吧:P


Freddie 大大:
好啊!! 這個很有興趣因為有點難度,而且以前有好一陣子也在想這問題。
按提供的資料計算 (8MHz 已能做 2us 的解析),即在發出1個訊號後便只有 8x2 = 16個 clock cycle 去處理下一個訊號。
當中還可能要處理通訊,很有壓迫感啊!!
究竟當有有甚麼竅門呢 !!  

啊! 忘記問 各個 servo 的訊號是走 serial 還是 parallel 的呢?

[ 本帖最後由 irobot 於 2008-3-10 19:30 編輯 ]
14#
發表於 2008-3-10 20:37:51 | 只看該作者
原帖由 freddie 於 2008-3-10 18:34 發表
ayu兄  大家都是同好 所以也別不好意思囉 看有啥需求就直接說,我也就一一回答ayu兄的問題囉
關於是否可開放程式這件事,因為畢竟利基這家公司花了很多時間一步一腳印把這些東西做起來,所以要開放程式碼可 ...

Hi freddie,

您們公司不錯喔,小弟覺得如果能讓玩家參與一下,可能東西會比較好賣,不然玩到最後,應該會沒有興趣再玩下去的

而且大家也可以共同解決一些問題(小弟沒那個能力啦,只是建議)。因為當初搜尋網路找到複製 mr-c3024 的時候,覺得外國人怎麼那麼厲害,竟然可以把玩具研究的那麼深入,大家也很熱烈在討論。不管玩的還是研究的,最後研究的把玩的帶上來。可能是這樣,外國人在科技方面才那麼強吧?? who know??

當然啦,公司有公司考量,這方面,大家可以理解的。而且您還那麼大方允諾要教大家,這也是破天荒的大事。只怕小弟跟不上大大的腳步喔。

小弟在這裡先謝謝大大的幫忙,只能在後面搖旗吶喊一下,不敢說得上指教啦。不過要是能一窺堂奧 一下下的話,那就是小弟的福氣囉。

有請大大開個版,大家來共同學習囉。真的很感謝大大的熱心幫忙。感謝再感謝。


PS

1、對了,請教大大一下,這個伺服機(和futaba3003差不多規格)和廣營的差很多,不能用您們的組件來組吧??

2、現在只看到兩足,沒看到人型機器人,是否加工一下(最好用這個伺服機規格 )??
謝謝大大囉。

[ 本帖最後由 ayu 於 2008-3-10 20:44 編輯 ]
15#
發表於 2008-3-10 21:10:57 | 只看該作者
ayu大大....是不是這顆??

loucc2002-img600x409-1201319177y_3-11.jpg (48.67 KB, 下載次數: 417)

loucc2002-img600x409-1201319177y_3-11.jpg
16#
發表於 2008-3-10 22:54:12 | 只看該作者
原帖由 uucww 於 2008-3-10 21:10 發表
ayu大大....是不是這顆??

大哥 沒錯,就是這一顆喔。

看這個編譯環境很像常用的51ide,很有親和力。

17#
發表於 2008-3-10 23:38:50 | 只看該作者
ayu大大.....我現在繪製伺服機機構圖欣賞!!

001.jpg (40.89 KB, 下載次數: 422)

001.jpg

002.jpg (44.28 KB, 下載次數: 419)

002.jpg

003.jpg (55.33 KB, 下載次數: 415)

003.jpg

004.jpg (47.13 KB, 下載次數: 411)

004.jpg

005.jpg (66.5 KB, 下載次數: 402)

005.jpg

006.jpg (49.63 KB, 下載次數: 417)

006.jpg
18#
發表於 2008-3-11 09:17:12 | 只看該作者
追加廣營商標!!

[ 本帖最後由 uucww 於 2008-3-11 11:03 編輯 ]

007.jpg (30.95 KB, 下載次數: 426)

007.jpg

009.jpg (64.6 KB, 下載次數: 400)

009.jpg

008.jpg (151.72 KB, 下載次數: 408)

008.jpg
19#
發表於 2008-3-11 11:30:59 | 只看該作者
追加豬頭商標

uucww.jpg (51.45 KB, 下載次數: 407)

uucww.jpg

uucww-1.jpg (62.79 KB, 下載次數: 419)

uucww-1.jpg
20#
 樓主| 發表於 2008-3-11 20:28:57 | 只看該作者
原帖由 ayu 於 2008-3-10 20:37 發表

Hi freddie,

您們公司不錯喔,小弟覺得如果能讓玩家參與一下,可能東西會比較好賣,不然玩到最後,應該會沒有興趣再玩下去的http://hk.l.yimg.com/hk.yimg.c ...


1、對了,請教大大一下,這個伺服機(和futaba3003差不多規格)和廣營的差很多,不能用您們的組件來組吧??

2、現在只看到兩足,沒看到人型機器人,是否加工一下(最好用這個伺服機規格 )??


其實ayu兄所提的這個servo的大小我們之前就有發現啦(因為我們這邊試了一些servo也發現就是小了那個0.5mm),
若是要用點力塞進去其實也是可以, 因為鋁合金件還有點彈性也還不會差太多:P 不過我們在下一版的鋁合金座就把這個問題改過來啦
新版鋁件大概在三月中的時候會有sample回來

另外ayu兄所提的人型機器人, 我們也已經正在努力啦:P 不過由於人手實在有限 所以只能一件一件慢慢來 還請ayu兄多多包涵囉
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-11-24 03:15 , Processed in 0.220583 second(s), 9 queries , Apc On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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