99久久全国免费观看_国产一区二区三区四区五区VM_久久www人成免费看片中文_国产高清在线a视频大全_深夜福利www_日韩一级成人av

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

天哪!原來PWM這么簡單

本文將帶你了解PWM。我們將學習PWM的基本原理與分類,PWM如何實現,以及程序實現。如果覺得不錯,歡迎關注、分享、收藏、點贊。希望能幫助到大家,如有錯誤敬請指出,謝謝!

目錄

  • 基本原理
  • PWM是如何實現?
  • 分類
  • 程序實現
  • 總結

一、基本原理

PWM的全稱是脈沖寬度調制Pulse-width modulation),是通過將有效的電信號分散成離散形式從而來降低電信號所傳遞的平均功率的一種方式。

所以根據面積等效法則,可以通過對改變脈沖的時間寬度,來等效的獲得所需要合成的相應幅值頻率的波形。

具體如下圖所示:

由上圖可知,脈沖寬度調制使用一個脈沖寬度會被調制的方波,并且波型的平均值會有所變化。

因為不支持自動解析latex公式,又不想重新敲公式,下面文字我直接復制為圖片了;

占空比

圖中存在三種占空比狀態,25%50%75%占空比狀態,不難發現,假設占空比為D,則滿足:

                                   

其中是PWM的周期,通常和載波的周期相同;

二、PWM是如何實現?

PWM實現的原理是通過鋸齒波/三角波(載波)所需要合成的波形(調制波)進行比較,然后確定PWM所需要輸出的極性,通常是ON或者是OFF,因為一般都是作用到開關元器件上;如下圖所示;

振蕩器和比較器

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

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

simulink

最終輸出波形如下:

50%占空比

這里簡單說明一下:

  • 鋸齒波(圖中橙色波形)最大為10,然后我希望輸出平均為5的波形(圖1中紅色的水平直線);
  • 那么通過比較,當鋸齒波小于5時;PWM輸出低電平,即為OFF;
  • 當鋸齒波大于5時,PWM輸出高電平,即為ON;

所以再換一個思路,如果我希望輸出一個電壓逐漸升高的波形呢,該如何設計呢?

其實很簡單,只要把需要調制的波形設置為斜坡輸出的波形就可以了,具體如下圖所示;

占空比逐漸增大

可以看到,最終占空比逐漸從0%增大到100%;

然后我們繼續想,能不能調制出其他的波形,比如調制一個正弦波sin wave,那也就是我們常說的SPWM,其實是可以的,具體如下圖所示;

SPWM

三、分類

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

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

中央對齊PWM

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

         中央對齊PWM

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

四、程序實現

現在的MCU大部分都自帶硬件PWM發生器,即配置好相應的寄存器,就能直接產生PWM,下面的例子基于NUCLEO-F767ZI,通過cubemx配置了三路PWM輸出,然后實現了呼吸燈的效果;

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;
		}
	}
}

整體效果如下:

呼吸燈

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

PWM變化情況

五、總結

本文簡單介紹了PWM的原理,以及如何產生PWM,可以通過鋸齒波作為載波和調制波經過比較強,產生相應的PWM輸出波形,最后結合STM32實現了一個呼吸燈的簡單程序。


聲明:本內容為作者獨立觀點,不代表電子星球立場。未經允許不得轉載。授權事宜與稿件投訴,請聯系:editor@netbroad.com
本篇所含全部資料,點擊此處留下郵箱我會發給你
資料明細:NUCLEO-F767ZI的PWM呼吸燈測試程序
覺得內容不錯的朋友,別忘了一鍵三連哦!
贊 2
收藏 9
關注 145
成為作者 賺取收益
全部留言
0/200
  • stevendo 2021-11-04 13:35
    老師,能不能發我一下資料,謝謝! 25****@****.com
    回復 4條回復
  • xjin1989 2021-06-09 11:10
    老師,能不能發我一下資料,謝謝! 84****@****.com
    回復 5條回復
  • 魚鷹單片機 2021-01-14 17:06
    老師,能不能發我一下資料,謝謝! ya****@****.com
    回復 1條回復
  • VKN007 2020-12-17 18:56
    老師,能不能發我一下資料,謝謝! 93****@****.com
    回復 3條回復
主站蜘蛛池模板: 亚洲精品视频免费 | 亚洲欧洲国产精品久久 | 人妻熟妇乱又伦精品视频 | 午夜久久福利 | 日本中文字幕日韩精品免费 | 狠狠做深爱婷婷久久综合一区 | www.毛片网站 | 亚洲午夜精品一区二区三区 | 91精品爽啪蜜夜国产在线播放 | 亚洲经典三级 | 日日夜夜一区二区 | 成年网站在线播放 | 我要看黄色大片 | 女人下边被添全过程A片图片 | 欧美国产成人精品二区芒果视频 | 久久久久久久爱 | 国内精品免费一区二区2001 | 亚洲综合憿情五月丁香五月网 | 精品久久久久久久久久中文字幕 | 人妻人人澡人人添人人爽 | 色片在线观看 | 国产二区自拍 | CHINESE国产老熟女 | 国产普通话刺激视频在线播放 | 久久激情网站 | av天堂永久资源网av天堂 | 免费黄网站在线观看 | 亚洲色在线无码国产精品不卡 | 乱中年女人伦av三区 | 在线不卡欧美精品一区二区三区 | 久久久久综合一区二区三区 | 精品无码中文字幕不卡 | 国产69精品久久99不卡免费版 | 91嫩草人人| www.九九九 | 男女啪啪做爰高潮全过有网站 | 在线天堂一区 | 免费人成免费观看视频 | 欧美日韩不卡一区二区 | 人妻av资源先锋影音av资源 | 无码专区AAAAAA免费视频 |