陳靈方,秦翠蘭,王立強(qiáng),張 鵬
(新疆理工學(xué)院,新疆 阿克蘇 843100)
運(yùn)用PWM原理進(jìn)行調(diào)速是直流電機(jī)調(diào)速的主要方式之一。現(xiàn)代汽車中大量采用了電氣設(shè)備,如自動(dòng)雨刷、自動(dòng)燈光、自動(dòng)落鎖、電子駐車等機(jī)構(gòu),為了使車輛部件機(jī)構(gòu)達(dá)到更好的人機(jī)工程學(xué)和性能要求,這些電子設(shè)備大多含有可進(jìn)行直流調(diào)速的驅(qū)動(dòng)器件[1]。電動(dòng)汽車兩擋變速器中,換擋過(guò)程采用直流電機(jī)作為換擋動(dòng)作驅(qū)動(dòng)器,在變速器的換擋性能試驗(yàn)中通過(guò)改變換擋電機(jī)轉(zhuǎn)速來(lái)實(shí)現(xiàn)不同工況下?lián)Q擋過(guò)程的品質(zhì)優(yōu)化,而換擋電機(jī)的轉(zhuǎn)速調(diào)節(jié)采用PWM直流調(diào)速。本研究基于89C52RC單片機(jī)的定時(shí)器功能來(lái)實(shí)現(xiàn)直流電機(jī)的調(diào)速系統(tǒng)設(shè)計(jì)。
在圖1a中,如果將開(kāi)關(guān)S按照周期T進(jìn)行反復(fù)閉合與斷開(kāi),每次閉合時(shí)間為ton,電機(jī)兩端的電壓也將呈現(xiàn)周期性變化,如圖1b所示。

圖1 PWM電壓等效原理Fig.1 PWM voltage equivalence principle
此時(shí)電機(jī)兩端的等效電壓為:
通過(guò)上式可以看出,PWM直流電機(jī)調(diào)速實(shí)質(zhì)是變電壓調(diào)速,通過(guò)控制時(shí)間ton即可實(shí)現(xiàn)電動(dòng)機(jī)兩端的等效電壓調(diào)整,從而實(shí)現(xiàn)電動(dòng)機(jī)調(diào)速[2]。
系統(tǒng)采用89C52RC單片機(jī)作為主控芯片,選用ULN2003達(dá)林頓管驅(qū)動(dòng)芯片直接驅(qū)動(dòng)直流電機(jī),硬件電路原理如圖2所示。

圖2 電路原理Fig.2 Circuitry principle
電路中,鍵KEY1為加速按鍵,鍵KEY2為減速按鍵,分別接在P3.0和P3.1端口,低電平有效。由P2.0產(chǎn)生PWM波形,經(jīng)ULN2003驅(qū)動(dòng)芯片后驅(qū)動(dòng)直流電機(jī)運(yùn)行。
基于51系列單片機(jī)的PWM脈寬調(diào)制有兩種方式實(shí)現(xiàn)[3]:一種是通過(guò)程序計(jì)時(shí)的方式產(chǎn)生,此種方法程序邏輯直觀,但程序在執(zhí)行過(guò)程中不能執(zhí)行其他操作,否則會(huì)引起脈寬周期的劇烈變化,造成脈寬調(diào)制波精度不高;另一種是通過(guò)單片機(jī)定時(shí)器功能實(shí)現(xiàn),在定時(shí)器功能開(kāi)啟期間不影響單片機(jī)進(jìn)行鍵盤(pán)掃描等操作,產(chǎn)生的脈寬調(diào)制波精度高,單片機(jī)執(zhí)行效率高。本設(shè)計(jì)采用單片機(jī)定時(shí)器功能,為了更加直觀精確控制程序流程,采用匯編語(yǔ)言進(jìn)行編程來(lái)實(shí)現(xiàn)高精度的PWM調(diào)速[4],程序流程如圖3所示。

