Robofun 機器人論壇

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

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

[複製鏈接]
1#
發表於 2006-7-16 22:20:20 | 顯示全部樓層
我利用8051設計出16個pwm輸出了
利用計時器依順從脈波小的切掉
不過我遇到一狀況
就是每當下一個切掉的時候都會delay20us
所以我試著賞試希望每個輸出都1ms
可是最後最高跟最底相差了320us
雖然差很小
但看到伺服馬達上
卻會差了很大的角度
請問大大會有這個問題發生嗎?
該如何去解決呢?

不好意思
我不知道該怎麼把圖跟程式放上去
我希望提供程式給大家分享
但不知道這麼做是好還是不好
2#
發表於 2006-7-17 08:25:17 | 顯示全部樓層
原帖由 marbol 於 2006-7-16 23:16 發表


恭喜您做出來囉~~~~讚讚~~~
不過這裡好像無法上載文字檔,可能你要用複製貼上來~~~~
至於圖檔,就是您發表回覆後要輸入密碼的下方,可以瀏覽您要上載的圖檔資料夾位置,這樣就可以上傳了~~~~~~~~~

請問您是用 ...


我是以同步輸出去設計的
我大概是以自已的想法去設計的不過還是有類似就是我把值放在40h~5fh裡面。資料格式是輸出腳號0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f(分別代表p1.0~p1.7  p2.0~p2.7)
在來是轉動的角度90,,150,120,210.......(90代表0.9ms以此類推)
在分別放入90,0,150,1,120,2,210,3......
然後在做資料排序90,0,120,2,150,1,210,3.....
然後讓兩個值相減90,0,30,2,30,1,60,3.......
這是因為我把port0和port2送出0ffh
然後以第一個90(0.9ms)放入計時器啟動等到計時器到的時候就切掉clr p1.0
然後在隔30(0.3ms)在i計時器到的時候切掉clr p1.2  (因為0.9ms+0.3ms=1.2ms)就能得到我所想要的1.2ms的輸出
因為做這些判斷需要很多指令
而每次切掉經過的時間是20us
請問該如何去改善呢    ←這是我所遇到的問題
以上大概是high的部份
low的部份就是先算出20ms(65536-40000) ←因為我一個指令週期為0.5us所以需要這樣設計

這是大概的設計 由於我不是很會講解
所以我附程式給大家參考
也希望能給我點意見去解決我現在的問題

DEMO.ASM

4.22 KB, 下載次數: 1720

3#
發表於 2006-7-21 20:02:58 | 顯示全部樓層
原帖由 marbol 於 2006-7-18 07:58 發表


因為PWM是持續輸出的,這個部份在您的OUT迴圈及OP 迴圈看得出來,
不過串列接收好像只執行一次喔~~~~~

若改成串列中斷接收,而且設在"L"的時候來做接收動作,會比較像SSCII的動作方式~~~

您的 ...


不好意思,目前在修改連續輸出,已經照你的提義去修改,似乎很成功,不過還會有些問題,等我都做完了在po給大家做參考
這樣子就完成並列控制器了~~
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-5-15 14:04 , Processed in 0.227216 second(s), 9 queries , Apc On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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