楊 宇
(昆明冶金高等??茖W(xué)校電氣與機(jī)械學(xué)院,云南 昆明 650033)
PWM是英文Pulse Width Modulation(脈沖寬度調(diào)制)的縮寫,它是利用微處理器的數(shù)字輸出來對模擬電路進(jìn)行控制的一種技術(shù),通過改變矩形波的占空比來獲得不同的平均電壓,占空比是指高電平持續(xù)時間在1個矩形波周期時間內(nèi)的百分比。PWM的應(yīng)用很廣,它可以控制燈光的亮度、控制直流電機(jī)的轉(zhuǎn)速、輸出語音信號等。
用單片機(jī)來實現(xiàn)PWM實際上是在單片機(jī)的某個引腳輸出一系列的矩形波,其周期一般是固定的,而其高電平、低電平所占用的時間是可以調(diào)整的,即通過改變占空比在單片機(jī)引腳上輸出不同的電壓平均值。在實際的應(yīng)用中,經(jīng)常使用51單片機(jī)來實現(xiàn)PWM。有的51單片機(jī)具有硬件的PWM模塊,可以通過配置相關(guān)的特殊功能寄存器來實現(xiàn)PWM;而有的51單片機(jī)并不具有硬件的PWM模塊,需要通過軟件算法來實現(xiàn)PWM。該文主要針對不具有硬件PWM的51單片機(jī),提出2種實現(xiàn)PWM的控制算法。
該文以51單片機(jī)對直流電動機(jī)的調(diào)速控制為例來論述2種實現(xiàn)PWM的控制算法。該例中51單片機(jī)采用AT89C51,通過驅(qū)動芯片L298連接AT89C51和直流電動機(jī),AT89C51的引腳P2.0、P2.1、P1.7分別連接L298的輸入端1(IN1)、輸入端2(IN2)、使能端ENA。L298的輸出端1(OUT1)和輸出端2(OUT2)連接直流電動機(jī)的2個接線端。當(dāng)使能端ENA為1,引腳P2.0和P2.1分別輸出1和0時,直流電動機(jī)正轉(zhuǎn);引腳P2.0和P2.1均輸出1或0時直流電動機(jī)停止。硬件原理圖見如圖1。
圖1 AT89C51驅(qū)動直流電動機(jī)硬件原理圖
PWM是一個與延時有關(guān)的概念,而單片機(jī)具有軟件和定時器2種延時方法,所以我們可以基于圖1的硬件原理圖來分析2種實現(xiàn)PWM的控制算法:軟件延時的方法和定時器中斷的方法。
該方法利用單片機(jī)的軟件延時函數(shù)來控制一個PWM信號周期中高低電平的持續(xù)時間,以到達(dá)PWM信號所需的占空比。實例程序見圖2,程序中的delayms()是用戶自定義的軟件延時函數(shù),電機(jī)正轉(zhuǎn)和停止時都要調(diào)用該函數(shù)來控制電機(jī)正轉(zhuǎn)和停止的持續(xù)時間,對該函數(shù)所賦的實參決定了持續(xù)的時間。在電機(jī)正轉(zhuǎn)和停止的實參之和不變的情況下,成比例的增大電機(jī)正轉(zhuǎn)的實參可以控制電機(jī)的轉(zhuǎn)速成比例的增大,反之,成比例的減小電機(jī)正轉(zhuǎn)的實參可以控制電機(jī)的轉(zhuǎn)速成比例的減小,這樣就可以實現(xiàn)對直流電動機(jī)的速度控制。
圖2 軟件延時方法的程序
該方法利用單片機(jī)的定時器中斷以及中斷的次數(shù)來控制1個PWM信號周期中高低電平的持續(xù)時間,以到達(dá)PWM信號所需的占空比。實例程序圖3,該程序只用到51單片機(jī)內(nèi)部的2個定時器中的定時器1,定時器1每定時1次的時間為100 μs,定時時間每到1次在中斷程序中讓中斷次數(shù)標(biāo)志time加1,并且根據(jù)中斷次數(shù)標(biāo)志time的值來決定PWM信號的周期和占空比,第一個if語句中的time值決定周期,第二個if語句中的time值決定電機(jī)正轉(zhuǎn)的時間,else語句對應(yīng)的time值決定電機(jī)停止的時間。該例中設(shè)定的PWM信號周期為1 ms,電機(jī)正轉(zhuǎn)時間為200 μs,電機(jī)停止時間為800 μs。在PWM信號周期不變的情況下,成比例的增大電機(jī)正轉(zhuǎn)的時間可以控制電機(jī)的轉(zhuǎn)速成比例的增大,反之,成比例的減小電機(jī)正轉(zhuǎn)的時間可以控制電機(jī)的轉(zhuǎn)速成比例的減小,這樣就可以實現(xiàn)對直流電動機(jī)的速度控制。
圖3 定時器中斷方法的程序
以上2種方法都能夠?qū)崿F(xiàn)PWM控制,但兩者都有其優(yōu)缺點(diǎn)。軟件延時的方法程序設(shè)計簡單,但控制的精確度沒有定時器中斷的方法高,特別是當(dāng)主程序中除了PWM控制還有其它功能程序時,例如鍵盤掃描、顯示等操作,因為單片機(jī)的CPU(中央處理器)需要花費(fèi)額外的時間去執(zhí)行其它操作,這樣就會影響PWM控制的精確度。定時器中斷的方法由于CPU和定時器是并行工作,并且每次定時時間到都會進(jìn)入中斷服務(wù)程序進(jìn)行PWM的高低電平處理,即使主程序中有其它功能程序,仍然能保證較高的PWM控制精度。定時器中斷的方法程序設(shè)計相對繁瑣,特別是在中斷服務(wù)程序中不能編寫太過復(fù)雜的語句,這樣也會影響PWM的控制精度。