圖3 PWM直流電機(jī)調(diào)速程序流程Fig.3 Flow of PWM DC motor speed regulation program
在本系統(tǒng)中,通用寄存器R0存儲(chǔ)脈寬定時(shí)數(shù)據(jù),鍵KEY1或鍵KEY2通過(guò)鍵盤(pán)掃描程序檢測(cè)是否被按下,若被按下則增加或減小通用寄存器R0的值,每次脈寬調(diào)節(jié)及時(shí)將R0的值傳送給TL0,使T0的定時(shí)器計(jì)數(shù)初值發(fā)生改變,實(shí)現(xiàn)脈寬的調(diào)節(jié)。
對(duì)于直流電機(jī)來(lái)說(shuō),要保持電機(jī)穩(wěn)定的調(diào)速性能,PWM頻率需大于1 kHz[5]。對(duì)于采用51系列單片機(jī)定時(shí)器功能輸出PWM波形,需要單片機(jī)的定時(shí)周期不能大于1 ms,若單片機(jī)采用12 MHz晶振,則機(jī)器周期為1 μs,定時(shí)器計(jì)數(shù)要小于1000。
單片機(jī)定時(shí)器T1用來(lái)控制PWM的周期(頻率),采用方式2,即自動(dòng)重裝8位定時(shí)器,最大計(jì)數(shù)值為255,滿足直流電機(jī)PWM調(diào)速的頻率要求。系統(tǒng)的理論P(yáng)WM頻率為:
單片機(jī)定時(shí)器T1的工作方式采用方式2,定時(shí)器T0的工作方式均采用方式1,PWM波的周期由定時(shí)器T1來(lái)實(shí)現(xiàn),脈寬由定時(shí)器T0來(lái)控制,如圖4所示。

圖4 中斷流程Fig.4 Interrupt flow
從圖4可知,脈寬ton必須小于周期T,考慮到單片機(jī)的指令執(zhí)行時(shí)間,ton的值要比周期T小幾個(gè)機(jī)器周期,以便單片機(jī)完成定時(shí)器初始化、中斷響應(yīng)等操作,防止ton的值接近周期T時(shí),出現(xiàn)T0計(jì)時(shí)中斷出現(xiàn)在下一個(gè)T1計(jì)時(shí)周期的情況,造成脈寬調(diào)制精度降低。在一個(gè)PWM波周期內(nèi)的時(shí)間分布如圖5所示。

圖5 單片機(jī)定時(shí)器中斷時(shí)間分配Fig.5 MCU timer interrupt time allocation
匯編程序如下:
TT0:CLR TR0;1個(gè)機(jī)器周期
CLR P2.0;1個(gè)機(jī)器周期
MOV TH0,#0FFH;1個(gè)機(jī)器周期
MOV TL0,R0;控制調(diào)制脈寬,1個(gè)機(jī)器周期
RETI ;2個(gè)機(jī)器周期
TT1:SETB P2.0 ;1個(gè)機(jī)器周期
SETBTR0;1個(gè)機(jī)器周期
RETI ;2個(gè)機(jī)器周期
以上程序中,單片機(jī)定時(shí)器T0的計(jì)時(shí)初值要比T1至少大6個(gè)機(jī)器周期。
程序在中斷執(zhí)行過(guò)程中需等待單片機(jī)正在執(zhí)行的指令執(zhí)行結(jié)束才能響應(yīng)中斷,如果中斷響應(yīng)遇到乘除法運(yùn)算(占空比計(jì)算需要用到乘除法運(yùn)算)則需等待的時(shí)間最長(zhǎng)(4個(gè)機(jī)器周期),造成PWM波的周期與理論上存在誤差。
由PWM的等效電壓計(jì)算可知PWM的占空比為:
當(dāng)PWM為最小脈寬時(shí),即理論占空比η=0,即ton為0。此時(shí)TH0=0FFH、TL0=0FFH,即R0寄存器的值為0FFH,T0定時(shí)器高8位和低8位初值均為255,只需經(jīng)過(guò)一個(gè)機(jī)器周期就會(huì)產(chǎn)生T0的定時(shí)中斷。在T1中斷服務(wù)程序中,T1一個(gè)定時(shí)周期內(nèi)程序運(yùn)行時(shí)間如表1所示。

