Robofun 機器人論壇

 找回密碼
 申請會員
搜索
熱搜: 活動 交友 discuz
樓主: marbol
打印 上一主題 下一主題

機器蟲hexapod的零件-串列伺服機控制板自製達成

[複製鏈接]
21#
 樓主| 發表於 2006-5-29 07:29:31 | 只看該作者
原帖由 ayu 於 2006-5-28 23:06 發表
今天只作到24個輸出,31個輸出遇到瓶頸,重點在 p3 八腳的問題,p0,p1,p2都可用,總共24腳可輸出。

只好再想幾天了。


您真的很棒喔!!
已經進行到VB透過串列埠傳資料的階段,想必您也有用到某種協定(像是SSC的255,PIN,PWM)是嗎??
VB透過串列埠傳資料的階段相當重要,類似教導盒的動作,可以省去很多建Table的動作,
這部份我手腳就慢得多囉!!
p3 八腳的問題,可以說明看看!!我很有興趣瞭解喔!!

P.S.可以把您的原型照片PO上來看看嗎??
22#
發表於 2006-5-29 08:44:12 | 只看該作者

回覆 #21 marbol 的文章

對不起,SSC的255,PIN,PWM我還不懂,可否 教教我。

我是用一般的通訊而已,
MSComm1.Settings = "9600,n,8,1"
MSComm1.Output = "字串"      這兩行程式來給8051傳送指令
然後8051作判斷由那一個腳輸出和產生脈波來操作伺服機。

照片我po不上來耶,可教我一下嗎?不然我mail給您也可以啊!
其實照片和您的一模一樣,只是在rs-232通訊上,加了一顆icl232ic而已,把兩者電壓準位調成一樣。

p3因為p3.0作接收vb訊號,我在程式設計上跟之前的p0,p1,p2產生問題,這樣說不明白,我把程式給您看,您再幫一下也可以吧!  謝謝喔。
23#
 樓主| 發表於 2006-5-29 18:15:12 | 只看該作者
原帖由 ayu 於 2006-5-29 08:44 發表
對不起,SSC的255,PIN,PWM我還不懂,可否 教教我。

我是用一般的通訊而已,
MSComm1.Settings = "9600,n,8,1"
MSComm1.Output = "字串"      這兩行程式來給8051傳送指令
然後8051作判 ...


您可以先爬爬我post的文,SSC的255,PIN,PWM原理以下有提到
http://www.robofun.net/forum/vie ... &extra=page%3D1

不過既然您能用串列來控制伺服機,SSC的255,PIN,PWM的原理應該對您不難~~~~

其實8051有32隻腳可以做IO控制輸出,如同您實做的,減去了一隻串列RX腳後就剩31隻腳可用,
接下來要瞭解的是您是用輪序的方式提供PWM輸出 ,還是用計時匹配的方式提供PWM輸出,
一開始我的想法是用到輪序的方式(類似步進馬達的控制的時序,大原則是PWM週期不變),不過以最大的脈波2.5ms來除20ms的PWM週期,最多只能有8隻腳的PWM可以控制,若是要多加幾隻腳來用,那麼唯一的途徑就是延展PWM週期,不過延展PWM週期會造成伺服機動作變慢,其實延展PWM週期這個想法用在調控伺服機的速度上是一個不錯的方法,不過既要增加接腳,那麼勢必要放棄調控速度的這個方法,同時間只能折衷做選擇~~~~~~~~~~~

如果您用計時匹配的方式,那麼恭喜您了,速度控制便成為可能~~~

post圖的方式在發表回覆後會出現視窗,裡面要填入您看到的辨證碼,下方會有上載的欄位~~~~~~~
24#
發表於 2006-5-29 19:58:46 | 只看該作者

回覆 #23 marbol 的文章

我是用輪序的方式提供PWM輸出,因剛使用,不過計時器的使用應也使用,只是我覺得兩者相同,可能我還沒遇到難題,不過看您的文章您好像是使用ssc晶片和51兩者來串連使用吧 ? 我有寄vb的顯現圖控方式,您不曉得看到沒有 ?

