Robofun 機器人論壇
標題:
[求助] 如何同時控制伺服馬達
[打印本頁]
作者:
konica777
時間:
2008-12-8 15:10
標題:
[求助] 如何同時控制伺服馬達
新手小弟想請問一個問題 , 我是利用8051控制KONODO 2 HV 788,之前有問過控制速度的方法已經OK了,但是我現在是要同時控制兩顆以上做速度上的變化,下面是程式碼,用的PWM的方式,出現的問題就在當要開始控制兩個馬達的速度時(這裡 !!!!!!!!!!!!!!~~~~)只有R1這顆馬達會有動作R2是沒有反應的,這是為什麼???可請高手幫我解答~~謝謝!! 抱歉 描述不太清楚的地方請見諒
org 00h
mov r1,#00100000b
mov r2,#00000010b
jmp start
start:
mov r4,#50
loop: ; 到起始位置 90度
mov p1,r1
call delay15
mov p1,r2
call delay15
mov p1,#00000000b
call delay200
djnz r4,loop
;開始控制速度 !!!!!!!!!!!!!!~~~~
;動作1
mov r4 ,#1
Loop1:
mov r7, #1 ;代表0.02的倍數
mov p1,r1
call delay15 ;1.5ms
call delay002
mov p1,#00000000b
call delay200 ; 20ms
mov p1,r2
call delay15 ;
call delay002 ; 跟上面合起來是1.52ms
mov p1,#00000000b
call delay200 ; 20ms
djnz r4 , Loop1
.....接著就是動作2 動作3...30,這是我把起點到終點分了好幾段,已達到控制速度
作者:
nichal
時間:
2008-12-8 15:59
大大您好
可能您對PWM的理解有一點點問題唷~~~
雖然說20mS要完成一個PWM 的cycle是對的
但是變成兩個或三個以後
還是一樣要在20mS完成
也就是您在PWM1完成後要接著PWM2
兩個時間加起來如果是30
那你接下來只能delay170
兩個時間加起來是50
那麼你就只能delay150
這樣有理解了嗎?
作者:
konica777
時間:
2008-12-8 17:07
謝謝你的回答,不過我還是不太懂...
第一:如果pwm 輸出1 的部分是1.5ms 而剩下 輸出0的部分就必須是18.5ms 你的意思是這樣嗎??因為之前也有考慮這個問題,因為馬達一樣都能運轉所以並沒有別注意她 = =
第二: 其實我不知道我這樣速度的控制對還是不對,雖然有出現該有的效果... 照我上面程式出現的動作是兩顆馬達會先到90度的定位點,接著R1那顆馬達會有速度的變化並往我指定的位址轉動,但同時R2卻不動了,這樣的情形跟你說的有關連嗎???是否可以麻煩你在說清楚一點~~~ 謝謝
作者:
wboe
時間:
2008-12-8 20:43
簡單的說
每顆馬達都要20ms餵它一次訊號(每個通道20ms要循環一次)
如果沒有20ms給它吃訊號它就會罷工....
這樣解釋不知道可以嗎?
作者:
nichal
時間:
2008-12-8 20:45
大大您好
請您先試著將您的程式用圖畫出來
這樣或許您就比較知道我想表達的意思
正確的作法是畫圈的信號
您目前的寫法是畫叉的信號
至於第二個馬達完全不會動
還得看看您電路的接法
及完整的寫法如何才看得出來
未命名.JPG
(16.24 KB, 下載次數: 476)
下載附件
2008-12-8 20:45 上傳
作者:
nichal
時間:
2008-12-8 20:49
標題:
回復 4# 的帖子
就像wboe大大所說的一樣
依照您的寫法
第一個馬達應該是經過了40mS才又接收到下一個信號
理論上他是會罷工的
可是您又說他有動作
那麼個人覺得他的動作是不完整的
而第二個馬達既然有送正確的信號給他
就應該要會動
就算動得不完整也至少要動一下
完全不動也是不可能的
所以才說要檢查您的電路是如何配接的
作者:
wboe
時間:
2008-12-8 23:49
可能原因是~~~
沒記錯~有些馬達 在20MS沒收到訊號。
他會亂跑,這可能就是樓主所說的~有動作但不完整。
這應該不能說有動作。應該說馬達誤判了!!你可以把訊號線 接地在拔起來測看看!!
歡迎光臨 Robofun 機器人論壇 (https://robofun.net/forum/)
Powered by Discuz! X3.2