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

slowlydance2me發表於2023-02-24

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

1.舵機基礎知識:

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

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

2.舵機的構造:

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

引腳接線說明

  • 紅色:供電;

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

  • 橙色:PWM訊號線;

3.工作原理:

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

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

img

 

  1. PWM訊號週期: 20000 us

  2. 0度時,高電平時長: 500 us

  3. 180度時, 高電平時長:2500 us

  4. 每增加1 °,需增加高電平時長:(2500-500)÷180 = 11.1 us

    (ps: 脈衝寬度(W),簡稱“脈寬”,是脈衝高電平持續的時間。佔空比(D),脈寬除以脈衝週期的值。)
  5. 某角度值A,需要的總高電平時長:(A x 11.1 +500)us

    注意:

    ①PWM波其實就是一種脈寬可連續調節的矩形脈衝波。

    ②佔空比其實就是描述脈寬與脈衝週期的比值,是量化值。

    ③佔空比調節就是脈寬調節,表達不一樣,但本質是一樣的。

4.舵機型別:

 

 

 

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轉動到指定角度
  }
}
連線開發板設定好埠和開發板型別,進行驗證上傳即可驅動舵機。

 

相關文章