Robofun 機器人論壇

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

請各位幫忙一下串列雙軸馬達控制器的控制方法

[複製鏈接]
發表於 2007-7-31 18:09:31 | 顯示全部樓層 |閱讀模式
如標題所示~
不知各位大大有沒有使用過這個控制器
小弟我已經試了很久了~結果馬達一動也不動~
所以想請各位大大的幫忙~~~
playrobot 該用戶已被刪除
發表於 2007-8-1 00:10:03 | 顯示全部樓層
Hi,
請指名內容 hanks
 樓主| 發表於 2007-8-1 15:55:09 | 顯示全部樓層
產品編號 : U6202
名稱 : 串列(Serial)雙軸馬達控制器

版主你好
我看了使用手冊依然還是不會使用
使用手冊上要我丟一組串列資料,則資料ㄉ形式如下   
start byte=0X80  //  device tybe= 0X00 //  motor#and dlrection //  motor speed
則資料要丟32bit嗎? 還有這筆資料只要丟一次就好了嗎還是要連續丟呢?
發表於 2007-8-2 11:20:32 | 顯示全部樓層
原帖由 jack9052089 於 2007-8-1 15:55 發表
產品編號 : U6202
名稱 : 串列(Serial)雙軸馬達控制器

我看了使用手冊依然還是不會使用
使用手冊上要我丟一組串列資料,則資料ㄉ形式如下   
start byte=0X80  //  device tybe= 0X00 //  motor#and dlrection //  motor speed
則資料要丟32bit嗎? 還有這筆資料只要丟一次就好了嗎還是要連續丟呢?


總共要傳送 4 BYTE,
也就是 1 BYTE、 1 BYTE 傳送,
共傳送四次。

這個控制命令只要丟一次,
驅動器就會持續執行這個命令直到命令改變為止!
發表於 2007-8-4 21:37:48 | 顯示全部樓層
這問題我最近正好碰上,真是巧呀  XD
我要用8051來控制pololu的smc04a的馬達控制器
他的命令形式同為
start byte=0X80  //  device tybe= 0X00 //  motor#and dlrection //  motor speed
以下是我寫的example:
若我要使所有馬達前進,我要送出0x80 0x00 0x00 0x7F


     unsigned int straight[]={0x80,0x00,0x00,07f};/*要丟的字串資料*/
     int j;
   
     /*這部分是開啟8051 uart的mode以及其他相關設定設定*/
     SCON=0x50;   
     TMOD=0x20;   
     TH1=256-(28800/9600);
     TR1=1;


     for(j=0;j<4;j++){         /*慢慢丟資料到,一步一步來*/
        SBUF=straight[ j ];  /*把資料依序放入傳出去的暫存器中*/
        while(TI==0);        /*等資料傳完後,才會繼續,不然就停在這迴圈,等資料傳完*/
        TI=0;                     /*目前此筆資料傳成,可以換下一個byte了*/
     }
希望能解答您的問題!也期待其他前輩的指正了!

[ 本帖最後由 rickchung 於 2007-8-4 21:41 編輯 ]
 樓主| 發表於 2007-8-5 23:15:20 | 顯示全部樓層
謝謝 imas  以及 rickchung 兩位大大的幫忙
我會試試看的~
 樓主| 發表於 2007-8-8 18:26:33 | 顯示全部樓層
使用的馬達 PHOTONIC
                     CG-309A 12V 200 rpm
                     

我的問題是兩個控制器送同樣個訊號結果不一樣,則馬達動的方式如下

馬達控制器1
當指令是 SEROUT 5, 84 [$80,0,0,127]  馬達1 =正轉 ;馬達2 =不動           
                 SEROUT 5, 84 [$80,0,1,127]  馬達1 =反轉 ;馬達2 =不動
                 SEROUT 5, 84 [$80,0,2,127]  馬達1 =不動 ;馬達2 =正轉
                 SEROUT 5, 84 [$80,0,3,127]  馬達1 =不動 ;馬達2 =反轉
                 SEROUT 5, 84 [$80,0,4,127]  馬達1 =正轉 ;馬達2 =不動
                 SEROUT 5, 84 [$80,0,5,127]  馬達1 =反轉 ;馬達2 =不動
                 SEROUT 5, 84 [$80,0,6,127]  馬達1 =不動 ;馬達2 =正轉
                 SEROUT 5, 84 [$80,0,7,127]  馬達1 =不動 ;馬達2 =反轉

馬達控制器2
                SEROUT 5, 84 [$80,0,0,127]  馬達1 =正轉 ;馬達2 =反轉           
                SEROUT 5, 84 [$80,0,1,127]  馬達1 =反轉 ;馬達2 =反轉
                SEROUT 5, 84 [$80,0,2,127]  馬達1 =不動 ;馬達2 = 動一點點(反轉)
                SEROUT 5, 84 [$80,0,3,127]  馬達1 =不動 ;馬達2 =反轉
                SEROUT 5, 84 [$80,0,4,127]  馬達1 =不動 ;馬達2 =不動
                SEROUT 5, 84 [$80,0,5,127]  馬達1 =不動 ;馬達2 =不動
                SEROUT 5, 84 [$80,0,6,127]  馬達1 =不動 ;馬達2 =不動
                SEROUT 5, 84 [$80,0,7,127]  馬達1 =不動 ;馬達2 =不動

所以根本不知道問題在哪,還是說是控制器壞了~~= =??

[ 本帖最後由 jack9052089 於 2007-8-8 21:27 編輯 ]
發表於 2007-8-8 20:57:32 | 顯示全部樓層

回復 #7 jack9052089 的帖子

請問您目前是將馬達控制器都連在一起還是單獨與電腦接時會出現上述情形呢?


-----------------------------------------------------------------
我剛剛太笨回了一整篇結果是在說smc03a的,
回完之後仔細看才....orz

[ 本帖最後由 rickchung 於 2007-8-8 21:18 編輯 ]
發表於 2007-8-9 05:02:49 | 顯示全部樓層
原帖由 jack9052089 於 2007-8-8 18:26 發表
使用的馬達 PHOTONIC
                     CG-309A 12V 200 rpm
                     

我的問題是兩個控制器送同樣個訊號結果不一樣,則馬達動的方式如下

馬達控制器1
當指令是 SEROUT 5, 84 [$80, ...


基本上,問題應該是出在命令格式,
可能要先請您更仔細的詳讀說明書後再做嘗試!

請您參考下列文件
http://www.playrobot.com/files/smc01a_user_guide_playrobot.pdf
並詳讀第8頁、第9頁的命令格式,
如果您不介意一定要自己完成的話,
請您參考第10頁的程式範例撰寫!

希望能協助您解決問題,
參考文件後如果有任何的疑問歡迎討論!
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-3-29 21:01 , Processed in 0.117970 second(s), 8 queries , Apc On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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