瘋殼AI開源無人機PWM(電機控制)

2021-10-06 06:35:43 字數 2526 閱讀 2574

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

pwm在生活中非常的常見,小到呼吸燈的閃爍,達到航天飛船都會應用到pwm技術。pwm的波形如下圖所示。

占空比是脈衝寬度調製技術中常用專業術語,占空比是指在乙個時鐘脈衝週期(t)內,高電平(t1)的時間佔總週期時間的比值,即占空比(duty)=t1/t*100%

如下圖所示是一系列典型的脈衝波形。

第乙個pwm波,週期為10ms,高電平的時間為4ms,所以占空比為40%,同理第二個pwm波為60%,第三個為80%。

一般地,占空比反映了等效幅值的大小:占空比越大,等效幅值越高;占空比越小,等效幅值越低。如下圖所示為不同占空比對應等效幅值的關係示意圖。

stm32上定時器有專門的pwm模式,它的原理是通過定時器使用比較輸出的方式如下圖所示產生波形。

arr為自動過載暫存器,ccr為捕獲/比較暫存器,cnt就是定時器的計數器,cnt的值從0開始遞增,使用pwm模式後,可以設定有效電平,以及pwm的模式。上圖所示的是當cnt的值小於ccrx時,輸出低電平,當cnt的值大於ccrx時,輸出高點平,所以我們可以通過改變arr的值來改變pwm的週期,改變ccrx的值來改變pwm的占空比,從而實現任意頻率任意占空比的pwm波。

stm32的pwm輸出模式涉及到以下暫存器。

(1)timx_cr1:定時器控制暫存器1,如下圖所示。

其中ckd來設定時鐘分頻,arpe來使能自動過載預裝載,cen來使能計數器。

(2)timx_ccmr1:定時器捕獲比較模式暫存器,如下圖所示。

oc1m來配置pwm的模式,pwm模式1,cntccr1時為無效狀態;pwm模式2,cntccr1為有效狀態。oc1pe來使能預裝載。cc1s來配置通道的輸入輸出模式(預設為輸出模式)。

timx_ccer:捕獲比較使能暫存器,如下圖所示。

cc1p來配置輸出極性,可以選擇高電平有效或者低電平有效。cc1e來使能捕獲/比較。

pwm電機控制實驗使用stm32的定時器的pwm輸出功能,可對飛控上的電機所在的引腳,產生不同占空比的pwm,從而實現讓四個電機以不同的速度旋轉。(注意:做實驗的時候,占空比不要調節過大,該實驗會使旋翼轉動,要小心無人機的旋翼劃傷手)無人機的四個旋翼如下圖所示。

根據原理圖,可以看到四個電機分別由兩個ao9926c控制,ao9926c其實想當於是兩路的n溝道mos管,兩個ao9926c的四個mos管的g極(柵極)介面分別是:pb6、pb7、pb8、pb9,如下圖所示。

檢視資料手冊可知,pb6、pb7、pb8、pb9分別對應的是tim4_ch1、tim4_ch2、tim4_ch3、tim4_ch4,即定時器4的輸出通道1~4。

配置輸出pwm的**編寫的思路如下:

1管腳配置

1、定義結構體;

2、使能時鐘;

3、填充結構體;

4、裝載結構體。

2定時器配置

1、定義結構體;

2、使能時鐘;

3、填充結構體;

4、裝載結構體。

3pwm輸出引數配置

1、定義結構體;

2、填充結構體;

3、裝載結構體;

4、使能輸出。

4改變占空比

1、改變占空比引數。

定時器pwm輸出的初始化**如下:

裝載不同的ccr值,產生不同的占空比,從而使四個電機以不同的速度旋轉,**如下圖所示。

其中tim4_ch1裝載ccr值為25、tim4_ch2裝載ccr值為50、tim4_ch3裝載ccr值為75、tim4_ch4裝載ccr值為100。如下圖所示。

瘋殼AI開源無人機PID基礎

pid控制是自動控制系統中最常用的一種控制手段,它的誕生主要是為了解決自動控制系統的快 穩 準的問題。pid控制中的p指的是proportion 比例 即對輸入的偏差乘以乙個係數 i指的是integral 積分 即對輸入偏差進行積分運算 而d指的是derivative 微分 即對輸入偏差進行微分運算...

瘋殼AI開源無人機串列埠(基礎收發)

在嵌入式開發領域講的串列埠通常指的是uart,uart即為通用非同步收發傳輸器 universal asynchronous receiver transmitter 是一種通用序列資料匯流排,用於非同步通訊。該匯流排雙向通訊,可以實現全雙工傳輸和接收。uart常常用於兩個微控制器之間進行資料傳輸,...

瘋殼AI開源無人機串列埠(視覺資料獲取)

openmv是乙個開源 低成本 功能強大的機器視覺模組。以stm32f767為核心,整合了ov7725攝像頭晶元,在小巧的硬體模組上,用c語言高效地實現了核心機器視覺演算法,提供python程式設計介面。開發者 電子發燒友以及智慧型裝置開發商都可以用python語言使用openmv提供的機器視覺功能...