對了,我這個是看了kevin6010 所提供pic連接vb所作的,感謝kevin6010。

[ 本帖最後由 ayu 於 2006-7-25 13:31 編輯 ]
25#
 樓主| 發表於 2006-5-29 22:17:33 | 只看該作者
原帖由 ayu 於 2006-5-29 19:58 發表
我是用輪序的方式提供PWM輸出,因剛使用,不過計時器的使用應也使用,只是我覺得兩者相同,可能我還沒遇到難題,不過看您的文章您好像是使用ssc晶片和51兩者來串連使用吧 ? 我有寄vb的顯現圖控方式,您不曉得看到 ...


看到了,加分加分!!您也用40us來做分割喔!!
請教一下??您的每隻腳的PWM是持續輸出,還是輪流輸出??
持續輸出才可以讓伺服機維持它的角度與扭力喔!!
輪流輸出則無法維持,因為這隻腳在20ms內有作用!!下一個20ms因為換另一隻腳了,原先那隻腳就無作用了!!

去年做的那隻機器蟲是使用ssc晶片和51兩者來串連使用!!
今年post上來的資料是可由晶片1透過rs232傳給晶片2輸出控制伺服機~~~

[ 本帖最後由 marbol 於 2006-5-29 22:57 編輯 ]
26#
發表於 2006-5-29 23:13:20 | 只看該作者

回覆 #25 marbol 的文章

假如點那一個圖(SERVO1)就輸出那一個伺服機(P1.0),點另外的圖(SERVO2),就輸出另外的伺服機(P1.1)以此類推
,指針指的數值就是PWM的波寬。

照這樣看來應該是輪流輸出。這樣程式要重寫了,如不會的話,希望您要指導一下喔!謝謝。

由晶片1透過rs232傳給晶片2輸出控制伺服機是什麼意思呢?51接51不是用一條線把兩晶片的R接T即可?
還是SSC接51需用RS-232來接?

[ 本帖最後由 ayu 於 2006-7-25 13:34 編輯 ]
27#
 樓主| 發表於 2006-5-31 11:25:01 | 只看該作者
原帖由 ayu 於 2006-5-29 23:13 發表
假如點那一個圖(SERVO1)就輸出那一個伺服機(P1.0),點另外的圖(SERVO2),就輸出另外的伺服機(P1.1)以此類推
,指針指的數值就是PWM的波寬。

照這樣看來應該是輪流輸出。這樣程式要重寫了,如不會的話,希望 ...


1.還不急著放棄,您可以點另外的圖(SERVO2),就輸出另外的伺服機(P1.1)的同時,用手去扳動伺服機(P1.0),如果伺服機(P1.0)能容易扳動而沒有抵抗力,那麼才能算是輪流輸出~~~

2.這樣說吧!!串列傳輸協定rs232是一種溝通的方式,如同usb也有傳輸協定,只要兩方設定好傳輸協定,就可以對傳~~~~~~~~
因為51跟51都是(0v~+5v)的TTL的準位,所以可以很簡單的用一條線就可連起來,不需要透過max232或ICL232晶片的處理~~~~~~
但是PC與51的傳輸,因為PC的串列埠輸出入訊號電壓是+15v~-15v的負邏輯準位,而51是TTL的準位,要把兩者的電壓位準拉齊,才能互相接軌,所以就必需要透過max232或ICL232晶片的處理,換句話說,max232或ICL232晶片只是負責倍壓與降壓的電壓轉換IC!!

3.SSC原本設定就是與PC連結(都是+15v~-15v的負邏輯準位),若是SSC與51連結的話,則需要max232或ICL232晶片做電壓位準的轉換

4.我在桃園縣耶~~~跟您在台南是有點小遠,碰面有機會再說啦!!要是有不方便公開的問題可以用mail來聊聊~~~~~能公開的問題不妨就在這論壇上討論,招來更多有心學習的人,也順便把知識傳佈出去,這不是很好嗎!!(可以的話是希望您考慮用用PIC,或者是AVR的微控器,這樣就有得聊了)

