Robofun 機器人論壇

標題: 程式架構 問題 [打印本頁]

作者: xu3u4rmp4    時間: 2009-9-17 17:37
標題: 程式架構 問題
站上許多人用51去寫控制程式
都是用輪替輸出的方式去寫
也就是8顆馬達所有HI的時間都在20mS的週期之內完成

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

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

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

不見得好用,只是觀念很有趣
作者: yase    時間: 2009-9-18 00:49
我目前正在想這個問題.正在試驗我的想法.想使用中斷的方法去做到.
因為只有一些想法.正在執行中並不確定是否可行.CPU使用LPC2148
作者: marbol    時間: 2009-9-25 23:30
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內完成,然後回到第一時間週而復始進行







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