- 透過訊號線傳送PWM脈波來控制軸柄的停止位置旋轉角度,這個訊號脈波必須每秒重複50次(也就是50Hz),而脈衝持續時間長短便代表了馬達該將軸柄轉到什麼位置,範圍從1.0ms到2.0ms(millisecond,毫秒,千分之一秒),若想置中則是1.5ms;也可將1.0ms當做角度0度,那麼1.5ms會是90度,2.0ms則是轉到底180度。注意,也有可能反過來。
- 不過每個廠牌型號的伺服馬達可允許旋轉的角度各不相同,也就是說可接受的訊號脈衝範圍也不相同,必須查閱產品資料規格書,若超出範圍可能會損害伺服馬達。
- 死頻帶寬度(dead band width):10µs。脈衝變化調整之間若小於10µs,太快,訊號不穩,馬達不會有動作。
引用馬達標頭檔
- #include <Servo.h>
宣告建立馬達物件
- Servo myServo;
設定由哪個digitalPin(PWM)來控制馬達
- myServo.attach(9);
設定馬達角度
- myServo.write(pos); pos:0~179度
Servo預設的脈衝寬度範圍是544到2400µs,可依規格書修正至500~2400us
- myservo.attach(9, 500, 2400);
直接以脈衝寬度控制,較精準控制
- myservo.writeMicroseconds(i);
- 要注意的是,必須查詢伺服馬達的規格表,查知正確的脈衝寬度範圍,使用writeMicroseconds時也要小心,不可傳入超出範圍的值,否則會損壞伺服馬達。
Reference
- 葉難:Arduino練習:伺服馬達以Tower Pro SG90為例
- Arduino Example:Sweep&Knob