什么是脈沖寬度調(diào)制?STM32PWM控制詳解
一、PWM簡介
1.定義
脈沖寬度調(diào)制(PWM) 是一種數(shù)字信號,最常用于控制電路。該信號在預(yù)定義的時間和速度中設(shè)置為高(5v或3.3v)和低(0v)。通常,我們將PWM的高電平稱為1,低電平為0。
2.主要參數(shù)
(1)PWM占空比
PWM信號保持高電平的時間百分比稱為占空比。如果信號始終為高電平,則它處于100%占空比,如果它始終處于低電平,則占空比為0%。如圖1所示,T1為占空比,T為一個PWM周期。
2)PWM的頻率
PWM信號的頻率決定PWM完成一個周期的速度。STM32的MDK編譯器可以選擇5MHZ,10MHZ,20MHZ和50MHZ。
二、PWM產(chǎn)生方式
通過STM32控制板,有兩種方式能產(chǎn)生PWM,第一是利用普通IO口輸出PWM,第二種是利用定時器的PWM的IO口或復(fù)用IO口。
1.普通IO口與PWM口
(1)PWM端口
STM32 的定時器除了 TIM6 和 7。其他的定時器都可以用來產(chǎn)生 PWM 輸出。其中高級定時器 TIM1 和 TIM8 可以同時產(chǎn)生多達(dá) 7 路的 PWM 輸出。而通用定時器也能同時產(chǎn)生多達(dá) 4路的 PWM 輸出,這樣,STM32 最多可以同時產(chǎn)生 30 路 PWM 輸出。
(2)普通IO口
一般能夠輸出PWM的端口都會在主要功能那一欄出現(xiàn)CHx的標(biāo)志,而普通定時器沒有出現(xiàn)這種標(biāo)志。如圖所示,上面的紅框就是普通的定時器,不是專用的PWM端口。
PWM方波
脈沖寬度調(diào)制(PWM),是英文“Pulse Width Modulation”的縮寫,簡稱脈寬調(diào)制,是利用微處理器的數(shù)字輸出來對模擬電路進(jìn)行控制的一種非常有效的技術(shù),廣泛應(yīng)用在從測量、通信到功率控制與變換的許多領(lǐng)域中。
PWM它是一系列脈沖,這些脈沖將以方波的形式出現(xiàn)。在任何給定的時間點,波型要么是高電平或者是低電平。
信號保持在高電平的持續(xù)時間稱為“接通時間”,信號保持在低電平的持續(xù)時間稱為“斷開時間”。對于PWM信號我們需要關(guān)注兩個與之相關(guān)的重要參數(shù),一個是PWM占空比,另一個是PWM信號的頻率。
1.PWM占空比
PWM信號在特定的時間內(nèi)保持接通狀態(tài),然后在剩余的時間內(nèi)保持?jǐn)嚅_狀態(tài)。占空比是指在一個脈沖循環(huán)內(nèi),接通時間相對于總時間所占的比例。在一段連續(xù)工作時間內(nèi)脈沖高電平時間與總時間的比值。如果信號總是處于高電平,它的占空比是百分之百;如果信號總是處于低電平,那么它的占空比是0%。計算占空比的公式如下所示:
通過控制從0%到100%的占空比,我們可以控制PWM信號的“接通時間”,從而控制信號的寬度。由于我們可以通過調(diào)節(jié)脈沖信號的寬度控制接通時間,所以將這種控制方式稱為“脈沖寬度調(diào)制”。
2.PWM的頻率
PWM信號的頻率決定了PWM完成一個信號周期的速度。周期是指PWM信號完成一個接通和關(guān)閉的時間。計算頻率的公式如下所示
3.PWM的產(chǎn)生
單片機(jī)產(chǎn)生PWM,有以下幾種方法:
指令生成PWM,可產(chǎn)生分辨率很高的PWM,但會影響其他任務(wù)運行,一般用在較簡單的控制中
定時器產(chǎn)生PWM
部分單片機(jī)本身具有PWM模塊功能
定時器
1.定時器功能
定時、輸出比較(PWM)、輸入捕獲(測量脈沖寬度)、互補(bǔ)輸出
2.定時器分類
基本定時器、通用定時器、高級定時器
3.定時器資源
F103系列有兩個高級定時器TIM1和TIM8、4個通用定時器TIM2~5、2個基本定時器
基本定時器(TIM6,TIM7)的主要功能
基本的定時功能
包含一個16位自動裝載計數(shù)器,由各自的可編程預(yù)分頻器驅(qū)動
通用定時器(TIM2~TIM5)的主要功能
基本的定時器的功能
測量輸入信號的脈沖長度( 輸入捕獲)
產(chǎn)生輸出波形( 輸出比較和PWM)
高級定時器(TIM1,TIM8)的主要功能
具有基本,通用定時器的所有功能
具有控制交直流電動機(jī)所有的功能,如輸出6路互補(bǔ)帶死區(qū)的信號、剎車功能等等
在之前的文章中,我們已經(jīng)了解了使用 STM32 進(jìn)行 ADC 轉(zhuǎn)換?,F(xiàn)在,我們將了解STM32 中的 PWM(脈沖寬度調(diào)制)以及如何使用 PWM 技術(shù)控制 LED 的亮度或直流風(fēng)扇的速度。
我們知道有兩種類型的電路信號:模擬和數(shù)字。模擬信號有3V、3.1V、2V...等電壓信號,而數(shù)字信號只有1 和 0。
傳感器輸出的是模擬信號,這些模擬信號使用 ADC 轉(zhuǎn)換為數(shù)字信號,因為微控制器只理解數(shù)字信號。處理完這些 ADC 值后,需要再次將輸出轉(zhuǎn)換為模擬形式以驅(qū)動模擬設(shè)備。為此,我們使用某些方法,如 PWM、數(shù)模 (DAC) 轉(zhuǎn)換器等。
什么是 PWM(脈沖寬度調(diào)制)?(前面的文章也有相關(guān)介紹)
PWM可以讓數(shù)字值控制模擬設(shè)備,例如控制電機(jī)的速度,LED的亮度等。我們知道電機(jī)和LED工作在模擬信號上。但是PWM不提供純模擬輸出,PWM看起來像是由短脈沖產(chǎn)生的模擬信號。
PWM 的占空比
PWM 信號保持高電平(ON Time)的時間百分比稱為占空比。如果信號始終打開,則占空比為 100%,如果始終關(guān)閉,則占空比為 0%。
占空比 = ON Time /(ON Time + OFF Time)
STM32中的PWM
STM32F103C8 有 15 個 PWM 引腳和 10 個 ADC 引腳。它具有 16 位 PWM 分辨率(2^16)。
所以 65535 的值為100% 占空比,平均電壓=總電壓;
同樣,32767 的值為50% 占空比,平均電壓=50%總電壓;
13107 的值為20% 占空比,平均電壓=20%總電壓。
這里我們使用電位器和 STM32 通過 PWM 技術(shù)來改變 LED 的亮度和直流風(fēng)扇的速度。1602 LCD用于顯示 ADC 值 (0-4095) 和輸出的PWM 值 (0-65535) 。
直流風(fēng)扇:這里使用的直流風(fēng)扇是PC 的 BLDC 風(fēng)扇。它需要額外提供電源,所以我們使用 9V 直流電池。PWM就是脈沖寬度調(diào)制,也就是占空比可變的脈沖波形。PWM控制技術(shù)就是對半導(dǎo)體開關(guān)器件的導(dǎo)通和關(guān)斷進(jìn)行控制,使輸出端得到一系列幅值相等而寬度不相等的脈沖,用這些脈沖來代替正弦波或其他所需要的波形。按一定的規(guī)則對各脈沖的寬度進(jìn)行調(diào)制,既可改變逆變電路輸出電壓的大小,也可改變輸出頻率。