2015年5月2日 星期六

ROSA 的伺服馬達控制

http://4rdp.blogspot.com/2015/05/rosa_2.html

續前文,當初開發 ROSA 其中一個主要目的在方便控制 Arduino 的伺服馬達,在此使用 Tower Pro SG90 為施作的對象,因為它價廉、質輕,有賣 Arduino 套件的電子材料行都有在賣,也可以網購,很容易取得,是不錯的電子教材實驗對象。

這款伺服馬達可控制角度範圍在 0 ~ 180 度,採取脈衝訊號控制,ROSA 有下列幾個指令可以控制伺服馬達角度旋轉。



SERVO pin,degree[,%[,ms[,hold]]]
這是對伺服馬達角度控制的指令,pin 是 Arduino 的腳位號碼,degree 是設定的角度,% 為給伺服馬達的電力,ms 影響馬達轉定位後是否立即執行後面的指令,hold 設定馬達轉定位後是否持續通電。

下表是 ROSA328 的參數值範圍


pin2 ~ 19Arduino 的腳位號碼
degree0
1 ~ 179
180
181 ~ 254
255
最小的角度
特定的角度
最大的角度
角度不變更
歸位的角度 = 90
%0
1 ~ 100
伺服馬達停止運轉
提供給伺服馬達的電力
ms0
1 ~ 255
轉定位後立即執行後續指令
轉動 N x 100ms 後執行後續指令
hold0
1
伺服馬達轉定位後,停止通電,憑馬達齒輪力量維持
伺服馬達轉定位後,持續通電,可維持馬達的力量

例如,
SERVO 2,0,100,0,0     
設定 PIN 2 最小角度,以 100% 電力運轉,轉定位後立即執行後續指令,並停止繼續通電

SERVO 3,90,20,10
設定 PIN 3 角度 90,以 20% 電力運轉,馬達運轉 1000 ms 後再執行後續指令

SERVO 4,180,50
設定 PIN 4 最大角度,以 50% 電力運轉

SERVO 5,255
設定 PIN 5 角度歸位,初始預設為 90 度

SERVO? pin
查詢伺服馬達的參數設定,回應角度、電力、ms 時間 (這時間會倒數至零)、持續通電狀態

====== 因記憶體 RAM 不足,自 00.20 版本後取消 ANGLE 指令 ============
ANGLE pin,mid[,max[,min[,rev]]]
設定伺服馬達的歸位角度(mid)、最大角度(max)、最小角度(min)及是否反轉(rev)
例如,
ANGLE 2,90,180,0,0        
設定 pin 2 歸位角度 90 度,最大角度 180 度,最小角度 0 度,沒有角度反轉

ANGLE 3,60,170,10
設定 pin 3 歸位角度 60 度,最大角度 170 度,最小角度 10 度

ANGLE 4,50,120
設定 pin 4 歸位角度 50 度,最大角度 120 度

ANGLE 5,90
設定 pin 5 歸位角度 90 度

ANGLE? pin
查詢伺服馬達的角度設定   
===============================================================        

SPEED pin,%,...
設定伺服馬達轉動的電力,% 範圍 0 ~ 100,經驗值參考,20% 以下,當有負載時常顯得無力驅動,例如
SPEED 3,20,100       pin 3 以 20% 電力驅動伺服馬達,pin 4 以 100% 電力驅動

SPEED? pin
查詢伺服馬達轉動的電力

HOLD pin,value,...           
設定伺服馬達到達定位後,是否持續通電,value 為 1 時表示持續通電,數值為零時則否有持續通電的伺服馬達,即使被外力扳動馬達角度,也可以復位。
例如,
HOLD 2,0,1        pin 2 不通電,pin 3 持續通電

HOLD? pin
查詢伺服馬達到達定位後,是否持續通電

REVER pin,value,...
設定伺服馬達是否角度反向,value 為 1 時表示角度反向,也就是實際角度設定 = 180 - 設定角度,而 value 為 0 時,設定角度不反向。角度反轉可方便方向設定,一般左右對稱的伺服馬達,只要改變這項設定即可使用相同角度數值。
例如,
REVER 2,0,1      pin 2 角度正常,pin 3 角度反向

REVER? pin
查詢伺服馬達的角度反向設定狀態


接續 .....

沒有留言:

張貼留言