[ 本帖最後由 marbol 於 2006-5-31 13:40 編輯 ]
28#
發表於 2006-5-31 11:43:31 | 只看該作者

回覆 #27 marbol 的文章

我失敗了,真的是輪流輸出,這兩天我想了很久。
明天再用示波器看波形,操作另外的伺服機時,原先的伺服機沒法儲存,您的是對的,我的是錯的。
您是用一個單晶片作的,沒拿ssc來連接產生pwm吧?
謝謝您的教導。
29#
 樓主| 發表於 2006-5-31 12:21:15 | 只看該作者
原帖由 ayu 於 2006-5-31 11:43 發表
我失敗了,真的是輪流輸出,這兩天我想了很久。
明天再用示波器看波形,操作另外的伺服機時,原先的伺服機沒法儲存,您的是對的,我的是錯的。
您是用一個單晶片作的,沒拿ssc來連接產生pwm吧?
謝謝您的教導。


沒什麼大不了的,從過程中得到的才是珍貴!!加油!!
因為有使用過SSC,所以才發現這個持續輸出的現象,
所以在規畫51製作出相同的功能上才會特別注意~~~~~~
很可惜我沒有邏輯分析儀,不然就show出來看!!
再附上影像檔~~~
雖然SSC相當貴三三,也有其它種類的串列伺服機控制板,不過目前國內只有playrobot有代理這個產品~~~,在購買上尚稱方便~~

[ 本帖最後由 marbol 於 2006-5-31 13:55 編輯 ]

串列伺服機控制器影片.wmv

501.83 KB, 下載次數: 2782

自製的串列伺服機控制板運作影片

30#
 樓主| 發表於 2006-6-1 22:19:31 | 只看該作者
原帖由 ayu 於 2006-5-31 16:16 發表
我再想…………,如成功再通知您,怎麼跟您連絡啊 ? 桃園不遠,為了學習,我會去的,只希望您不要拒絕 ?

只希望不要超過太多天,不然要睡您家了,我很好養的,滿漢大餐招待,一定要的,至少!


少抬槓了~~~我這裡可不是中途之家~~~~~
可以的話,痲煩post上來您的大作跟微控器發展環境來show一下吧~~~~~

[ 本帖最後由 marbol 於 2006-6-1 22:50 編輯 ]
31#
發表於 2006-6-1 23:53:01 | 只看該作者
如果運用CPLD或FPGA設計可載入預設值式的計時器陣列,應該有可能達到更多輸出吧:P
如設計一個高時脈循環狀態機,每一個週期掃一次計時暫存器的值並遞減或遞增,為0或溢位時就改變輸出狀態,以一般CPLD的2~30Mhz運作速度(還有可能更高..80Mhz..@@)絕對有辦法輸出週期小於1uS的近並列PWM輸出...
不過我也還在研究...希望能弄出獨立式硬體PWM陣列....
32#
發表於 2006-6-3 05:00:11 | 只看該作者
架構修改一下後..可以用74373做簡單的IO延伸輸出...透過共用匯流排傳輸PWM的資料...8051內部則運用TIMER+暫存器orRAM做虛擬計時器...每次把所有暫存器的值讀出、運算、回存和輸出計時終了訊號
 |        ˍˍˍˍˍˍˍˍˍˍˍˍˍˍˍˍˍˍˍˍˍ
 |-------|74373 陣列  |第二組LATCH  |≡
8|PWM BUS|          |同步化所有PWM  |≡ 多組PWM同步輸出
0|-------| 預先拴鎖     |的信號       |≡
5|==控制信號==|ˍˍˍˍˍˍˍˍˍ|ˍˍˍˍˍˍˍˍˍˍ|≡
1|
 |
 |



Start

掃瞄N個計時暫存器@記憶體
(Load Data[N]→DJNZ Data,PWM_CHG→SCAN_NEXT↑Load Data[N+1])

