DPF系列電子膨脹閥由主閥和定子線圈組成,電子膨脹閥的驅(qū)動(dòng)部件是一個(gè)脈沖步進(jìn)電機(jī)。電子膨脹閥的執(zhí)行機(jī)構(gòu)有多種形式,但專門用于測試膨脹閥性能的試驗(yàn)機(jī)卻并不多見。因此,開發(fā)出一種合適的試驗(yàn)機(jī),以測試DPF系列電子膨脹閥的一些重要性能及參數(shù)就變得很有意義,如通過閥的循環(huán)開閉來測試閥的壽命、通過閥的開度來進(jìn)行流量系數(shù)、流量與閥的開度實(shí)驗(yàn)等。
1系統(tǒng)硬件設(shè)計(jì)
DPF電子膨脹閥試驗(yàn)機(jī)主要由鍵盤操作來控制。系統(tǒng)主要功能鍵分為兩大類:設(shè)置顯示鍵和控制鍵。設(shè)置顯示鍵主要設(shè)置及顯示試驗(yàn)機(jī)參數(shù),控制鍵主要用來控制閥的各種性能測試試驗(yàn)。
整個(gè)系統(tǒng)采用模塊化設(shè)計(jì)。系統(tǒng)硬件電路主要由單片機(jī)、鍵盤、顯示、A/D采樣電路、步進(jìn)電機(jī)驅(qū)動(dòng)電路等部分組成。其硬件電路框圖如圖1所示。
由于程序比較大、中間變量比較多,我們采用了ATMEL公司的AT89C52的單片機(jī)。它具有8KB的flash程序存儲(chǔ)空間、256字節(jié)的RAM。因試驗(yàn)機(jī)對(duì)常用的參數(shù)要進(jìn)行保護(hù),所以,單片機(jī)外接了一個(gè)EEPROM。為了減少數(shù)字電路對(duì)模擬驅(qū)動(dòng)電路和采樣電路的影響,在它們中間加光耦進(jìn)行隔離。
為了使采樣電壓的精度達(dá)到0.1%,翻蓋試驗(yàn)機(jī)本系統(tǒng)中采用了內(nèi)部帶有采樣保持器、十二位串行輸出的A/D采集芯片MAX186。為了準(zhǔn)確控制數(shù)據(jù)的轉(zhuǎn)換及傳送,利用軟件和通過一個(gè)I/O口發(fā)控制脈沖。在本系統(tǒng)中,MAX186 和單片機(jī)的接口有四根線:轉(zhuǎn)換信號(hào)線(ADCS)、時(shí)鐘線(CLOCK)、數(shù)據(jù)輸入線(MISO)、數(shù)據(jù)輸出線(MOSI)。軟件利用單片機(jī)的P1.6和 P1.7口模擬ADCS和CLOCK時(shí)序,通過P1.4口輸出相應(yīng)的控制字到MAX186,從P1.5得到12bit的電壓采樣數(shù)據(jù),并存入相應(yīng)的數(shù)據(jù)存儲(chǔ)區(qū)。由于步進(jìn)電機(jī)的驅(qū)動(dòng)電壓一般為12V,而MAX186的最大測量值為4.096V,因此,輸入的電壓還要經(jīng)過降壓處理;為了提高帶負(fù)載能力,中間還加入了電壓跟隨器。
試驗(yàn)機(jī)工作原理大致如下:單片機(jī)通過154控制燈位、通過8255的B口輸出當(dāng)前的段碼值來定時(shí)刷新顯示,通過8255C口定時(shí)掃描鍵盤。當(dāng)有鍵按下時(shí),如“位置1”鍵按下,CPU通過掃描8255C口狀態(tài)且延時(shí)去鍵抖動(dòng)后,確認(rèn)是“位置1”鍵按下,于是,系統(tǒng)就進(jìn)入“控制”模塊中的“位置1”子程序。系統(tǒng)根據(jù)設(shè)置的膨脹閥轉(zhuǎn)到“位置1”所需的脈沖數(shù)和當(dāng)前的脈沖數(shù)循環(huán)調(diào)用單步轉(zhuǎn)動(dòng)子程序。在單步轉(zhuǎn)動(dòng)子程序中,軟件把電機(jī)控制字節(jié)寫到8255,并通過 8255的A口,經(jīng)過光耦的隔離,輸入步進(jìn)電機(jī)驅(qū)動(dòng)電路,通過控制功率開關(guān)三極管的開斷,進(jìn)而控制步進(jìn)電機(jī)的正反轉(zhuǎn)動(dòng),實(shí)現(xiàn)膨脹閥的開閉,同時(shí)系統(tǒng)更改當(dāng)前的“實(shí)時(shí)脈沖”值,并通過LED顯示出來。這樣,通過全程脈沖數(shù)和“實(shí)時(shí)脈沖”值就可知道當(dāng)前的閥的開度。在電機(jī)轉(zhuǎn)動(dòng)的過程中,通過采樣電路把采集到的驅(qū)動(dòng)相電壓值送入單片機(jī),并通過LED實(shí)時(shí)顯示。
2軟件設(shè)計(jì)
在本程序設(shè)計(jì)中,采用置事件標(biāo)志和分時(shí)控制的辦法對(duì)事件進(jìn)行處理。如在T0中斷子程序中,每隔lms進(jìn)行LED動(dòng)態(tài)掃描,每隔60ms對(duì)鍵盤進(jìn)行掃描。當(dāng)通過EX0外部中斷子程序得到某“控制”鍵鍵值時(shí),在主程序中則置一相應(yīng)的標(biāo)志位。當(dāng)進(jìn)入下一T0中斷時(shí),T0中斷子程序中除了對(duì)LED動(dòng)態(tài)掃描事件進(jìn)行處理外,還對(duì)步進(jìn)電機(jī)驅(qū)動(dòng)脈沖寬度進(jìn)行控制;若此時(shí)的時(shí)間片為60ms,則還對(duì)鍵盤掃描事件進(jìn)行處理。此外,為了提高事件的實(shí)時(shí)響應(yīng)程度,我們把中斷子程序中耗時(shí)長的部分交給主程序來做(主程序把處理的結(jié)果放到相應(yīng)的緩沖區(qū))。當(dāng)中斷子程序處理到相應(yīng)的事件時(shí),只需從緩沖區(qū)把數(shù)據(jù)讀入,并把數(shù)據(jù)放到相應(yīng)的數(shù)據(jù)區(qū)即可。如在本系統(tǒng)中,經(jīng)常要通過鍵盤對(duì)LED顯示的參數(shù)數(shù)值進(jìn)行更改,則系統(tǒng)需要對(duì)參數(shù)所對(duì)應(yīng)的以二進(jìn)制形式存儲(chǔ)的內(nèi)部數(shù)據(jù)進(jìn)行相應(yīng)的更改操作,并把它轉(zhuǎn)換為相應(yīng)的七段碼和顯示在 LED上,此時(shí)可把數(shù)據(jù)轉(zhuǎn)換這一耗時(shí)長的程序交給主程序來做,主程序把得到的相應(yīng)的七段碼放到一個(gè)緩沖區(qū)中,當(dāng)進(jìn)入T0中斷子程序?qū)ED內(nèi)容刷新時(shí),只需把緩沖區(qū)中的數(shù)據(jù)寫入到8255的相應(yīng)口。運(yùn)用這種處理方法,使系統(tǒng)可以實(shí)時(shí)有序地處理各種事件。
整個(gè)軟件采用結(jié)構(gòu)化的程序設(shè)計(jì)方法設(shè)計(jì)。程序分為三大模塊:主程序模塊、EX0中斷服務(wù)子程序模塊、T0中斷服務(wù)子程序模塊。
主程序模塊按照功能又分為三大子程序:初始化子程序、設(shè)置顯示子程序、控制子程序。由于試驗(yàn)機(jī)的操作都由鍵盤中斷來控制,所以,在主程序中通過查詢鍵值來進(jìn)入相應(yīng)的子程序。其流程圖如圖2所示。在初始化子程序中,主要對(duì)AT89C52的系統(tǒng)資源,如定時(shí)器、寄存器等的初始化,把EEPROM存儲(chǔ)的參數(shù)寫入到相應(yīng)的RAM、8255、參數(shù)寄存器等。
在設(shè)置顯示子程序中,主要根據(jù)讀入的鍵值顯示設(shè)置的參數(shù)或進(jìn)行更改并保存到相應(yīng)的EEPROM和RAM。
在控制子程序中,根據(jù)讀入的鍵值和設(shè)置的參數(shù)驅(qū)動(dòng)電機(jī)作相應(yīng)的動(dòng)作,循環(huán)轉(zhuǎn)動(dòng)或復(fù)位。同時(shí)采集相應(yīng)的相電壓,并把電壓值存儲(chǔ)到相應(yīng)的緩存區(qū)。