一、舵機基礎知識
1、定義
舵機簡單的說就是集成了直流電機、電機控制器和減速器等,並封裝在一個便於安裝的外殼里的伺服單元。能夠利用簡單的輸入信號比較精確的轉動給定角度的電機系統。
舵機安裝了一個電位器(或其它角度傳感器)檢測輸出軸轉動角度,控制板根據電位器的信息能比較精確的控制和保持輸出軸的角度。這樣的直流電機控制方式叫閉環控制,所以舵機更准確的說是伺服馬達,英文servo。
2、舵機組成
3、工作原理
控制電路接收信號源的控制信號,並驅動電機轉動;齒輪組將電機的速度成大倍數縮小,並將電機的輸出扭矩放大響應倍數,然后輸出;電位器和齒輪組的末級一起轉動,測量舵機軸轉動角度;電路板檢測並根據電位器判斷舵機轉動角度,然后控制舵機轉動到目標角度或保持在目標角度。
二、舵機的規格
1、轉速:
(1)定義:轉速由舵機無負載的情況下轉過60°角所需時間來衡量。
(2)一般在0.11S/60°~0.21S/60°之間。
2、轉矩
(1)定義:舵機扭矩的單位是KG·CM,這是一個扭矩單位。可以理解為在舵盤上距舵機軸中心水平距離1CM處,舵機能夠帶動的物體重量。
3、電壓
廠商提供的速度、轉矩數據和測試電壓有關,在4.8V和6V兩種測試電壓下這兩個參數有比較大的差別。如Futaba S-9001 在 4.8V 時扭力為 3.9kg、速度為 0.22 秒,在 6.0V 時扭力為 5.2kg、速度為 0.18 秒。若無特別注明,JR 的舵機都是以 4.8V 為測試電壓,Futaba則是以 6.0V 作為測試電壓。
三、模擬舵機及其控制原理
1、工作原理
工作原理是控制電路接收信號源的控制脈沖,並驅動電機轉動;齒輪組將電機的速度成大倍數縮小,並將電機的輸出扭矩放大響應倍數,然后輸出;電位器和齒輪組的末級一起轉動,測量舵機軸轉動角度;電路板檢測並根據電位器判斷舵機轉動角度,然后控制舵機轉動到目標角度或保持在目標角度。
2、控制信號
舵機的控制脈沖周期20ms,脈寬從0.5ms-2.5ms,分別對應-90度到+90度的位置。如下圖所示:
四、使用PWM控制舵機輸出
在main函數中的測試代碼
#include "include.h" #include "init.h" #include "OLED.h" #include "menu.h" #include "keySquare.h" void main() { DisableInterrupts; system_init(); EnableInterrupts; u16 duty = 450; FTM_PWM_init(FTM2,CH0,50,duty); OLED_Write_Int(0,0,duty); while(1) { if(keyBoard_get() == Keynum1) { time_delay_ms(100); if(keyBoard_get() == Keynum1) { duty += 10; FTM_PWM_Duty(FTM2,CH0,duty); OLED_Clear(); OLED_Write_Int(0,0,duty); time_delay_ms(100); } } if(keyBoard_get() == Keynum2) { time_delay_ms(100); if(keyBoard_get() == Keynum2) { duty -= 10; FTM_PWM_Duty(FTM2,CH0,duty); OLED_Clear(); OLED_Write_Int(0,0,duty); time_delay_ms(100); } } } }