表1 PWM為最小脈寬時(shí)T1一個(gè)定時(shí)周期內(nèi)程序運(yùn)行時(shí)間
通過(guò)表1可知,在PWM為最小脈寬、T0產(chǎn)生中斷時(shí),單片機(jī)正在執(zhí)行T1的定時(shí)器中斷程序結(jié)束并啟動(dòng)T1,因此并不會(huì)立馬執(zhí)行T0中斷服務(wù)程序,T0中斷響應(yīng)將在T1中斷服務(wù)程序結(jié)束后在T1下一個(gè)的定時(shí)周期內(nèi)響應(yīng)。經(jīng)分析T0的定時(shí)器中斷程序?qū)⒃?~10個(gè)機(jī)器周期內(nèi)執(zhí)行(包含T0的定時(shí)器中斷程序結(jié)束并跳轉(zhuǎn)2個(gè)機(jī)器周期和跳轉(zhuǎn)T0的定時(shí)器中斷程序3~8個(gè)機(jī)器周期),這也造成了單片機(jī)產(chǎn)生PWM波脈寬在最小值時(shí)的不精確。
當(dāng)PWM為最大脈寬時(shí),即理論占空比η=100%,即ton=T。此時(shí)TH0=0FFH、TL0=00H,即R0寄存器的值為00H,T0定時(shí)器計(jì)數(shù)256個(gè)機(jī)器周期后才會(huì)產(chǎn)生T0的定時(shí)中斷,此時(shí)T0的計(jì)時(shí)周期與T1的計(jì)時(shí)周期相同,但在程序執(zhí)行過(guò)程中會(huì)出現(xiàn)T0不在當(dāng)前T1計(jì)時(shí)周期內(nèi)中斷程序,而出現(xiàn)在第二個(gè)T1計(jì)時(shí)周期內(nèi),這會(huì)造成PWM波形的嚴(yán)重不精確,在實(shí)際實(shí)驗(yàn)中會(huì)導(dǎo)致直流電機(jī)在逐漸接近100%占空比時(shí),突然出現(xiàn)轉(zhuǎn)速下降。為消除以上不良情形的出現(xiàn),定時(shí)器T0和T1中斷程序運(yùn)行時(shí)間邏輯在T1一個(gè)定時(shí)周期內(nèi)應(yīng)如表2所示。

