一般伺服馬達有三條線,電源(紅色)、接地(黑或棕色)、訊號線(白、黃、橘、藍,甚至是黑色)。透過訊號線傳送PWM脈波來控制軸柄的停止位置旋轉角度,這個訊號脈波必須每秒重複50次(也就是50Hz),而脈衝持續時間長短便代表了馬達該將軸柄轉到什麼位置,範圍從1.0ms到2.0ms(millisecond,毫秒,千分之一秒),若想置中則是1.5ms;也可將1.0ms當做角度0度,那麼1.5ms會是90度,2.0ms則是轉到底180度。注意,也有可能反過來。
不過每個廠牌型號的伺服馬達可允許旋轉的角度各不相同,也就是說可接受的訊號脈衝範圍也不相同,必須查閱產品資料規格書,若超出範圍可能會損害伺服馬達。底下是Tower Pro SG90的規格:
- 重量:9g
- 尺寸:23*12.2*29mm
- 工作電壓:4.8V
- 轉矩:1.8kg-cm,當工作電壓為4.8V時
- 運轉速度:0.1秒 ∕ 60度 ,當工作電壓為4.8V時
- 脈衝寬度範圍:500~2400µs
- 死頻帶寬度(dead band width):10µs
硬體線路很簡單,因為只有一個伺服馬達,我直接由Arduino的5V腳位供電。若想使用超過兩個,則應以另外的電源供電,而且要記得共同接地。
電路圖如下,除了電源5V與接地外,訊號線接往Arduino的數位腳位9。
照片如下,Tower Pro SG90的三條線顏色分別是黃、紅、棕,對應訊號、電源、接地。
接下來是軟體的部份,先讓伺服馬達來回旋轉吧。
#include <Servo.h>
Servo myservo; // 建立Servo物件,控制伺服馬達
void setup()
{
myservo.attach(9, 500, 2400); // 修正脈衝寬度範圍
}
void loop()
{
for(int i = 500; i <= 2400; i+=100){
myservo.writeMicroseconds(i); // 直接以脈衝寬度控制
delay(300);
}
for(int i = 2400; i >= 500; i-=100){
myservo.writeMicroseconds(i);
delay(300);
}
}
A : BLK
A- : GRN
B : RED
B- : BLU
Reference : http://yehnan.blogspot.tw/2013/09/arduinotower-pro-sg90.html
沒有留言:
張貼留言