疯壳AI开源无人机PWM(电机控制)
一、PWM簡介
脈沖寬度調制(PWM),是英文“Pulse Width Modulation”的縮寫,簡稱脈寬調制,是利用微處理器的數字輸出來對模擬電路進行控制的一種非常有效的技術,廣泛應用在從測量、通信到功率控制與變換的許多領域中。
PWM在生活中非常的常見,小到呼吸燈的閃爍,達到航天飛船都會應用到PWM技術。PWM的波形如下圖所示。
二、占空比簡介
占空比是脈沖寬度調制技術中常用專業術語,占空比是指在一個時鐘脈沖周期(T)內,高電平(t1)的時間占總周期時間的比值,即占空比(duty)=t1/T*100%
如下圖所示是一系列典型的脈沖波形。
???? 第一個PWM波,周期為10ms,高電平的時間為4ms,所以占空比為40%,同理第二個PWM波為60%,第三個為80%。
一般地,占空比反映了等效幅值的大小:占空比越大,等效幅值越高;占空比越小,等效幅值越低。如下圖所示為不同占空比對應等效幅值的關系示意圖。
- STM32的PWM模式
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,CNT<CCR1時為有效狀態、CNT>CCR1時為無效狀態;PWM模式2,CNT<CCR1為無效狀態、CNT>CCR1為有效狀態。OC1PE來使能預裝載。CC1S來配置通道的輸入輸出模式(默認為輸出模式)。
CC1P來配置輸出極性,可以選擇高電平有效或者低電平有效。CC1E來使能捕獲/比較。
五、PWM電機控制實驗
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、裝載結構體。 |
| 3 | PWM輸出參數配置 | 1、定義結構體; 2、填充結構體; 3、裝載結構體; 4、使能輸出。 |
| 4 | 改變占空比 | 1、改變占空比參數。 |
?
?
定時器PWM輸出的初始化代碼如下:
裝載不同的CCR值,產生不同的占空比,從而使四個電機以不同的速度旋轉,代碼如下圖所示。
其中TIM4_CH1裝載CCR值為25、TIM4_CH2裝載CCR值為50、TIM4_CH3裝載CCR值為75、TIM4_CH4裝載CCR值為100。如下圖所示。
保存、編譯、下載代碼(注意旋翼會轉動,小心劃傷),可以看到四個旋翼以不同的速度轉動,其中轉速的排序為接在PB6的電機<接在PB7的電機<接在PB8的電機<接在PB9的電機。
總結
以上是生活随笔為你收集整理的疯壳AI开源无人机PWM(电机控制)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JVM笔记:Java虚拟机的字节码指令详
- 下一篇: 区块链技术的应用在数字藏品上的体现