一、PWM 舵機控制原理
PWM 舵機的核心是脈沖寬度與旋轉角度的對應關系:
舵機接收周期性的 PWM 信號(通常周期為 20ms,即頻率 50Hz),信號由高電平(有效電平)和低電平組成。
高電平的持續時間(脈沖寬度)決定舵機的旋轉角度:
標準脈沖寬度范圍:0.5ms ~ 2.5ms(部分舵機可能略有差異,需參考手冊)。
對應角度:通常 0.5ms 對應 0°,1.5ms 對應中間位置(如 90°),2.5ms 對應最大角度(如 180°)。
線性關系:角度與脈沖寬度成線性比例,例如 1ms 對應 30°,2ms 對應 150°(具體需根據舵機量程校準)。
二、關鍵控制參數
控制 PWM 舵機需明確以下核心參數,參數錯誤可能導致舵機無響應或損壞:
| 參數 | 標準值范圍 | 說明 |
|---|---|---|
| 信號周期 | 20ms(±1ms) | 即頻率 50Hz(1/0.02s),部分舵機支持寬范圍周期(如 10ms~30ms)。 |
| 脈沖寬度 | 0.5ms ~ 2.5ms | 決定旋轉角度,超出范圍可能導致舵機卡頓或過載。 |
| 工作電壓 | 3.3V ~ 6V(常見) | 需匹配舵機額定電壓,過高易燒毀電機,過低則扭矩不足。 |
| 控制信號電平 | 3.3V 或 5V | 需與控制器(如單片機)輸出電平兼容,不匹配時需加電平轉換模塊。 |
三、硬件連接方法
PWM 舵機通常有 3 根線(電源、地、信號線),連接需區分正負極和信號方向:
接線定義(常見顏色,以舵機手冊為準):
紅線:電源正極(VCC),接控制器或外部電源的正極(如 5V)。
棕線 / 黑線:電源負極(GND),接控制器和電源的地,需共地。
黃線 / 橙線:信號線(PWM IN),接控制器的 PWM 輸出引腳(如單片機的 GPIO 或專用 PWM 口)。
供電注意事項:
小扭矩舵機(如 10kg 以下)可直接由控制器(如 Arduino)5V 引腳供電;
大扭矩舵機(如 50kg 以上)需外接獨立電源,避免控制器供電不足導致重啟或損壞。
四、軟件控制邏輯(以常見場景為例)
1. 基礎控制流程
初始化:設置控制器的 PWM 輸出引腳,配置頻率為 50Hz(周期 20ms)。
輸出脈沖:根據目標角度計算對應脈沖寬度,通過 PWM 函數輸出信號。
保持角度:持續輸出該脈沖信號,舵機會穩定在目標角度;停止信號后舵機可能因外力偏移。
2. 角度與脈沖寬度換算公式
若舵機最大角度為 θ_max(如 180°),則目標角度 α 對應的脈沖寬度 P 計算為:P=0.5ms+(θmax?α?)×(2.5ms?0.5ms)
例如:180° 舵機,目標角度 90° 時:P=0.5+(90/180)×2=1.5ms
3. 代碼示例(以 Arduino 為例)
Arduino 通過Servo庫簡化 PWM 控制,無需手動配置頻率:
cpp
運行
#include // 引入舵機庫
Servo myservo; // 創建舵機對象
int angle = 0; // 目標角度
void setup() {
myservo.attach(9); // 將舵機信號線接數字引腳9
}
void loop() {
// 從0°轉到180°,每次停留1秒
for (angle = 0; angle <= 180; angle += 1) {
myservo.write(angle); // 輸出對應角度的PWM信號
delay(15); // 延遲等待舵機轉動到位
}
delay(1000);
// 從180°轉回0°
for (angle = 180; angle >= 0; angle -= 1) {
myservo.write(angle);
delay(15);
}
delay(1000);
}
4. 無庫直接控制(手動生成 PWM)
若控制器無專用舵機庫,可通過 GPIO 模擬 PWM 信號(以 51 單片機為例):
c
運行
// 假設P3.0為信號輸出引腳,周期20ms,脈沖寬度1.5ms(中間位置)
void servo_control() {
P3_0 = 1; // 高電平開始
delay_us(1500); // 脈沖寬度1.5ms(需精確延時函數)
P3_0 = 0; // 低電平
delay_ms(18); // 補充周期至20ms(20ms - 1.5ms = 18.5ms,取近似值)
}
void main() {
while(1) {
servo_control(); // 持續輸出信號,舵機保持中間位置
}
}
五、進階控制技巧
角度校準:
部分舵機實際角度與理論值有偏差,可通過實測調整脈沖寬度:例如目標 90° 時,實際需 1.4ms 脈沖,需手動修正公式。
校準方法:逐步增加脈沖寬度,記錄舵機實際轉動角度,建立修正后的對應表。
速度控制:
舵機轉動速度由角度變化的 “步長” 和 “延遲時間” 決定:步長越小、延遲越長,轉動越慢(如每次轉 1°,延遲 20ms)。
避免瞬間大角度跳轉,防止舵機過載或齒輪損壞。
多舵機同步控制:
多個舵機需連接不同 PWM 引腳,通過循環依次輸出信號(注意總周期仍需保持 20ms)。
高負載場景建議使用專用舵機控制板(如 PCA9685),支持 I2C 通信控制 16 路舵機,減少主控制器資源占用。
六、注意事項
信號干擾:PWM 信號線易受電磁干擾,建議縮短信號線長度,或在信號線與地之間接 100nF 電容濾波。
過流保護:大扭矩舵機啟動瞬間電流較大,需在電源回路串聯保險絲(如 1A~3A),避免短路燒毀設備。
溫度限制:長時間滿負荷工作會導致舵機發熱,需預留散熱空間,避免超過額定工作溫度(通常 - 10℃~60℃)。
手冊優先:不同品牌 / 型號舵機參數可能差異(如最大角度 360° 的連續旋轉舵機,脈沖寬度對應速度而非角度),務必參考產品手冊。
通過以上方法,可實現 PWM 型號舵機的精準控制,適用于機器人關節、機械臂、自動化閥門等各類場景。實際應用中需結合硬件特性和場景需求,優化參數以確保穩定性和壽命。
審核編輯 黃宇
-
PWM
+關注
關注
116文章
5872瀏覽量
225645 -
舵機
+關注
關注
17文章
375瀏覽量
43198
發布評論請先 登錄
PWM 型號舵機控制方法!
評論