在電力電子控制中,PWM幾乎是無處不在的,不論是AC/DC,DC/AC,還是DC/DC,都涉及到PWM,PWM具體是什么可以自行百度,網(wǎng)上資料非常多,這里就不再贅述。在電力電子變換里面,PWM波形生成有兩種方式,模擬和數(shù)字,專用的模擬IC不在此文探討范圍之內(nèi),本文主要介紹怎樣用MCU來生成PWM。
在所有的MCU里,都會有Timer定時(shí)器,PWM就是通過這個(gè)外設(shè)生成的,基本的原理可以通過下圖(以STM32F407的寄存器為例)來解釋。
計(jì)數(shù)器TIM_CNT對輸入時(shí)鐘進(jìn)行計(jì)數(shù),比如輸入時(shí)鐘是1MHz(50%占空比方波),對時(shí)鐘的每一個(gè)上升沿(或者下降沿)從數(shù)字0開始計(jì)數(shù),計(jì)數(shù)到TIM_ARR=999,一共計(jì)數(shù)1000個(gè),經(jīng)歷的時(shí)間是1000*1/1000000 = 1ms,也就是1kHz,計(jì)數(shù)到999之后計(jì)數(shù)器TIM_CNT歸零,重新從0開始計(jì)數(shù)到999,往復(fù)循環(huán),這樣就形成了1kHz PWM了。
那怎樣做到一定的占空比呢?這很簡單,設(shè)定一個(gè)值TIM_CCR,比如199,計(jì)數(shù)器TIM_CNT從0計(jì)數(shù)到199,一共200次計(jì)數(shù),在TIM_CNT計(jì)數(shù)值在0-199,PWM輸出引腳輸出高電平(可以人為設(shè)定),計(jì)數(shù)器達(dá)到199,電平翻轉(zhuǎn)到低電平,之后IM_CNT計(jì)數(shù)999后歸零又恢復(fù)到高電平,這樣也就形成了200/1000 = 20%的PWM了。對這個(gè)比較值進(jìn)行設(shè)置就可以形成不同占空比的PWM了,這也是最基本的PWM波形生成方法了,從上面介紹的,可以看出,TIM_ARR的值決定了PWM的頻率,TIM_CCR的值決定了PWM的占空比,有了這兩個(gè)值就可以很容易地生成PWM了,STM32的Timer配置很靈活,功能很多,本文只是介紹最基本的原理,其他的在自行探索就是了。