目錄
-
基本原理
-
PWM是如何實(shí)現(xiàn)?
-
分類(lèi)
-
程序?qū)崿F(xiàn)
-
總結(jié)
基本原理
PWM的全稱是脈沖寬度調(diào)制(Pulse-width modulation),是通過(guò)將有效的電信號(hào)分散成離散形式從而來(lái)降低電信號(hào)所傳遞的平均功率的一種方式;
所以根據(jù)面積等效法則,可以通過(guò)對(duì)改變脈沖的時(shí)間寬度,來(lái)等效的獲得所需要合成的相應(yīng)幅值和頻率的波形;
具體如下圖所示;
由上圖可知,脈沖寬度調(diào)制使用一個(gè)脈沖寬度會(huì)被調(diào)制的方波,并且波型的平均值會(huì)有所變化。
如果我們考慮一個(gè)周期為的脈沖波,低值,高值為,跟占空比(duty cycle),此波的平均值為:
當(dāng)是一個(gè)脈沖波,它的值在是而在是
上式的描述可以變?yōu)椋?/p>
以上公式可以在很多狀況下被簡(jiǎn)化,當(dāng)及。
從這里可以看出,波型的平均值非常明顯地直接與占空比有關(guān)。
占空比:
圖中存在三種占空比狀態(tài),25%
,50%
和75%
占空比狀態(tài),不難發(fā)現(xiàn),假設(shè)占空比為D
,則滿足:
其中是PWM的周期,通常和載波的周期相同;
PWM是如何實(shí)現(xiàn)?
PWM實(shí)現(xiàn)的原理是通過(guò)鋸齒波/三角波(載波)所需要合成的波形(調(diào)制波)進(jìn)行比較,然后確定PWM所需要輸出的極性,通常是ON
或者是OFF
,因?yàn)橐话愣际亲饔玫介_(kāi)關(guān)元器件上;如下圖所示;

振蕩器輸出的鋸齒波和參考值進(jìn)行比較,然后就可以輸出PWM
波形了;
在matlab
的simulink
中搭建了一下仿真,具體如下圖所示;

最終輸出波形如下:

這里簡(jiǎn)單說(shuō)明一下:
-
鋸齒波(圖中橙色波形)最大為
10
,然后我希望輸出平均為5
的波形(圖1中紅色的水平直線); -
那么通過(guò)比較,當(dāng)鋸齒波小于
5
時(shí);PWM輸出低電平,即為OFF
; -
當(dāng)鋸齒波大于
5
時(shí),PWM輸出高電平,即為ON
;
所以再換一個(gè)思路,如果我希望輸出一個(gè)電壓逐漸升高的波形呢,該如何設(shè)計(jì)呢?
其實(shí)很簡(jiǎn)單,只要把需要調(diào)制的波形設(shè)置為斜坡輸出的波形就可以了,具體如下圖所示;

可以看到,最終占空比逐漸從0%
增大到100%
;
然后我們繼續(xù)想,能不能調(diào)制出其他的波形,比如調(diào)制一個(gè)正弦波sin wave
,那也就是我們常說(shuō)的SPWM
,其實(shí)是可以的,具體如下圖所示;

分類(lèi)
參考STM32中PWM的配置,根據(jù)載波波形的形狀,假設(shè)三角波最大值是10,那么它的變化過(guò)程可能存在以下兩種情況:
- 完整周期包括兩個(gè)過(guò)程,先遞增,再遞減:增加增加減少減少,這種也叫中央對(duì)齊PWM;
- 完整周期只有遞增過(guò)程:增加增加;
中央對(duì)齊PWM
脈沖波的中心將會(huì)被固定在時(shí)間窗格的中心,同時(shí)脈沖波的兩邊可以移動(dòng),使得波的寬度被延伸或壓縮,具體如下圖所示;

另一種類(lèi)型的PWM脈沖波形如下圖所示;

程序?qū)崿F(xiàn)
現(xiàn)在的MCU
大部分都自帶硬件PWM
發(fā)生器,即配置好相應(yīng)的寄存器,就能直接產(chǎn)生PWM
,下面的例子基于NUCLEO-F767ZI
,通過(guò)cubemx
配置了三路PWM
輸出,然后實(shí)現(xiàn)了呼吸燈的效果;
intmain(void)
{
HAL_Init();
MX_GPIO_Init();
MX_TIM4_Init();
MX_TIM3_Init();
MX_TIM12_Init();
int32_ttime_stamp=0;
int32_ttime_stamp_old=0;
int32_tccr_val=0;
uint8_tadd_flag=1;
HAL_TIM_PWM_Start(&htim4,TIM_CHANNEL_2);
HAL_TIM_PWM_Start(&htim12,TIM_CHANNEL_1);
HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_3);
while(1)
{
time_stamp=HAL_GetTick();
if(time_stamp-time_stamp_old>5){
time_stamp_old=time_stamp;
if(add_flag){
ccr_val+=25;
if(ccr_val>=0xFFFF){
ccr_val=0xFFFF;
add_flag=0;
}
}else{
ccr_val-=25;
if(ccr_val<=?0){
add_flag=1;
ccr_val=0;
}
}
TIM4->CCR2=ccr_val;
TIM12->CCR1=ccr_val;
TIM3->CCR3=ccr_val;
}
}
}
整體效果如下:

通過(guò)示波器看其中的一路PWM
輸出的占空比也是隨時(shí)間變化;

總結(jié)
本文簡(jiǎn)單介紹了PWM的原理,以及如何產(chǎn)生PWM,可以通過(guò)鋸齒波作為載波和調(diào)制波經(jīng)過(guò)比較強(qiáng),產(chǎn)生相應(yīng)的PWM輸出波形,最后結(jié)合STM32實(shí)現(xiàn)了一個(gè)呼吸燈的簡(jiǎn)單程序。
-
PWM
+關(guān)注
關(guān)注
116文章
5364瀏覽量
218028 -
STM32
+關(guān)注
關(guān)注
2289文章
11011瀏覽量
362337 -
脈沖寬度調(diào)制
+關(guān)注
關(guān)注
7文章
81瀏覽量
13932
原文標(biāo)題:天哪!原來(lái)PWM這么簡(jiǎn)單,看完這篇就懂了
文章出處:【微信號(hào):FANYPCB,微信公眾號(hào):凡億PCB】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
脈沖寬度調(diào)制PWM原理
脈沖寬度調(diào)制PWM是什么?有哪些應(yīng)用?
脈沖寬度調(diào)制PWM的基本原理控制方式是什么
主板用的DC to DC脈沖寬度調(diào)制(PWM)電路圖

什么是脈沖寬度調(diào)制(PWM)或脈沖頻率調(diào)制(PFM)

PWM(脈沖寬度調(diào)制)的工作原理、分類(lèi)及其應(yīng)用

什么是脈沖寬度調(diào)制技術(shù)_脈沖寬度調(diào)制是什么含義

基于數(shù)字電路的實(shí)驗(yàn)脈沖寬度調(diào)制

MPC82系列MCU的PWM(脈沖寬度調(diào)制)采樣代碼

脈沖寬度調(diào)制(PWM)的基本術(shù)語(yǔ)

PWM脈沖寬度調(diào)制產(chǎn)生方波時(shí),調(diào)制波可否采用三角波?為什么?

PWM脈沖寬度調(diào)制原理

評(píng)論