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