PWM(Pulse Width Modulation)簡稱脈寬調制,是利用微處理器的數字輸出來對模擬電路進行控制的一種非常有效的技術,廣泛應用在測量、通信、工控等方面。
是指在1秒鐘內,信號從高電平到低電平再回到高電平的次數,也就是說一秒鐘PWM有多少個周期,單位Hz。如果頻率為50Hz ,也就是說一個周期是20ms,那么一秒鐘就有 50次PWM周期。是一個脈沖周期內,高電平的時間與整個周期時間的比例,單位是% (0%-100%)

其中,周期是一個脈沖信號的時間,1s內的周期T次數等于頻率f,脈寬時間是指高電平時間。上圖中,脈寬時間占總周期時間的比例,就是占空比。比方說,周期的時間是10ms,脈寬時間是8ms,那么占空比是8/10= 80%,這就是占空比為80%的脈沖信號。PWM就是脈沖寬度調制,通過調節占空比就可以調節脈沖寬度。以STM32單片機為例,其IO口只能輸出高電平和低電平。假設高電平為5V、低電平則為0V,那么要輸出不同的模擬電壓就要用到PWM。通過改變IO口輸出的方波的占空比,從而獲得使用數字信號模擬成的模擬電壓信號。電壓是以一種脈沖序列被加到模擬負載上去的,接通時是高電平1,斷開時是低電平0。接通時直流供電輸出,斷開時直流供電斷開。通過對接通和斷開時間的控制,理論上來講,可以輸出任意不大于最大電壓值5V的模擬電壓。比方說,占空比為50%那就是高電平時間一半,低電平時間一半。在一定的頻率下,就可以得到模擬的2.5V輸出電壓。那么75%的占空比,得到的電壓就是3.75V,如下圖所示。

也就是說,在一定的頻率下,通過不同的占空比即可得到不同大小的輸出模擬電壓,PWM就是通過這種原理實現數字模擬信號轉換的。
LED呼吸燈
以經常使用的呼吸燈舉例。
一般人眼睛對于80Hz以上刷新頻率則完全沒有閃爍感,那么我們平時見到的LED燈,當它的頻率大于50Hz的時候,人眼就會產生視覺暫留效果,基本就看不到閃爍了,而是誤以為是一個常亮的LED燈。
由于頻率很高時看不到閃爍,占空比越大LED越亮,占空比越小LED越暗,相關實例:詳解STM32呼吸燈的PWM實現。在頻率一定時,可以用不同占空比改變LED燈的亮度,使其達到一個呼吸燈的效果。
PWM對電機轉速的控制
調節占空比可以實現不同電壓的輸出,實現對電機轉速的調節。
對于直流電機來講,電機輸出端引腳是高電平電機就可以轉動,當輸出端高電平時,電機會轉動,但是是一點一點的提速,在高電平突然轉向低電平時,電機由于電感有防止電流突變的作用是不會停止的,會保持這原有的轉速,以此往復,電機的轉速就是周期內輸出的平均電壓值,所以實質上我們調速是將電機處于一種,似停非停,似全速轉動又非全速轉動的狀態,那么在一個周期的平均速度就是我們占空比調出來的速度了。
在電機控制中,電壓越大,電機轉速越快,而通過PWM輸出不同的模擬電壓,便可以使電機達到不同的輸出轉速,相關文章:介紹常見電機的控制算法。當然,在電機控制中,不同的電機都有其適應的頻率。
頻率太低會導致運動不穩定,如果頻率剛好在人耳聽覺范圍,有時還會聽到呼嘯聲。頻率太高時,電機可能反應不過來,正常的電機頻率在 6-16kHZ之間為好。
PWM對舵機的控制
舵機的控制就是通過一個固定的頻率,給其不同的占空比來控制舵機不同的轉角。
舵機的頻率一般為頻率為50HZ,也就是一個20ms左右的時基脈沖,而脈沖的高電平部分一般為0.5ms-2.5ms范圍,來控制舵機不同的轉角。
500-2500us的PWM高電平部分對應控制180度舵機的0-180度。
以180度角度伺服為例,那么對應的控制關系是這樣的:
下圖演示占空比從1ms變化到2ms時,轉角的變化。

經常使用的直流電機原理就是電生磁:通電導線會產生磁場,也就是電磁感應旋轉磁場帶動轉子轉動。電動機是由定子和轉子組成,一個產生旋轉磁場,一個為磁極,電機的轉子(軸承)就轉起來了。這便實現了電能->磁能->機械能的轉換。下面這個圖可以更直觀的理解:

通過上文大概知道,通過PWM控制電機速度,實際上是控制供電電流的大小來實現。通電導線在磁場中受到的力稱為安培力,而安培力的公式:F=BIL。其中,F是受力大小,I是電流大小,L是導線長度。在其他條件不變的情況下,控制其通過的電流即控制安培力的大小。電機的電阻R是基本不變的,那么電流 I = U/R,F= BLU/R。在R、B、L不變的情況,控制安培力的大小,本質就是修改供電電壓的大小。我們也就知道,控制電機轉速的本質就是給電機供不同的供電電壓,電壓越大,電機轉速越快。而PWM的本質就是脈寬調制,通過輸出不同的占空比,從而將直流電壓轉換成不同電壓值的模擬信號。占空比可以實現對電機轉速的調節,我們知道,占空比是高電平在一個周期之中的比值,高電平的所占的比值越大,占空比就越大,對于直流電機來講,電機輸出端引腳是高電平電機就可以轉動,當輸出端高電平時,電機會轉動,但是是一點一點的提速,在高電平突然轉向低電平時,電機由于電感有防止電流突變的作用是不會停止的,會保持這原有的轉速,以此往復,電機的轉速就是周期內輸出的平均電壓值,所以實質上我們調速是將電機處于一種,似停非停,似全速轉動又非全速轉動的狀態,那么在一個周期的平均速度就是我們占空比調出來的速度了。在電機控制中,電壓越大,電機轉速越快,而通過PWM輸出不同的模擬電壓,便可以使電機達到不同的輸出轉速。當然,在電機控制中,不同的電機都有其適應的頻率 頻率太低會導致運動不穩定,如果頻率剛好在人耳聽覺范圍,有時還會聽到呼嘯聲。頻率太高的電機可能反應不過來,正常的電機頻率在 6-16kHZ之間為好。輸出的電壓就不同,電機轉速就不同。那我們可以知道,通過滑動變阻器或者更換不同電壓的電源都可以實現電機的調速,但是在實際應用中顯然PWM更方便些。專業一點的話就是:所謂PWM就是脈寬調制器,通過調制器給電機提供一個具有一定頻率的脈沖寬度可調的脈沖電。脈沖寬度越大即占空比越大,提供給電機的平均電壓越大,電機轉速就高。反之脈沖寬度越小,則占空比越越小。提供給電機的平均電壓越小,電機轉速就低。 |