PWM是Pulse Width Modulation的縮寫,它的中文名字是脈沖寬度調(diào)制,一種說法是它利用微處理器的數(shù)字輸出來對模擬電路進行控制的一種有效的技術(shù),其實就是使用數(shù)字信號達到一個模擬信號的效果。這是個什么概念呢?我們一步步來介紹。
首先從它的名字來看,脈沖寬度調(diào)制,就是改變脈沖寬度來實現(xiàn)不同的效果。我們先來看三組不同的脈沖信號,如下圖所示:
單片機PWM(脈寬調(diào)制)控制的基本原理,簡而言之,就是通過改變脈沖信號的寬度(占空比)來控制模擬電路。這涉及到單片機生成一系列脈沖信號,每個脈沖信號的高電平持續(xù)時間和整個周期的比值(即占空比)決定了模擬電路的輸出。在開始前我有一些資料,是我根據(jù)網(wǎng)友給的問題精心整理了一份「單片機的資料從專業(yè)入門到高級教程」,
點個關(guān)注在評論區(qū)回復(fù)“888”之后私信回復(fù)“888”,全部無償共享給大家!!!
具體來說,單片機可以通過其內(nèi)部的定時器和計數(shù)器功能來生成這些脈沖信號。定時器用于設(shè)定脈沖信號的周期,而計數(shù)器則用于控制每個周期內(nèi)高電平的時間,從而調(diào)整占空比。當占空比改變時,模擬電路的輸出也會相應(yīng)變化。
在PWM控制中,單片機輸出的脈沖信號被送到功率驅(qū)動電路,驅(qū)動電路再將這些脈沖信號轉(zhuǎn)化為能夠控制電機、LED等設(shè)備實際工作的電壓或電流信號。通過精確控制占空比,可以實現(xiàn)對這些設(shè)備的精確控制,比如調(diào)節(jié)電機的轉(zhuǎn)速、LED的亮度等。
此外,PWM控制還具有許多優(yōu)點,比如響應(yīng)速度快、控制精度高、功耗低等。因此,在單片機應(yīng)用中,PWM控制技術(shù)被廣泛應(yīng)用于電機控制、電源管理、LED調(diào)光等領(lǐng)域。
為了深入理解單片機PWM控制的基本原理,你需要具備一定的單片機編程基礎(chǔ)、模擬電路知識和數(shù)字電子技術(shù)基礎(chǔ)。通過實踐和學(xué)習(xí),你可以逐步掌握這一技術(shù),并將其應(yīng)用于實際項目中。
這是一個周期是 10ms,即頻率是 100Hz 的波形,但是每個周期內(nèi),高低電平脈沖寬度各不相同,這就是 PWM 的本質(zhì)。在這里大家要記住一個概念,叫做“占空比”。占空比是指高電平的時間占整個周期的比例。比如,第一部分波形的占空比是 40%,第二部分波形占空比是 60%,第三部分波形占空比是 80%,這就是 PWM 的解釋。
那為何它能對模擬電路進行控制呢?大家想一想,我們數(shù)字電路里,只有 0 和 1 兩種狀態(tài),比如我們第 2 章學(xué)會的點亮 LED 小燈那個程序,當我們寫一個 LED = 0;小燈就會長亮,當我們寫一個 LED = 1;小燈就會滅掉。當我們讓小燈亮和滅間隔運行的時候,小燈是閃爍。
如果我們把這個間隔不斷的減小,減小到我們的肉眼分辨不出來,也就是 100Hz 以上的頻率,這個時候小燈表現(xiàn)出來的現(xiàn)象就是既保持亮的狀態(tài),但亮度又沒有 LED = 0;時的亮度高。
那么,我們不斷改變時間參數(shù),讓 LED = 0;的時間大于或者小于 LED = 1;的時間,會發(fā)現(xiàn)亮度都不一樣,這就是模擬電路的感覺了,不再是純粹的 0 和 1,還有亮度不斷變化。
大家會發(fā)現(xiàn),如果我們用 100Hz 的信號,如圖所示,假如高電平熄滅小燈,低電平點亮小燈的話,第一部分波形熄滅 4ms,點亮 6ms,亮度最高,第二部分熄滅 6ms,點亮 4ms,亮度次之,第三部分熄滅 8ms,點亮 2ms,亮度最低。
那么,用程序驗證一下我們的理論,我們用定時器T0 定時改變 P0.0 的輸出來實現(xiàn) PWM,與純定時不同的是,這里我們每周期內(nèi)都要重載兩次定時器初值,即用兩個不同的初值來控制高低電平的不同持續(xù)時間。為了使亮度的變化更加明顯,程序中使用的占空比差距更大。
PWM原理
以單片機為例,我們知道,單片機的IO口輸出的是數(shù)字信號,IO口只能輸出高電平和低電平,假設(shè)高電平為5V 低電平則為0V 那么我們要輸出不同的模擬電壓,就要用到PWM,通過改變IO口輸出的方波的占空比從而獲得使用數(shù)字信號模擬成的模擬電壓信號。
我們知道,電壓是以一種連接1或斷開0的重復(fù)脈沖序列被夾到模擬負載上去的(例如LED燈,直流電機等),連接即是直流供電輸出,斷開即是直流供電斷開。通過對連接和斷開時間的控制,理論上來講,可以輸出任意不大于最大電壓值(即0~5V之間任意大小)的模擬電壓。
比方說 占空比為50% 那就是高電平時間一半,低電平時間一半,在一定的頻率下,就可以得到模擬的2.5V輸出電壓 那么75%的占空比 得到的電壓就是3.75V。

pwm的調(diào)節(jié)作用來源于對“占周期”的寬度控制,“占周期”變寬,輸出的能量就會提高,通過阻容變換電路所得到的平均電壓值也會上升,“占周期”變窄,輸出的電壓信號的電壓平均值就會降低,通過阻容變換電路所得到的平均電壓值也會下降。
也就是,在一定的頻率下,通過不同的占空比 即可得到不同的輸出模擬電壓。
pwm就是通過這種原理實現(xiàn)D/A轉(zhuǎn)換的。
總結(jié):PWM就是在合適的信號頻率下,通過一個周期里改變占空比的方式來改變輸出的有效電壓。
PWM頻率越大,相應(yīng)越快,PWM輸出呼吸燈,那么,PWM信號的實際作用是什么呢?我們以經(jīng)常使用的呼吸燈舉例:一般人眼睛對于80Hz 以上刷新頻率則完全沒有閃爍感。
頻率太小的話看起來就會閃爍,那么我們平時見到的LED燈,當它的頻率大于50Hz的時候,人眼就會產(chǎn)生視覺暫留效果,基本就看不到閃爍了,而是一個常亮的LED燈,你在1秒內(nèi),高電平0.5秒,低電平0.5秒,(頻率1Hz)如此反復(fù),那么你看到的電燈就會閃爍,但是如果是10毫秒內(nèi),5毫秒打開,5毫秒關(guān)閉,(頻率100Hz) 這時候燈光的亮滅速度趕不上開關(guān)速度(LED燈還沒完全亮就又熄滅了),由于視覺暫留作用,人眼不感覺電燈在閃爍,而是感覺燈的亮度少了,因為高電平時間(占空比)為50%,亮度也就為之前的50% ,頻率很高時,看不到閃爍,占空比越大,LED越亮;頻率很低時,可看到閃爍,占空比越大,LED越亮。
所以,在頻率一定下,可以用不同占空比改變LED燈的亮度。使其達到一個呼吸燈的效果。