Robofun 機器人論壇

標題: cat大大好!!SSC(串列伺服機控制器)的使用原理 [打印本頁]

作者: marbol    時間: 2005-12-15 21:44
標題: cat大大好!!SSC(串列伺服機控制器)的使用原理
我也是用S03T2BB,主要是它的扭力夠大以及可支撐負載的雙培林,
一分錢一分貨,可是效果倒是蠻好的,不過有得有失,轉動60度的響應時間較長,
在程式設計上,串列輸出PWM值指令間隔須加上延遲以免伺服機來不及動作,造成
不協調....................................

SSC有兩種電源輸入,要接對,使用手冊上是這麼建議的
一組是給ssc上的PIC控制器用,基本上PIC是CMOS
所以3~18V都可以接,不過用市面上常用的9V電池接入就可以,
另一組電源則是
只要接4.8V~6V給伺服機用即可,

若是廣營的伺服機其3pin的母接頭安排為白-紅-黑,
白色為PWM信號
紅色為4.8V~6V
黑色為接地
這樣設計是為了安全考量,即使反過來插,頂多不動作,不會燒起來,不過還是要確認好SSC的3pin公腳,然後小心的把伺服機的3pin的母接頭接上便可以使用,不要跟自己的$過不去.....

您可以先試試看
若是您用VB寫程式,利用串列埠丟串列訊號給SSC,記得將串列埠的第3腳(TX)接到S(in)的S腳,並且將串列埠的第5腳(GND)接到S(in)的G腳作為參考位準

若是您用單晶片寫程式,則需要將單晶片串列輸出接到MAX232的T1/IN,將串列訊號弄成RS232c的準位,再從MAX232的T1/OUT接到S(in)的S腳,並且將單晶片的GND接到S(in)的G腳作為參考位準

接下來
根據SSC的協定說明,需要三位數字來控制伺服機
第一位255為同步用的(原因在於RS232的結束位元為1,而起始位元為0,若接下來為255=FFH=11111111B,則這一段時間約10ms足夠給SSCII判讀與決定接收下一段指令執行)
第二位設定伺服機號碼,ssc-32的話其號碼為0~31共32個號碼
第三位設定伺服機位置為PWM值,0~255對應到0~90度(或0~180度,視jump如何選擇)

至於最後11H為結束位元,是跳出迴圈用的,
例子:
讓5號伺服機做左右左的轉動則對照表如下
LEFT1:DB 255,5,64, 255,5,190, 255,5,64,11H


其實Allen大大有發展SSC之類的串列伺服機控制器計畫,坦克兵工廠的RC電路論壇也有類似的構想(不過它是用來控制馬達的轉向與速度,基本上理念相同),要是成功(以成本來說,目前流行的ISP(線上下載燒錄)單晶片大概在NT200元以下,發展軟體都是freeware,ISP硬體可以自製,相當便宜,又可以學得一項技能,何樂不為),SSC就不會那麼貴三三,機器人的推廣也能更為普及!!!!

[ Last edited by marbol on 2006-1-3 at 23:01 ]
作者: cat    時間: 2005-12-16 23:41
哇~聽您這樣詳細的解說..信心從20%倍增至70%的勇氣去接線了
只不過說真的機械系目前教的相關知識還沒那麼多.所以要慢慢去
找相關傳有名詞資料來整理! 不過說真的要謝謝您幫忙解說 SSC-32
控制版如此詳細 要不然光看說明上的炸彈符號跟內文就會不想真的去試
希望有機會您的作品也上版大這邊和大家分享..最近發現中國的機械人論壇
他們開放式的幫忙回應一些問題已經把機械人設計開發的討論環境
建構的很不錯了! 說真的臺灣這邊真的得要您們這些勇於嘗試的高手
來帶動風氣了呢^O^b
作者: lwc1105    時間: 2006-4-5 00:52
marbol 你好!
請問marbol 3個問題
1.你撰寫PWM程式,8051是用組合語言還是C?
2.8051輸出至伺服機的訊號需要加Buffer放大嗎?
3.輸出至伺服機電源是否可on line上下調整,gain和電壓成正比嗎?

thank....
作者: marbol    時間: 2006-4-5 12:34
原帖由 lwc1105 於 2006-4-5 00:52 發表
marbol 你好!
請問marbol 3個問題
1.你撰寫PWM程式,8051是用組合語言還是C?
2.8051輸出至伺服機的訊號需要加Buffer放大嗎?
3.輸出至伺服機電源是否可on line上下調整,gain和電壓成正比嗎?

thank....



