1.舵機基礎知識:
舵機是遙控航空、航天模型控制動作,改變方向的重要組成部件,舵機是一種位置(角度)伺服的驅動器。
2.舵機的構造:
舵機主要是由外殼、
引腳接線說明:
-
紅色:供電;
-
粽色:地線;必須與控制器, 如SMT32晶片共地;
-
橙色:PWM訊號線;
3.工作原理:
由接收機發出訊號給舵機,經由電路板上的 IC驅動無核心馬達開始轉動,透過減速齒輪將動力傳至擺臂,同時由位置檢測器送回訊號,判斷是否已經到達定位。位置檢測器其實就是可變電阻,當舵機轉動時電阻值也會隨之改變,藉由檢測電阻值便可知轉動的角度。
大多數舵機PWM控制協議,都已經標準化。舵機一般有三根引線,分別為電源線、地線、訊號線。透過PWM來控制舵機輸出軸的旋轉角度,下圖是MG996R舵機PWM控制波形。
-
PWM訊號週期: 20000 us
-
0度時,高電平時長: 500 us
-
180度時, 高電平時長:2500 us
-
每增加1 °,需增加高電平時長:(2500-500)÷180 = 11.1 us
(ps: 脈衝寬度(W),簡稱“脈寬”,是脈衝高電平持續的時間。佔空比(D),脈寬除以脈衝週期的值。)
-
某角度值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轉動到指定角度 } }
連線開發板設定好埠和開發板型別,進行驗證上傳即可驅動舵機。