舵機(jī)是一種高精度的角度控制執(zhí)行器,廣泛應(yīng)用于機(jī)器人、遙控模型、自動(dòng)化設(shè)備等場(chǎng)景。其控制核心是通過PWM(脈沖寬度調(diào)制)信號(hào)調(diào)節(jié)角度,配合內(nèi)部閉環(huán)反饋實(shí)現(xiàn)精準(zhǔn)定位。以下從原理、控制方式、關(guān)鍵參數(shù)及注意事項(xiàng)展開說明:
一、舵機(jī)控制的核心原理
舵機(jī)內(nèi)部集成了直流電機(jī)、減速齒輪組、電位器(角度傳感器)和控制電路,形成閉環(huán)控制系統(tǒng):
信號(hào)接收:外部輸入 PWM 信號(hào),控制電路解析信號(hào)中的脈沖寬度,確定目標(biāo)角度。
反饋對(duì)比:電位器實(shí)時(shí)檢測(cè)當(dāng)前角度,并將信號(hào)反饋給控制電路。
驅(qū)動(dòng)調(diào)節(jié):控制電路對(duì)比目標(biāo)角度與當(dāng)前角度,驅(qū)動(dòng)直流電機(jī)正轉(zhuǎn)或反轉(zhuǎn),通過減速齒輪組帶動(dòng)輸出軸轉(zhuǎn)動(dòng)。
停止定位:當(dāng)當(dāng)前角度與目標(biāo)角度一致時(shí),電機(jī)停止轉(zhuǎn)動(dòng),實(shí)現(xiàn)精準(zhǔn)定位。
二、控制信號(hào):PWM 參數(shù)的關(guān)鍵要求
舵機(jī)的控制完全依賴 PWM 信號(hào)的參數(shù),核心參數(shù)包括頻率(周期) 和脈沖寬度:
1. 頻率(周期)
標(biāo)準(zhǔn)舵機(jī)的 PWM 信號(hào)頻率為 50Hz(即周期為 20ms),這是行業(yè)通用標(biāo)準(zhǔn)。
部分高性能舵機(jī)支持更高頻率(如 100Hz),但需參考具體型號(hào)手冊(cè),過高頻率可能導(dǎo)致舵機(jī)過熱或失控。
2. 脈沖寬度與角度的對(duì)應(yīng)關(guān)系
PWM 信號(hào)的脈沖寬度(高電平持續(xù)時(shí)間)直接決定舵機(jī)的輸出角度,不同脈沖寬度對(duì)應(yīng)不同角度,典型范圍如下(不同型號(hào)可能略有差異):
| 脈沖寬度(ms) | 對(duì)應(yīng)角度(°) | 說明 |
|---|---|---|
| 0.5ms | 0° | 最小角度(左極限) |
| 1.5ms | 90° | 中間角度(中立位) |
| 2.5ms | 180° | 最大角度(右極限) |
脈沖寬度與角度呈線性關(guān)系:例如,1.0ms 對(duì)應(yīng) 45°,2.0ms 對(duì)應(yīng) 135°,可通過公式計(jì)算任意角度對(duì)應(yīng)的脈沖寬度:脈沖寬度(ms)=0.5+180目標(biāo)角度(°)?×2.0
注意:不同舵機(jī)的角度范圍可能不同(如 90°、270°),需根據(jù)型號(hào)調(diào)整脈沖寬度范圍(例如 90° 舵機(jī)可能對(duì)應(yīng) 1.0ms~2.0ms)。
三、常見控制方式與硬件實(shí)現(xiàn)
舵機(jī)的控制需通過硬件生成符合參數(shù)的 PWM 信號(hào),常見方式包括單片機(jī)直接控制、專用模塊控制等:
1. 單片機(jī) / 微控制器直接控制(適合單舵機(jī)或少量舵機(jī))
通過單片機(jī)(如 Arduino、STM32、ESP32 等)的 PWM 輸出引腳直接生成信號(hào),步驟如下:
硬件連接:舵機(jī)的信號(hào)線(通常為橙色 / 黃色)接單片機(jī) PWM 引腳,電源線(紅色)接 5V 電源,地線(棕色 / 黑色)接單片機(jī)地線(共地)。
軟件編程:通過代碼配置 PWM 頻率為 50Hz,并設(shè)置對(duì)應(yīng)角度的脈沖寬度。
示例(Arduino 使用Servo庫(kù)):
cpp
#include
Servo myservo; // 創(chuàng)建舵機(jī)對(duì)象
int angle = 0; // 目標(biāo)角度
void setup() {
myservo.attach(9); // 舵機(jī)信號(hào)線接數(shù)字引腳9
}
void loop() {
for (angle = 0; angle <= 180; angle += 1) { // 從0°轉(zhuǎn)到180°
myservo.write(angle); // 發(fā)送角度信號(hào)(內(nèi)部自動(dòng)轉(zhuǎn)換為PWM)
delay(15); // 延遲等待轉(zhuǎn)動(dòng)到位
}
for (angle = 180; angle >= 0; angle -= 1) { // 從180°轉(zhuǎn)回0°
myservo.write(angle);
delay(15);
}
}
原理:Servo庫(kù)自動(dòng)將角度轉(zhuǎn)換為對(duì)應(yīng)脈沖寬度(如write(90)對(duì)應(yīng) 1.5ms 脈沖),并生成 50Hz 的 PWM 信號(hào)。
2. 專用舵機(jī)控制模塊(適合多舵機(jī)或高精度場(chǎng)景)
當(dāng)需要控制多個(gè)舵機(jī)(如機(jī)器人關(guān)節(jié))時(shí),單片機(jī)的 PWM 引腳可能不足,此時(shí)可使用專用模塊(如 PCA9685):
優(yōu)勢(shì):通過 I2C 通信控制,單個(gè)模塊可驅(qū)動(dòng) 16 路舵機(jī),且支持頻率和脈沖寬度精準(zhǔn)調(diào)節(jié),減少單片機(jī)資源占用。
硬件連接:模塊通過 I2C 引腳(SDA、SCL)與單片機(jī)連接,舵機(jī)電源需外接(避免單片機(jī)供電不足)。
控制邏輯:通過 I2C 指令設(shè)置模塊的頻率(50Hz)和每路舵機(jī)的脈沖寬度,示例代碼(Arduino 控制 PCA9685):
cpp
#include #include Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver(); // 初始化模塊 #define SERVOMIN 150 // 0.5ms對(duì)應(yīng)的脈沖值(需校準(zhǔn)) #define SERVOMAX 600 // 2.5ms對(duì)應(yīng)的脈沖值(需校準(zhǔn)) void setup() { pwm.begin(); pwm.setPWMFreq(50); // 設(shè)置頻率為50Hz } void loop() { // 控制第0路舵機(jī)轉(zhuǎn)到90°(脈沖寬度1.5ms,對(duì)應(yīng)(150+600)/2=375) pwm.setPWM(0, 0, 375); delay(1000); }
3. 其他控制方式
遙控器控制:遙控模型中,通過接收機(jī)輸出 PWM 信號(hào)直接驅(qū)動(dòng)舵機(jī),無需編程。
PLC 或工業(yè)控制器:工業(yè)場(chǎng)景中,通過 PLC 的 PWM 模塊或模擬量轉(zhuǎn) PWM 模塊控制舵機(jī)。
四、控制中的關(guān)鍵注意事項(xiàng)
電源供電:
舵機(jī)轉(zhuǎn)動(dòng)時(shí)電流較大(尤其是大扭矩型號(hào)),需單獨(dú)供電(5V/2A 以上),避免與單片機(jī)共用電源導(dǎo)致電壓跌落,影響控制信號(hào)穩(wěn)定性。
角度范圍校準(zhǔn):
不同舵機(jī)的實(shí)際角度范圍可能與理論值有偏差,需通過測(cè)試確定最小 / 最大脈沖寬度(例如部分舵機(jī) 0° 對(duì)應(yīng) 0.6ms,180° 對(duì)應(yīng) 2.4ms),避免強(qiáng)行轉(zhuǎn)動(dòng)導(dǎo)致齒輪損壞。
信號(hào)干擾:
PWM 信號(hào)線應(yīng)遠(yuǎn)離強(qiáng)電或高頻信號(hào)線路(如電機(jī)線),必要時(shí)使用屏蔽線,防止信號(hào)干擾導(dǎo)致角度漂移。
負(fù)載與轉(zhuǎn)速:
舵機(jī)的扭矩和轉(zhuǎn)速有額定值,負(fù)載超過扭矩會(huì)導(dǎo)致無法轉(zhuǎn)動(dòng)或過熱;快速轉(zhuǎn)動(dòng)時(shí)需預(yù)留足夠延遲時(shí)間(如delay(15)),避免未到位時(shí)再次發(fā)送信號(hào)。
審核編輯 黃宇
-
舵機(jī)
+關(guān)注
關(guān)注
17文章
379瀏覽量
43393
發(fā)布評(píng)論請(qǐng)先 登錄
在昉·星光開發(fā)板上通舵機(jī)控制板實(shí)現(xiàn)機(jī)器人舵機(jī)控制
SG90舵機(jī)控制秘籍:參數(shù)、電源與信號(hào)的三大要點(diǎn),為您綜合分析了SG90舵機(jī)的控制參數(shù)注意事項(xiàng)
#電子愛好者 #電子制作 #電子技術(shù) #電機(jī) #物聯(lián)網(wǎng) #單片機(jī) #舵機(jī)控制 #舵機(jī) #無線控制
PWM信號(hào)是如何控制舵機(jī)的?
拳力以赴!基于 RT-Thread 與瑞薩 VisionBoard 的 AIoT 猜拳系統(tǒng)實(shí)戰(zhàn) | 技術(shù)集結(jié)
【RA4M2-SENSOR】+PWM與舵機(jī)控制
舵機(jī)怎么控制正反,舵機(jī)怎么使用?
舵機(jī)的原理
PWM 型號(hào)舵機(jī)控制方法!
【RA-Eco-RA6M4開發(fā)板評(píng)測(cè)】+PWM與舵機(jī)控制
【嘉楠堪智K230開發(fā)板試用體驗(yàn)】01 Studio K230開發(fā)板Test1——舵機(jī)控制
什么是脈寬調(diào)制?
舵機(jī)如何控制?
評(píng)論