lwc1105大大,您好!!
很高興在這裡看到您,這裡還有製作潛水艇的高手大大,希望您不要錯過
您的問題,回覆如下!!
1.PWM程式我是用8051組合語言寫的,用C的話我就沒有把握抓準每一分割的時間,如您所見的,我是想改寫成PIC甚或AVR,因為速度夠快,分割可以更細,像是SSC就是用PIC做的,對岸中鳴電子的機器蟲就是用AVR做的~~~~
2.不需要加Buffer做電流放大,但是伺服機用的電源與微控器用的電源要分開來,因為伺服機內部有馬達吃電很兇,若是你共用同一電源,將會導致微控器電壓不穩而當機
3.一看就知道您是行家,伺服機的menu有提到輸入的電壓可以4.8~6.0v,相對的扭力與速度都會改變,不過要加裝一些額外的零件來控制囉!!目前我沒有加入這外控功能,應該還有什麼方式可以不外加零件而能夠達到同等效果的方法~~~這方面可以來研討研討!!
作者: ayu    時間: 2006-5-11 14:23
請問您的8051程式可分享嗎?
還有,請問您是用電腦連接到51去控制?
或是使用可變電阻來控制?
作者: marbol    時間: 2006-5-13 09:59
原帖由 ayu 於 2006-5-11 14:23 發表
請問您的8051程式可分享嗎?
還有,請問您是用電腦連接到51去控制?
或是使用可變電阻來控制?


1.程式的部分建議從我發表的基礎原理去找答案,原理懂了,用什麼語言都寫得出來,有問題再來研討,這樣會更有感覺
2.目前可以由PC或者是另一顆微控器透過串列傳輸來控制這個自製板,如同控制SSC一般
3.可變電阻控制~~~~透過發射機搖桿來控制嗎??這部分正在惡搞中,希望不久能夠有成果出來~~~
作者: zirok    時間: 2007-9-11 20:26
標題: 請問marbol大大
我最近也在研究這一部分,不過一直還不是很懂 ,
找到基礎的書後(其實裡面是講另一個實作,不是講的很詳細=.=),
稍微瞭解了VB串列傳輸該怎麼寫,不過後面對我來說才是難題@Q@,
要怎麼對我想要控制的O號伺服機賦值呢? VB端的介面則是還在參考當中~.~,
不知道要怎樣才比較"好弄",不知道該怎麼表達~ㄏㄏ,就是要用捲軸式的呢? 還是要用打數字的?還是要用按按鈕它就動一點點,諸如此類,不知道哪一種比較容易作到即時控制@Q@

您說:

根據SSC的協定說明,需要三位數字來控制伺服機
第一位255為同步用的(原因在於RS232的結束位元為1,而起始位元為0,若接下來為255=FFH=11111111B,則這一段時間約10ms足夠給SSCII判讀與決定接收下一段指令執行)
第二位設定伺服機號碼,ssc-32的話其號碼為0~31共32個號碼
第三位設定伺服機位置為PWM值,0~255對應到0~90度(或0~180度,視jump如何選擇)

至於最後11H為結束位元,是跳出迴圈用的,
例子:
讓5號伺服機做左右左的轉動則對照表如下
LEFT1:DB 255,5,64, 255,5,190, 255,5,64,11H


我想請問您您的第一位是作什麼的呢@Q@?,也不太懂您提的例子裡"11H"為什麼是11H呢?
謝謝
作者: marbol    時間: 2007-9-11 22:13
標題: 回復 #7 zirok 的帖子
這個是串列伺服機控制器元祖網頁
http://www.seetron.com/ssc.htm
有data sheet 可以練練英文喔!!!

11H為16進位的數值,換算成十進位為16*1+1=17

嚴格講起來,沒有這個結束位元也沒關係,如果您只有一組動作群的話~~~

這個位元是用在主控端用查table來丟(255,pin,pwm)的一個結尾判斷,因為
我在主控端設定了六個動作群,有使用到選擇的功能,所以必需
要將每個動作群作區隔!!!

所以ssc這個接受端是不會接收到這個結束位元的!!!

[ 本帖最後由 marbol 於 2007-9-11 22:30 編輯 ]
作者: zirok    時間: 2007-9-12 08:04
標題: 回復 #8 marbol 的帖子
雖然是英文苦手,不過還是看看@Q@,
挖=.=...大大做的好複雜,不過我比較想知道大大作的機器蟲介面的功能是可以用手動拉X號servo捲軸,該servo就會動,然後也可以紀錄一整組動作在一次執行完畢那種嗎?
那我一次要兩個servo"同時"轉動是可能的嗎?  感謝大大~
作者: jason0821    時間: 2007-9-12 08:34
新手提問:
1. SSC的解析度是以 0.36度為單位還是更小有實務規範嗎?
2. SSC PWM Period form 5ms ~ 20ms 有規範嗎?
    還是可以再大些??
3. 因為一般實作 PWM 是頻率訊號, SSC 也一樣嗎??

冒昧請問... 因為我想學 伺服馬達控制
另外請問一下:
1. 我想用 9V 電池供電, 可是我的51 只吃五V
    用 7805 很燙, 一下就沒電了, 聽說有 SWITCHING 的
    有人用過哪顆? 效率較好的嗎?
2. 有轉 6V 給伺服機用的嗎?

