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