# Servo motor SG90 伺服馬達SG90
伺服馬達(servo motor),因常用於遙控模型飛機, 所以又常稱為RC伺服機(RC Servo,Radio Control Servo,Remote Control Servo)、伺服馬達舵機。
伺服馬達裡含有直流馬達、齒輪箱、軸柄、以及控制電路,我們可透過訊號控制軸柄的停止角度,大概都是0到180度,但不同廠牌型號會有不同的範圍;經由齒輪箱降速後,變成適當可用的轉速,並且提供更高的轉矩(扭轉力)。
另外還有能連續轉動的伺服馬達,有些出廠時便能連續轉動,有些則是玩家自己動手改造,這種馬達透過訊號可控制轉動的速度。
一般伺服馬達有三條線,電源(紅色)、接地(黑或棕色)、訊號線(白、黃、橘、藍,甚至是黑色)。透過訊號線傳送PWM脈波來控制軸柄的停止位置旋轉角度,這個訊號脈波必須每秒重複50次(也就是50Hz),而脈衝持續時間長短便代表了馬達該將軸柄轉到什麼位置,範圍從1.0ms到2.0ms(millisecond,毫秒,千分之一秒),若想置中則是1.5ms;也可將1.0ms當做角度0度,那麼1.5ms會是90度,2.0ms則是轉到底180度。注意,也有可能反過來。
不過每個廠牌型號的伺服馬達可允許旋轉的角度各不相同,也就是說可接受的訊號脈衝範圍也不相同,必須查閱產品資料規格書,若超出範圍可能會損害伺服馬達。
規格: •重量: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
程式範例:
#include <Servo.h>
Servo myservo; // create servo object to control a servo
int val; // variable to read the value from the analog pin
void setup() {
myservo.attach(9); // attaches the servo on pin 9 to the servo object
}
void loop() {
myservo.write(0); // sets the servo position according to the scaled value
delay(500); // waits for the servo to get there
myservo.write(30); // sets the servo position according to the scaled value
delay(500); // waits for the servo to get there
myservo.write(60); // sets the servo position according to the scaled value
delay(500); // waits for the servo to get there
myservo.write(75); // sets the servo position according to the scaled value
delay(500); // waits for the servo to get there
myservo.write(90); // sets the servo position according to the scaled value
delay(500); // waits for the servo to get there
}
結果:
電路(接線)
馬達會依據程式角度做旋轉