[ 本帖最後由 jason0821 於 2007-9-12 08:43 編輯 ]
作者: TroyLee    時間: 2007-9-12 21:39
新手提問:
1. SSC的解析度是以 0.36度為單位還是更小有實務規範嗎?
應該是有更小的, 只是精確度的問題
就算你把1ms Pulse切割成1000分去控制,
是否每增加 1/1000 ms 就會改變固定的度數是個迷....(待高手回答)

2. SSC PWM Period form 5ms ~ 20ms 有規範嗎?
    還是可以再大些??
基本上應該是 14ms~20ms 吧@@

3. 因為一般實作 PWM 是頻率訊號, SSC 也一樣嗎??
PWM 是頻率訊號?
應該說 PWM 是 Pulse Width Modulation,
換句話說應該是週期的長度, 但是 Signal High(or low) 的寬度來調變訊號

冒昧請問... 因為我想學 伺服馬達控制
另外請問一下:
1. 我想用 9V 電池供電, 可是我的51 只吃五V
    用 7805 很燙, 一下就沒電了, 聽說有 SWITCHING 的
    有人用過哪顆? 效率較好的嗎?
9v電池供應 7805 應該是不會很燙, 除非你的電流太大(超過1A),
要注意一下 Datasheet 上寫的規格
也要考慮加上散熱片, 試著去算算看產生熱的功率大小,  
P=(Vin-Vout) * Iout

2. 有轉 6V 給伺服機用的嗎?
之前有板友說, 建議不要用Regular後的電源
因為Servo的吃電量有時後會比較大,
所以建議用 NiMH (鎳氫) 充電電池, 一個Cell 1.2v, 5個剛好可以有 6v
直接供應 Servo, 放電量也比 Regular 後的電源大!

--
像這類的 Servomotor ,
是否真的存在所謂的 "規範" 或 "規格" ?
每一家公司的規格都不大相同,
例如:
有的Servo 的 Pulse 是 1.1~1.9ms 或是 0.9~2.1ms 之類的
有的可以轉到 180度, 有的只能轉150度..等等

之所以會這樣大概是因為這類的Servo本來是用在遙控玩具上
遙控玩具用手操控不需要太大的精確度, 就算偏差一點, 人也會用眼睛去判斷修正

[ 本帖最後由 TroyLee 於 2007-9-13 09:17 編輯 ]
作者: jason0821    時間: 2007-9-13 09:55
1. SSC的解析度是以 0.36度為單位還是更小有實務規範嗎?
應該是有更小的, 只是精確度的問題
就算你把1ms Pulse切割成1000分去控制,
是否每增加 1/1000 ms 就會改變固定的度數是個迷....(待高手回)

Q: 也就是說 其實可以調整它的 high duty 去做無段的連續角度控制囉??

2.  那一個 SSC/ 16 ch  需要能支援 16ch 同步 High pulse 嗎?
     還是只要能在 20ms 內將 16ch 都驅動呢??
作者: TroyLee    時間: 2007-9-13 23:15
Q: 也就是說 其實可以調整它的 high duty 去做無段的連續角度控制囉??

Yes...
但是多少會有誤差存在


2.  那一個 SSC/ 16 ch  需要能支援 16ch 同步 High pulse 嗎?
     還是只要能在 20ms 內將 16ch 都驅動呢??

Up to you...
作者: jimmy104212    時間: 2009-3-24 20:01
1# marbol

對不起我是新手~問的問題為專題老師給我的問題

1.
為何需要三位數字來控制伺服機呢??
不好意思問題有點蠢...
作者: marbol    時間: 2009-3-24 23:11
1# marbol  

對不起我是新手~問的問題為專題老師給我的問題

1.
為何需要三位數字來控制伺服機呢??
不好意思問題有點蠢...
jimmy104212 發表於 2009-3-24 20:01


jimmy104212大大好~
   問題應該這樣問,為何需要三位數字來控制多個伺服機呢??那是因為如果您買了SSCII這個伺服機控制器產品,它的使用說明中就講到,要照著它的遊戲規則來賦與指令(三位數字),即可藉以控制多個伺服機的角度,如此而已
   進一步來說,如果您要自製伺服機控制器,用兩位數字也可以控制伺服機,不過受到干擾時,伺服機控制器將分不清賦與何伺服機何角度值,除非您用一套編碼技巧來抗干擾,不然還是加上前面這個同步碼較為簡便易行~~
例如:送一組指令給自製的伺服機控制器  pin1,pwm1,pin2,pwm2,pin3,pwm3......
       正常時伺服機控制器會認pin1,pwm1就是解譯成伺服機1,角度1
       受到干擾時一個指令被跳過那就糟了,可能伺服機控制器會認pwm1,pin2就是解譯
       成伺服機1,角度2那就大大有問題了~~




歡迎光臨 Robofun 機器人論壇 (https://robofun.net/forum/) Powered by Discuz! X3.2