PWM_CHG
(determine PWM_Data#N→Latch PWM status to first 74373 arrays→Load Data preset[N]→if(N==Last data)→↓PWM_Latch_Complete→else↑)

PWM_Latch_Complete
(Output status→Latch second 74373 arrays→Output current PWM status)

Restart PWM cycles

不過這個方式需要更多處理器時間...所以比較適合高時脈的處理器...至少要40Mhz以上...優點是所有輸出都是同步執行...並且所有計數器都處於計時模式,不浪費處理器時間,最高可達1/2內部RAM輸出(HI、LO各佔一組Byte)。

華邦有出一款高速51: W78E51-40 ,應該蠻適合做這個應用...不行的話還有PIC的MCU,最高速可以達到40MIPS...輸出可到數Mhz...>w<

[ 本帖最後由 omegaCD 於 2006-6-3 06:56 編輯 ]
33#
發表於 2006-6-3 07:51:01 | 只看該作者

回覆 #35 omegaCD 的文章

marbol 作的好像不用這麼麻煩耶,不過他沒回應,

真的很謝謝您的見解,我會試試看,感謝再感謝。
34#
 樓主| 發表於 2006-6-3 12:20:25 | 只看該作者
原帖由 ayu 於 2006-6-2 06:48 發表
您也可以po一下嗎?

我的發展環境只有8051和vb而已,其它的晶片可能無法購置,我無法像各位,可以買這麼多的晶片來發展想要發明的東西,我只能以現有的硬體8051來寫程式,我無法購買這麼多的其它晶片,只好從程 ...




您可能誤會我的意思了,能夠DIY當然就不要買現成的,最主要的目的是以便宜簡單的方式達到目的~~~~~~
我的發展環境是透過相關的網站跟線路圖,以DIY的方式做出來的,,我是採用89S系列的51微控器,當然PIC與AVR發展環境也是有DIY出來,最主要它們都有ISP線上燒錄功能,價格上51是50大洋左右,PIC或AVR普通的也100多大洋,其實還好啦!!!因為51與PIC或AVR的架構有所不同,所以年輕人多多瞭解也是不錯的啦!!主要是可以"厚植板凳深度"

就市場調查,PIC與AVR才是目前串列伺服機控制器的主流,就是因為其處理速度以及接腳的結構,這方面還在學習,不過答案就在那邊是肯定的!!

我常常提供的理念就是要知道原理,然後如何實現出來,並沒有一定的方法~~~
要是思緒卡住,就回去看看原理,翻翻書本,我想這樣是很好的訓練~~~~~
就是因為這樣,才不會把實現方式一次就限制住了~~~~~
這段期間就麻煩您就多多"苦其心志"一下~~~
當然,我也會來"共襄盛舉",並且"教學相長"

[ 本帖最後由 marbol 於 2006-6-3 12:33 編輯 ]
35#
 樓主| 發表於 2006-6-3 12:30:46 | 只看該作者
原帖由 ayu 於 2006-6-3 00:20 發表
可否po您的程式來看呢? 我都po出來了喔!
這幾天想破頭了。
可否給我一點提示?
謝謝。


您不要急嘛!!我有花時間看您的程式啦!!

您的程式並沒有用到中斷的方法,就個人經驗,中斷很像51的另外幾個同步處理核心,平常不會佔用51處理主程式的時間,一旦中斷發生,就會向51借少許時間來用用---跳到中斷處理副程式來處理!!

就拿您的串列接收副程式來說,若是採用串列中斷來處理,可以把PC丟來的資料先收起來,然後回到主程式做正事-------處理輸出PWM的工作

串列中斷資料的暫存可以用到51內部RAM的20H~5FH位置,因為您未來可能會接收連續的串列資料,或者清除連續的資料區域

最主要的問題就是PWM週期需要相當固定地持續輸出,我想您的伺服機抖動可能是PWM週期飄移的關係,採用中斷是可以減少PWM週期飄移,不過還是會有影響!!!這部份我也在努力當中,兩個方法,避開或減低!!共勉之!!

[ 本帖最後由 marbol 於 2006-6-3 12:34 編輯 ]
36#
發表於 2006-6-4 23:43:12 | 只看該作者
[quote]原帖由 marbol 於 2006-6-3 12:30 發表


您不要急嘛!!我有花時間看您的程式啦!!


我這幾天找了很多資料和查資料,覺得還是買現成硬體來作,比較節省時間,請問您的ssc是什麼規格 ?
我想買8軸以上的ssc,有沒有比較便宜和附贈程式操作的,可否介紹一下 ?
看了您跟helper197 的討論,好像都要買兩種的硬體來操作,請問是不是這樣 ?
37#
 樓主| 發表於 2006-6-5 01:01:26 | 只看該作者
原帖由 ayu 於 2006-6-4 23:43 發表
原帖由 marbol 於 2006-6-3 12:30 發表


您不要急嘛!!我有花時間看您的程式啦!!


我這幾天找了很多資料和查資料,覺得還是買現成硬體來作,比較節省時間,請問您的ssc是什麼規格 ?
我想買8軸以上的ssc, ...


1.關於ssc的使用,說明書用的是basic的範例,所以用51與SSC構連上我是自行摸索得出,與CAT的說明文章裡頭有個簡單範例可以參考,
http://www.robofun.net/forum/vie ... &extra=page%3D2
至於現成的成品,我只用過SSCII,所以不知道其它ssc的效能~~~~這方面要熟讀它的data sheet才能瞭解~~~~順便練練英文嘛!!
2.與Helper研討PSC是從旁研讀PSC的使用手冊而一起討論使用PSC,也因此延伸到USB領域知識的瞭解~~~~~~~~
http://www.robofun.net/forum/vie ... &extra=page%3D1
3.串列伺服機控制器的coding經過將近半年的努力及搜集大量相關資料與研讀許多零碎的PIC與AVR程式片段方才以51呈現初步成果,您當然可以使用現成的ssc成品來應付急需,那天有了空閒歡迎再來摸索與精煉ssc的自製吧!!

[ 本帖最後由 marbol 於 2006-6-7 17:35 編輯 ]
38#
 樓主| 發表於 2006-6-10 14:36:38 | 只看該作者
ayu大大!!
把您call回來囉!!
這個友站論壇內有發表4 Channel PWM Controller,我想這應該是一個很好的練習~~~

http://www.armlabs.com/phpBB2/viewtopic.php?t=3262

把它轉成51的程式!!有問題來討論吧!!
39#
發表於 2006-6-11 22:59:58 | 只看該作者

回覆 #39 marbol 的文章

marbol您好,

謝謝您的回應,這個程式我會研究的,謝謝您了。

Kevin6010 提供Servo Controller,我作了實驗,結果在我的 "Kevin6010" 提供Servo Controller,控制7個 Servo實驗報告"

一文中,盼您的修正,您有沒有作啊??

您現在應該也進入PIC了吧??

  C 也進入了喔??
40#
 樓主| 發表於 2006-6-11 23:56:00 | 只看該作者
原帖由 ayu 於 2006-6-11 22:59 發表
marbol您好,

謝謝您的回應,這個程式我會研究的,謝謝您了。

Kevin6010 提供Servo Controller,我作了實驗,結果在我的 "Kevin6010" 提供Servo Controller,控制7個 Servo實驗報告"

一文中 ...


1.說真的,那些用PIC寫的程式真像天書,很難硬K,
所以現在只有一步一步慢慢從PIC硬體架構跟組語去搭配瞭解~~~

2.c語言我不太會寫,不過就簡易的C程式還是能看的出它的意思,所推薦的C程式串列伺服控制器最主要是相當簡潔,建議先從這裡開始改寫成51,PIC先放一邊,您的疑問,也是大家的疑問,歡迎在這上面討論喔!!
P.S.您可以把它4個PWM輸出波形畫畫看,看它是如何連續輸出的~~~
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-4-29 21:43 , Processed in 0.336482 second(s), 8 queries , Apc On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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