stm32用pwm驅動舵機

2021-10-17 10:36:53 字數 1614 閱讀 1831

舵機的主要組成部分為伺服電機,所謂伺服就是服從訊號的要求而動作。在訊號來之前,轉子停止不動;訊號來到之後,轉子立即運動。因此我們就可以給舵機輸入不同的訊號,來控制其旋轉到不同的角度。

舵機接收的是pwm訊號,當訊號進入內部電路產生乙個偏置電壓,觸發電機通過減速齒輪帶動電位器移動,使電壓差為零時,電機停轉,從而達到伺服的效果。簡單來說就是給舵機乙個特定的pwm訊號,舵機就可以旋轉到指定的位置。

舵機上有三根線,分別是gnd、vcc和sig,也就是地線、電源線和訊號線,其中的pwm波就是從訊號線輸入給舵機的。

一般來說,舵機接收的pwm訊號頻率為50hz,即週期為20ms。當高電平的脈寬在0.5ms-2.5ms之間時舵機就可以對應旋轉到不同的角度。如下圖。

脈衝寬度調製(pwm),是英文「pulse width modulation」的縮寫,簡稱脈寬調變,是利用微處理器的數字輸出來對模擬電路進行控制的一種非常有效的技術,廣泛應用在從測量、通訊到功率控制與變換的許多領域中。 ​

以微控制器為例,我們知道,微控制器的io口輸出的是數碼訊號,io口只能輸出高電平和低電平

假設高電平為5v 低電平則為0v 那麼我們要輸出不同的模擬電壓,就要用到pwm,通過改變io口輸出的方波的占空比從而獲得使用數碼訊號模擬成的模擬電壓訊號

我們知道,電壓是以一種連線1或斷開0的重複脈衝序列被夾到模擬負載上去的(例如led燈,直流電機等),連線即是直流供電輸出,斷開即是直流供電斷開。通過對連線和斷開時間的控制,理論上來講,可以輸出任意不大於最大電壓值(即0~5v之間任意大小)的模擬電壓

比方說 占空比為50% 那就是高電平時間一半,低電平時間一半,在一定的頻率下,就可以得到模擬的2.5v輸出電壓 那麼75%的占空比 得到的電壓就是3.75v

總結:pwm就是在合適的訊號頻率下,通過乙個週期裡改變占空比的方式來改變輸出的有效電壓

pwm頻率越大,相應越快。

根據舵機控制的原理,舵機的控制一般需要乙個20ms左右的時基脈衝《週期》,該脈衝的高電平部分一般為0.5ms-2.5ms《占空比2.5%~12.5%>範圍內的角度控制脈衝部分,總間隔為2ms。

即:0.5ms--------------0度;

1.0ms------------45度;

1.5ms------------90度;

2.0ms-----------135度;

2.5ms-----------180度;

void

tim3_int_init

(u16 arr,u16 psc)

//定時器3中斷服務程式

void

tim3_irqhandler

(void

)//tim3中斷

}void

tim3_pwm_init

(u16 arr,u16 psc)

int

main

(void)if

(key2 ==1)

}}

用PWM控制舵機(以是stm32為例)

因為做校創需要用到舵機,以前知道大致的理論,因此看了一些帖子,總結一下被以後檢視。pwm就是脈衝寬度調製,也就是占空比可變的脈衝波形.pwm的占空比,就是指高電平保持的時間,與該pwm時鐘週期時間之比。在應用中就是通過調節pwm占空比來控制,也就是乙個週期中高電平所佔的百分比來控制舵機的轉角的。控制...

STM32之使用PWM控制多路舵機

最近在玩乙個6自由度的機械臂,我手上這台機械臂的核心控制器件就是那六個能夠180度旋轉的舵機了。想想之前在學校還沒有系統性的把舵機給玩明白,所以就索性拿手上的stm32來自己寫驅動 將6個舵機給驅動起來。舵機的控制原理還是比較簡單的,而且控制的角度和精度能夠比較好的按照開發者的意願來進行,因此經常被...

STM32學習筆記 PWM

a 目的 基礎pwm輸出,以及中斷配合應用。輸出選用pb1,配置為tim3 ch4,是目標板的led6控制腳。b 對於簡單的pwm輸出應用,暫時無需考慮tim1的高階功能之區別。c 初始化函式定義 void tim configuration void 定義tim初始化函式 d 初始化函式呼叫 ti...