表2 PWM為最大脈寬時(shí)T1一個(gè)定時(shí)周期內(nèi)程序運(yùn)行時(shí)間
通過(guò)表2可知,在PWM為最大脈寬時(shí),要保證T0中斷在T1中斷之前響應(yīng),就要在T0中斷初值設(shè)置時(shí)考慮跳轉(zhuǎn)T1的定時(shí)器中斷程序和執(zhí)行T1的定時(shí)器中斷程序的時(shí)間(跳轉(zhuǎn)T1中斷程序3~8個(gè)機(jī)器周期,P2.0口置位1個(gè)機(jī)器周期,啟動(dòng)T0的定時(shí)器1個(gè)機(jī)器周期),共計(jì)5~10個(gè)機(jī)器周期。本系統(tǒng)中有進(jìn)行乘除法運(yùn)算,因此跳轉(zhuǎn)中斷程序可按照最大值10個(gè)機(jī)器周期計(jì)算,需要將定時(shí)器T0的初值TL0增加10,此時(shí)定時(shí)器T0的初值設(shè)為TH0=0FFH、TL0=0AH,即定時(shí)器T0的初值低8位為10,這樣就保障了T1中斷會(huì)在T0中斷結(jié)束后產(chǎn)生。在PWM為最大脈寬時(shí),T1定時(shí)器也存在中斷響應(yīng)跳轉(zhuǎn)時(shí)間等,影響PWM波形的精度。
在實(shí)際進(jìn)行程序設(shè)計(jì)和占空比計(jì)算時(shí),由于兩個(gè)定時(shí)中斷優(yōu)先級(jí)相同,只需要保證在每個(gè)PWM周期內(nèi),定時(shí)器T0一定要先于T1產(chǎn)生中斷就可以正常運(yùn)行。可近似取在PWM脈寬大時(shí)的定時(shí)周期作為脈寬周期,此時(shí)理論上TL0=00H,在實(shí)際程序設(shè)計(jì)中為了讓T0中斷先于T1中斷發(fā)生,便于單片機(jī)計(jì)算占空比,將TL0設(shè)置為06H(TL0=06H),這樣單片機(jī)需要在250個(gè)機(jī)器周期后產(chǎn)生中斷,可認(rèn)為250個(gè)機(jī)器周期就是一個(gè)PWM周期。占空比計(jì)算公式可改為:
式中,@TL0為TL0的當(dāng)前值,即R0寄存器的當(dāng)前值。
對(duì)于51單片機(jī)來(lái)說(shuō),本身并無(wú)浮點(diǎn)運(yùn)算能力,因此以上對(duì)占空比計(jì)算公式的改進(jìn)有利于計(jì)算。由于占空比為百分?jǐn)?shù),因此百分號(hào)前邊數(shù)字完全可以看作為十進(jìn)制數(shù),在計(jì)算時(shí)分別求出各位數(shù)字即可。匯編程序如下:
MOV A,R0 ;
MOV R1,#10 ;
MOV R2,#4;
DIV A,R1;百位和十位存入累加器A,余數(shù)放入R1
MUL A,R2 ;
MOV R2,#4;
MUL R1,R2;
MOV R2,#10 ;
DIV R1,R2 ;提取進(jìn)位
ADD A,R1 ;
MOV R5,A
MOV A,#100
SUBB A,R5 ;累加器A中存放的數(shù)據(jù)為占空比
MOV R1,#10
DIV A,R1;累加器A中存放的數(shù)據(jù)為占空比的十位數(shù)據(jù),R1中存放的數(shù)據(jù)為占空比的個(gè)位數(shù)據(jù)
獲得占空比的各位數(shù)字后,經(jīng)過(guò)LCD或多段數(shù)碼管按位進(jìn)行字符輸出即可。
為驗(yàn)證系統(tǒng)的可行性,實(shí)現(xiàn)既定功能,采取軟件仿真進(jìn)行系統(tǒng)仿真,使用Proteus 8.9軟件對(duì)系統(tǒng)進(jìn)行仿真,如圖6所示。運(yùn)用仿真軟件的示波器功能,圖6分別展示了占空比為10%、50%、92%時(shí)的PWM波形。雖然示波器輸出的PWM波形在理論占空比為0和100%兩種情況下示波器顯示均不是一條直線,但輸出系統(tǒng)的PWM波形經(jīng)仿真測(cè)試可調(diào)可控,系統(tǒng)產(chǎn)生的的PWM波形符合預(yù)期系統(tǒng)要求。

圖6 PWM波形圖Fig.6 PWM waveform diagram
基于89C52RC單片機(jī)的定時(shí)器功能實(shí)現(xiàn)PWM直流電機(jī)調(diào)速,設(shè)計(jì)了程序流程,通過(guò)分析定時(shí)器中斷的執(zhí)行過(guò)程,得到影響PWM精度的主要原因,確定了定時(shí)器參數(shù),計(jì)算了PWM的占空比。在每個(gè)PWM周期內(nèi),兩個(gè)定時(shí)器中斷按照正確順序產(chǎn)生就可保證PWM波的精度,系統(tǒng)才能正常運(yùn)行,運(yùn)用軟件仿真驗(yàn)證該系統(tǒng)的可行性。但在實(shí)際系統(tǒng)的設(shè)計(jì)與測(cè)試中發(fā)現(xiàn),不同的PWM波頻率等因素會(huì)影響電動(dòng)機(jī)的機(jī)械性能,電動(dòng)機(jī)在低占空比的情況下不能克服自身摩擦力矩而處于靜止?fàn)顟B(tài)。針對(duì)以上問(wèn)題,未來(lái)需在此設(shè)計(jì)基礎(chǔ)上進(jìn)行研究改進(jìn)。