Robofun 機器人論壇

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

程式架構 問題

[複製鏈接]
xu3u4rmp4 該用戶已被刪除
跳轉到指定樓層
1#
發表於 2009-9-17 17:37:34 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
站上許多人用51去寫控制程式
都是用輪替輸出的方式去寫
也就是8顆馬達所有HI的時間都在20mS的週期之內完成

那如果要控制16顆  24顆馬達呢?
不可能在20mS的週期之內完成
以16顆馬達為例   
程式可能要在同一時間讓2顆馬達動作
即2顆2顆分組   分為8組
20mS的週期之內完成8組輸出
這種觀念對嗎?對的話那要怎樣在同一時間輸出2顆馬達的信號(使用C語言)?
若觀念不對的話,正確的觀念是什麼?程式的架構又是怎樣呢?
因為我會控制8顆馬達,卻無法跳出控制8顆以上馬達的瓶頸,我想是我的寫法不對
希望各位能指正我的觀念.
2#
發表於 2009-9-17 20:29:05 | 只看該作者
用傳統51限制太多,通常要突破。
1.換MCU,採用有PWM輸出的MCU,有些有8~16 channel。
2.用CPLD做PWM輸出,51跟CPLD溝通。
3.其他
3#
發表於 2009-9-17 21:47:16 | 只看該作者
pooling 的方式確實限制太多。分出子系統當然也是好方法。

isopod 的觀念很特殊,您可思考一下。
http://www.newmicros.com/index2. ... %26part%3DIsoPod_V2

主要的觀念是用開發出 state machine. 所以反應的時間是純硬體的,而且也是同時多工的

不見得好用,只是觀念很有趣
4#
發表於 2009-9-18 00:49:03 | 只看該作者
我目前正在想這個問題.正在試驗我的想法.想使用中斷的方法去做到.
因為只有一些想法.正在執行中並不確定是否可行.CPU使用LPC2148
5#
發表於 2009-9-25 23:30:13 | 只看該作者
1# xu3u4rmp4
xu3u4rmp4大大~~~~

16顆伺服機光是HI的時間,每顆以2ms來計算,也要32ms,這個時間也就算在Low準位持續時間上,就廣X伺服機而言,Low準位持續時間30ms,40ms也是可以運作,約略到60ms輸出就有些遲緩了~~~,其實要看不同伺服機的實際使用而定,可以試試~~~

"以16顆馬達為例,程式可能要在同一時間讓2顆馬達動作即2顆2顆分組,分為8組20mS的週期之內完成8組輸出這種觀念對嗎?"
如果硬要在20mS的週期之內完成,大大的觀念也是可行的,假設控制伺服機的HI準位最大為2ms,Low準位18ms,全週期就是兩者加起來20ms
如下圖,第一時間就是紅色的作用區域,第二時間就是藍色的作用區域,其餘以下類推,只不過我會分成兩群來看第一群為P0,第二群為P1,在第一時間把值賦與p0.0及p1.0進行計時匹配,依細分程度做足2ms後,移位到p0.1及p1.1進行第二時間的計時匹配........等做到p0.7及p1.7後,就等待計時中斷20ms,把全週期準準扣在20ms內完成,然後回到第一時間週而復始進行


您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-5-12 02:57 , Processed in 0.215061 second(s), 10 queries , Apc On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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