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