久久久国产精品视频袁燕,99re久久精品国产,亚洲欧美日韩国产综合v,天天躁夜夜躁狠狠久久,激情五月婷婷激情五月婷婷

小麥大叔
認(rèn)證:普通會(huì)員
所在專題目錄 查看專題
新手零基礎(chǔ)如何快速入門單片機(jī)
基于STM32的hello world點(diǎn)燈教程
STM32 使用st-link調(diào)試遇到寫保護(hù) Flash Timeout 問(wèn)題的解決思路
天哪!原來(lái)PWM這么簡(jiǎn)單
小小舵機(jī),大大玄機(jī)
UART協(xié)議快速掃盲(圖文并茂+超詳細(xì))
作者動(dòng)態(tài) 更多
一款輕量級(jí)的開源GUI項(xiàng)目——SimpleGUI,可以完美適配單色屏
02-22 09:47
看到這100多個(gè)軟硬件開源項(xiàng)目,真是爽爆了
2024-11-30 14:12
推薦一個(gè)高效,可靠,安全的串口通訊開源方案
2024-11-27 11:17
推薦一款開源hack硬件平臺(tái)工具
2024-11-26 13:58
新手學(xué)STM32的話,先學(xué)標(biāo)準(zhǔn)庫(kù)還是HAL庫(kù)?
2024-10-18 15:09

天哪!原來(lái)PWM這么簡(jiǎn)單

本文將帶你了解PWM。我們將學(xué)習(xí)PWM的基本原理與分類,PWM如何實(shí)現(xiàn),以及程序?qū)崿F(xiàn)。如果覺得不錯(cuò),歡迎關(guān)注、分享、收藏、點(diǎn)贊。希望能幫助到大家,如有錯(cuò)誤敬請(qǐng)指出,謝謝!

目錄

  • 基本原理
  • PWM是如何實(shí)現(xiàn)?
  • 分類
  • 程序?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ì)有所變化。

因?yàn)椴恢С肿詣?dòng)解析latex公式,又不想重新敲公式,下面文字我直接復(fù)制為圖片了;

占空比

圖中存在三種占空比狀態(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)橐话愣际亲饔玫介_關(guān)元器件上;如下圖所示;

振蕩器和比較器

振蕩器輸出的鋸齒波和參考值 進(jìn)行比較,然后就可以輸出PWM波形了;

matlabsimulink中搭建了一下仿真,具體如下圖所示;

simulink

最終輸出波形如下:

50%占空比

這里簡(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í)是可以的,具體如下圖所示;

SPWM

三、分類

參考STM32中PWM的配置,根據(jù)載波波形的形狀,假設(shè)三角波最大值是10,那么它的變化過(guò)程可能存在以下兩種情況:

  • 完整周期包括兩個(gè)過(guò)程,先遞增,再遞減:增加增加減少減少,這種也叫中央對(duì)齊PWM;
  • 完整周期只有遞增過(guò)程:增加增加;

中央對(duì)齊PWM

脈沖波的中心將會(huì)被固定在時(shí)間窗格的中心,同時(shí)脈沖波的兩邊可以移動(dòng),使得波的寬度被延伸或壓縮,具體如下圖所示;

         中央對(duì)齊PWM

另一種類型的PWM脈沖波形如下圖所示;

四、程序?qū)崿F(xiàn)

現(xiàn)在的MCU大部分都自帶硬件PWM發(fā)生器,即配置好相應(yīng)的寄存器,就能直接產(chǎn)生PWM,下面的例子基于NUCLEO-F767ZI,通過(guò)cubemx配置了三路PWM輸出,然后實(shí)現(xiàn)了呼吸燈的效果;

int main(void)
{

	HAL_Init();

	MX_GPIO_Init();
	MX_TIM4_Init();
	MX_TIM3_Init();
	MX_TIM12_Init();

	int32_t time_stamp = 0;
	int32_t time_stamp_old = 0;
	int32_t ccr_val = 0;
	uint8_t add_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í)間變化;

PWM變化情況

五、總結(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)單程序。


聲明:本內(nèi)容為作者獨(dú)立觀點(diǎn),不代表電子星球立場(chǎng)。未經(jīng)允許不得轉(zhuǎn)載。授權(quán)事宜與稿件投訴,請(qǐng)聯(lián)系:editor@netbroad.com
本篇所含全部資料,點(diǎn)擊此處留下郵箱我會(huì)發(fā)給你
資料明細(xì):NUCLEO-F767ZI的PWM呼吸燈測(cè)試程序
覺得內(nèi)容不錯(cuò)的朋友,別忘了一鍵三連哦!
贊 2
收藏 9
關(guān)注 145
成為作者 賺取收益
全部留言
0/200
  • stevendo 2021-11-04 13:35
    老師,能不能發(fā)我一下資料,謝謝! 25****@****.com
    回復(fù) 4條回復(fù)
  • xjin1989 2021-06-09 11:10
    老師,能不能發(fā)我一下資料,謝謝! 84****@****.com
    回復(fù) 5條回復(fù)
  • 魚鷹單片機(jī) 2021-01-14 17:06
    老師,能不能發(fā)我一下資料,謝謝! ya****@****.com
    回復(fù) 1條回復(fù)
  • VKN007 2020-12-17 18:56
    老師,能不能發(fā)我一下資料,謝謝! 93****@****.com
    回復(fù) 3條回復(fù)