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