PWM(脈沖寬度調(diào)制)信號(hào)控制舵機(jī)的核心原理是通過固定周期內(nèi)高電平的持續(xù)時(shí)間(脈寬)對(duì)應(yīng)舵機(jī)的旋轉(zhuǎn)角度,舵機(jī)內(nèi)部電路根據(jù)檢測(cè)到的脈寬驅(qū)動(dòng)電機(jī)轉(zhuǎn)動(dòng)到目標(biāo)位置并保持。以下是具體實(shí)現(xiàn)過程:
一、核心控制邏輯
舵機(jī)的控制依賴于特定頻率和脈寬的 PWM 信號(hào),關(guān)鍵參數(shù)如下:
PWM 信號(hào)頻率:固定為 50Hz(周期 20ms),這是舵機(jī)的標(biāo)準(zhǔn)接收頻率,頻率過高或過低會(huì)導(dǎo)致舵機(jī)無(wú)響應(yīng)或角度偏差。
高電平脈寬與角度對(duì)應(yīng)關(guān)系:舵機(jī)通過檢測(cè)一個(gè)周期內(nèi)高電平的時(shí)長(zhǎng)來(lái)確定目標(biāo)角度,典型對(duì)應(yīng)關(guān)系為:
0.5ms 脈寬 → 0°(占空比 2.5%,即 0.5ms/20ms)
1.0ms 脈寬 → 45°(占空比 5.0%)
1.5ms 脈寬 → 90°(占空比 7.5%,中位角度)
2.0ms 脈寬 → 135°(占空比 10.0%)
2.5ms 脈寬 → 180°(占空比 12.5%)
二、舵機(jī)內(nèi)部工作流程
當(dāng) PWM 信號(hào)通過信號(hào)線輸入舵機(jī)后,內(nèi)部電路會(huì)執(zhí)行以下步驟:
信號(hào)檢測(cè):舵機(jī)內(nèi)部的控制電路接收 PWM 信號(hào),解析高電平持續(xù)時(shí)間,確定目標(biāo)角度。
電壓比較:將檢測(cè)到的脈寬轉(zhuǎn)換為對(duì)應(yīng)的偏置電壓,與舵機(jī)內(nèi)部電位器(隨輸出軸同步轉(zhuǎn)動(dòng))的電壓進(jìn)行比較,產(chǎn)生電壓差。
電機(jī)驅(qū)動(dòng):電壓差觸發(fā)電機(jī)轉(zhuǎn)動(dòng),通過減速齒輪組帶動(dòng)輸出軸旋轉(zhuǎn),同時(shí)電位器也隨之轉(zhuǎn)動(dòng),改變自身電壓。
位置鎖定:當(dāng)電位器電壓與目標(biāo)偏置電壓相等(電壓差為 0)時(shí),電機(jī)停止轉(zhuǎn)動(dòng),舵機(jī)保持在目標(biāo)角度。
三、硬件連接與實(shí)現(xiàn)步驟
硬件準(zhǔn)備:
控制器:Arduino UNO(需支持 PWM 輸出,引腳標(biāo)有 “~”)。
舵機(jī):如 SG90(3 線制:紅色 VCC、棕色 GND、黃色信號(hào)線)。
電源:小舵機(jī)可直接接 Arduino 的 5V 電源,大扭矩舵機(jī)需外接獨(dú)立電源(避免燒毀控制器)。
接線方式:
舵機(jī) VCC → Arduino 5V(或外接電源正極)。
舵機(jī) GND → Arduino GND(必須共地,否則信號(hào)紊亂)。
舵機(jī)信號(hào)線 → Arduino PWM 引腳(如~9)。
軟件編程:
使用 Arduino 自帶的Servo.h庫(kù)簡(jiǎn)化控制,示例代碼如下:
若需更精準(zhǔn)控制,可使用writeMicroseconds()直接指定脈寬:
四、關(guān)鍵注意事項(xiàng)
共地原則:控制器、舵機(jī)、電源的 GND 必須連接在一起,否則 PWM 信號(hào)無(wú)法正常傳輸。
電源匹配:大扭矩舵機(jī)(如 MG996R)需外接 6V/12V 電源,避免直接使用控制器 5V 供電導(dǎo)致過載。
角度校準(zhǔn):不同舵機(jī)的脈寬 - 角度對(duì)應(yīng)關(guān)系可能存在差異,需通過實(shí)際測(cè)試微調(diào)(如某些舵機(jī) 180° 需 2.2ms 脈寬)。
機(jī)械保護(hù):避免強(qiáng)行讓舵機(jī)轉(zhuǎn)動(dòng)超過物理極限角度(如部分舵機(jī)最大角度為 120°),防止齒輪損壞。
審核編輯 黃宇
-
舵機(jī)
+關(guān)注
關(guān)注
17文章
375瀏覽量
43027 -
PWM信號(hào)
+關(guān)注
關(guān)注
3文章
107瀏覽量
21064
發(fā)布評(píng)論請(qǐng)先 登錄
PWM信號(hào)是如何控制舵機(jī)的?
評(píng)論