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

評(píng)論