瞭解舵機以及MG996R的控制方法

2023-02-24 18:01:45

瞭解舵機以及MG996R的控制方法

1.舵機基礎知識:

舵機是遙控航空、航天模型控制動作,改變方向的重要組成部件,舵機是一種位置(角度)伺服的驅動器。

舵機主要適用於那些需要角度不斷變化並可以保持的控制系統,比如人形機器人的手臂和腿,車模和航模的方向控制。舵機的控制訊號實際上是一個脈衝寬度調變訊號( PWM訊號),該訊號可由FP-GA器件、類比電路或微控制器產生。

2.舵機的構造:

舵機主要是由外殼、電路板、驅動馬達、減速器與位置檢測元件所構成。

引腳接線說明

  • 紅色:供電;

  • 粽色:地線;必須與控制器, 如SMT32晶片共地;

  • 橙色:PWM訊號線;

3.工作原理:

由接收機發出訊號給舵機,經由電路板上的 IC驅動無核心馬達開始轉動,透過減速齒輪將動力傳至擺臂,同時由位置檢測器送回訊號,判斷是否已經到達定位。位置檢測器其實就是可變電阻,當舵機轉動時電阻值也會隨之改變,藉由檢測電阻值便可知轉動的角度。

大多數舵機PWM控制協定,都已經標準化。舵機一般有三根引線,分別為電源線、地線、訊號線。通過PWM來控制舵機輸出軸的旋轉角度,下圖是MG996R舵機PWM控制波形。

 

 

 

5.舵機的使用:

使用Arduino編譯平臺中的servo.h舵機庫進行對舵機的控制

 

 

將舵機從0°~90°再回轉的控制程式碼如下:

#include <Servo.h>
​
Servo myservo;  // 定義Servo物件來控制
int pos = 0;    // 角度儲存變數pos
void setup() {
  myservo.attach(9);  // 控制線(橙色)連線數位引腳9接受PWM訊號
}
​
void loop() {
  for (pos = 0; pos <= 90; pos ++) { // 角度pos從0°到90°
    // in steps of 1 degree
    myservo.write(pos);              // 舵機角度寫入
    delay(10);                       // 等待10ms轉動到指定角度
  }
  for (pos = 90; pos >= 0; pos --) { // 從90°到0°
    myservo.write(pos);              // 舵機角度寫入
    delay(10);                       // 等待10ms轉動到指定角度
  }
}
連線開發板設定好埠和開發板型別,進行驗證上傳即可驅動舵機。