大燈儀是用來(lái)檢測(cè)前照燈的專(zhuān)用檢測(cè)設(shè)備,它主要由自動(dòng)定位系統(tǒng)和檢測(cè)系統(tǒng)兩大部分組成。在接收檢測(cè)指令后,可自動(dòng)進(jìn)入被檢前照燈光照區(qū)跟蹤光軸,然后自動(dòng)檢測(cè)被檢前照燈發(fā)光強(qiáng)度、高度,以及遠(yuǎn)、近光的照射方向。并可對(duì)四燈制或兩燈制的前照燈進(jìn)行自動(dòng)測(cè)量。檢測(cè)完成后,自動(dòng)返回初始位置,檢測(cè)結(jié)果自動(dòng)送出。
本系統(tǒng)的設(shè)計(jì)思路為,通過(guò)光線感應(yīng)器件將大燈儀在移動(dòng)過(guò)程中處于不同位置時(shí)感應(yīng)到的光強(qiáng)信號(hào)經(jīng)過(guò)放大處理,通過(guò)適當(dāng)?shù)目刂扑惴ê蟮玫较鄳?yīng)的控制信號(hào),再將此控制信號(hào)輸出到電機(jī),通過(guò)電機(jī)將大燈儀定位于恰當(dāng)?shù)臋z測(cè)位置,從而完成大燈儀的自動(dòng)定位。該大燈儀硬件結(jié)構(gòu)框圖如圖1所示。
圖1 大燈儀硬件結(jié)構(gòu)框圖
圖2 環(huán)境光補(bǔ)償電路
圖3 光電二極管放大電路
硬件設(shè)計(jì)
整個(gè)自動(dòng)定位系統(tǒng)硬件部分主要包括立柱感光部分、PSD感光部分、直流無(wú)刷電機(jī)驅(qū)動(dòng)部分、傳感器部分、通訊部分、LED顯示部分和邏輯電路部分,各部分的協(xié)調(diào)工作和數(shù)據(jù)傳輸由主微控制器C8051F020來(lái)完成。主微控制器是系統(tǒng)的核心,它一方面負(fù)責(zé)完成大燈儀移動(dòng)過(guò)程中的數(shù)據(jù)采集和處理,另一方面還要將處理結(jié)果傳遞給相應(yīng)的控制電機(jī)以便進(jìn)行相應(yīng)的位置調(diào)整。因此,對(duì)處理器的運(yùn)行速度和接口功能都有較高的要求。
立柱感光部分
大燈儀的立柱沿垂直于地面的方向上均勻分布有8個(gè)光電二極管。大燈儀啟動(dòng)進(jìn)入燈照區(qū)后,光電二極管將感應(yīng)到的光照轉(zhuǎn)換為電信號(hào),然后將這8路電信號(hào)經(jīng)過(guò)放大處理后送入C8051F020自帶的ADC進(jìn)行采樣。C8051F020片內(nèi)集成了兩個(gè)多通道ADC子系統(tǒng)。由于此部分對(duì)數(shù)據(jù)精度要求不高,故選用8位ADC1系統(tǒng)將8路電信號(hào)采用單端輸入方式進(jìn)行轉(zhuǎn)換。
圖2是環(huán)境光電壓補(bǔ)償電路,該電路利用置于環(huán)境光下的一個(gè)光電二極管根據(jù)外界環(huán)境光的強(qiáng)弱產(chǎn)生不同的參考電壓Verf,并做為立柱上光電二極管放大電路的反相電壓基準(zhǔn)補(bǔ)償。圖3是一對(duì)光電二極管的放大電路圖,實(shí)際放大倍數(shù)根據(jù)所使用的光電二極管性能調(diào)整R3(R7)和R2(R6)的電阻值即可。
PSD感光部分
PSD傳感器用來(lái)完成前照燈中心的精確定位。該傳感器是一種基于橫向光電效應(yīng)的光電位置敏感元件,當(dāng)入射光點(diǎn)落在器件感光表面的不同位置時(shí),PSD將對(duì)應(yīng)輸出不同的電信號(hào)。通過(guò)對(duì)輸出信號(hào)的處理,即可確定入射光點(diǎn)在PSD器件上的位置。入射光點(diǎn)的強(qiáng)度和尺寸大小與PSD的位置輸出信號(hào)無(wú)關(guān)。同時(shí)由于PSD是非分割型元件,對(duì)光斑的形狀無(wú)嚴(yán)格要求,所以可對(duì)光斑的位置進(jìn)行連續(xù)測(cè)量,從而獲得連續(xù)的坐標(biāo)信號(hào)。
前照燈燈光通過(guò)大燈儀燈頭的菲涅耳透鏡后投射到燈箱后部的聚光板上,在聚光板的適當(dāng)位置有一細(xì)小孔,光照透過(guò)小孔后聚焦為光斑,此光斑照在PSD表面輸出強(qiáng)弱不同的電信號(hào)。用運(yùn)算放大器TLC2272將此4路電信號(hào)兩級(jí)同相放大后送入12位的ADC0進(jìn)行轉(zhuǎn)換。需要注意的是,放大后的電壓值不要超過(guò)C8051F020的參考電壓,以免出現(xiàn)電壓飽和的情況。
直流無(wú)刷電機(jī)驅(qū)動(dòng)部分
控制大燈儀左右及上下的移動(dòng)是通過(guò)驅(qū)動(dòng)兩個(gè)直流無(wú)刷電機(jī)(垂直和水平各一個(gè))來(lái)完成的。系統(tǒng)對(duì)反饋信號(hào)電壓進(jìn)行周期性采樣,采樣值經(jīng)過(guò)數(shù)字信號(hào)處理,作為控制器的參數(shù),最后由合適的控制算法得出控制量,并經(jīng)DAC轉(zhuǎn)換為直流無(wú)刷電機(jī)的控制電壓來(lái)調(diào)節(jié)電機(jī)的轉(zhuǎn)速。
傳感器部分
大燈儀采用了增量式光電編碼器作為電機(jī)旋轉(zhuǎn)方向和速度的反饋元件。它是一種通過(guò)光電轉(zhuǎn)換將輸出軸上的機(jī)械幾何位移量轉(zhuǎn)換成脈沖或數(shù)字量的傳感器。依靠部件旋轉(zhuǎn),用光電編碼器產(chǎn)生電脈沖信號(hào),并送至單片機(jī)進(jìn)行處理。增量式光電編碼器有A、B、Z三相脈沖信號(hào)輸出,當(dāng)正轉(zhuǎn)時(shí),A相脈沖超前B相脈沖90°(或1/4周期);反轉(zhuǎn)時(shí),B相脈沖超前A相脈沖90°。本設(shè)計(jì)中利用A相脈沖觸發(fā)外部中斷,然后根據(jù)B相脈沖電平的高低來(lái)判斷電機(jī)的旋轉(zhuǎn)方向,同時(shí)記錄編碼器的脈沖數(shù)。
通訊部分
C8051F020有兩個(gè)增強(qiáng)型UART串口,其中UART0與PC機(jī)的RS-232串口相連,用來(lái)接收檢測(cè)命令和發(fā)送檢測(cè)結(jié)果 ;UART1與大燈儀檢測(cè)裝置的通訊串口相連,根據(jù)接收到的PC檢測(cè)命令啟動(dòng)相應(yīng)的檢測(cè)項(xiàng)目,然后將結(jié)果返回給主微控制器。
I2C總線LED顯示部分
SAA1064是Philips公司的4位LED驅(qū)動(dòng)器,為雙極型電路,具有I2C接口,專(zhuān)為驅(qū)動(dòng)4位帶有小數(shù)點(diǎn)的七段LED顯示器而設(shè)計(jì)。該器件內(nèi)部帶有I2C總線從發(fā)送接收器,可以通過(guò)地址引腳ADR的輸入電平編程為4個(gè)不同的從器件地址。在本系統(tǒng)中共使用了兩個(gè)SAA1064驅(qū)動(dòng)器。
邏輯電路部分
邏輯電路在單片機(jī)系統(tǒng)的設(shè)計(jì)中不可或缺。一般的邏輯電路都采用了通用邏輯IC(如74系列)來(lái)搭建電路,功能越復(fù)雜的系統(tǒng)其相應(yīng)的邏輯電路也越復(fù)雜,所需要的邏輯IC也越多。但是如果用可編程邏輯器件來(lái)實(shí)現(xiàn)的話,只要將邏輯表達(dá)式按規(guī)定的語(yǔ)法進(jìn)行描述,經(jīng)過(guò)仿真、編譯等過(guò)程,最后下載到可編程邏輯器件中,就可以完成所設(shè)計(jì)的邏輯功能,從而使得邏輯設(shè)計(jì)的自由度大大提高。
在本系統(tǒng)中使用了Xilinx公司的CPLD可編程邏輯器件XC9572,該器件內(nèi)含36個(gè)宏單元,并具有1600個(gè)邏輯門(mén)。開(kāi)發(fā)環(huán)境使用的是Xilinx公司的軟件工具包FOUNDATION ISE7.1i。設(shè)計(jì)過(guò)程如下:首先從抽象的角度對(duì)電路的功能、接口和總體結(jié)構(gòu)進(jìn)行描述。接下來(lái)使用行為級(jí)描述來(lái)分析電路的功能、性能、標(biāo)準(zhǔn)兼容性等問(wèn)題。行為級(jí)描述使用了VHDL語(yǔ)言來(lái)編寫(xiě),分別實(shí)現(xiàn)了電機(jī)控制模塊、編碼器計(jì)數(shù)控制模塊和行程限位開(kāi)關(guān)控制模塊的邏輯電路設(shè)計(jì)。最后通過(guò)CPLD譯碼,將命令控制I/O映射到相應(yīng)的獨(dú)立地址。以電機(jī)控制模塊為例,兩個(gè)電機(jī)的使能、剎車(chē)、轉(zhuǎn)向共6個(gè)控制量只需對(duì)其映射地址的對(duì)應(yīng)位操作即可。
軟件設(shè)計(jì)
本系統(tǒng)的軟件設(shè)計(jì)中采用了uC/OS-II操作系統(tǒng)。 并選用了最新的KEIL7.50集成開(kāi)發(fā)環(huán)境來(lái)開(kāi)發(fā)程序。
通過(guò)在系統(tǒng)中嵌入uC/OS-II,可以把整個(gè)程序分成許多任務(wù),每個(gè)任務(wù)相對(duì)獨(dú)立,即使一個(gè)任務(wù)發(fā)生問(wèn)題,也不會(huì)影響其他任務(wù)的運(yùn)行。這樣既提高了系統(tǒng)的可靠性,同時(shí)也使調(diào)試程序變得容易。
任務(wù)的創(chuàng)建
根據(jù)大燈儀定位過(guò)程中不同階段所要實(shí)現(xiàn)的目標(biāo),軟件設(shè)計(jì)中劃分了主任務(wù)、自動(dòng)測(cè)試任務(wù)、位置控制任務(wù)、立柱找光任務(wù)、PSD找光任務(wù)、PC通訊任務(wù)、檢測(cè)通訊任務(wù)、電機(jī)制動(dòng)任務(wù)和I2C顯示任務(wù)。
每個(gè)任務(wù)都有自己的名稱(chēng)、內(nèi)存空間和優(yōu)先級(jí)。優(yōu)先級(jí)的設(shè)置根據(jù)不同的系統(tǒng)有不同的設(shè)定,本設(shè)計(jì)中,電機(jī)制動(dòng)任務(wù)在系統(tǒng)中起保護(hù)設(shè)備的作用,如果發(fā)生控制失效的情況下不能及時(shí)制動(dòng)電機(jī)可能會(huì)對(duì)大燈儀造成損壞,所以其優(yōu)先級(jí)設(shè)為最高; PSD找光任務(wù)和立柱找光任務(wù)運(yùn)行較為頻繁,任務(wù)執(zhí)行的好壞直接關(guān)系到檢測(cè)結(jié)果的準(zhǔn)確度,優(yōu)先級(jí)分別設(shè)為第二級(jí)和第三級(jí);其余的任務(wù)均是常規(guī)運(yùn)行狀態(tài),只是實(shí)現(xiàn)人機(jī)交互、顯示狀態(tài)和參數(shù),對(duì)檢測(cè)性能沒(méi)有直接影響,優(yōu)先級(jí)的設(shè)定沒(méi)有嚴(yán)格的高低之分,可以隨意設(shè)定。
系統(tǒng)運(yùn)行過(guò)程分析
系統(tǒng)運(yùn)行的首要環(huán)節(jié)為初始化, 包括兩部分: 第一部分是系統(tǒng)及硬件部分的初始化,創(chuàng)建主任務(wù);第二部分是創(chuàng)建信號(hào)量及建立功能任務(wù),并為之分配優(yōu)先權(quán)。
系統(tǒng)初始化后,首先從主任務(wù)開(kāi)始運(yùn)行,此時(shí)各功能任務(wù)均處于就緒狀態(tài)。上電后檢測(cè)人員在PC機(jī)上發(fā)送檢測(cè)指令,此時(shí)最先響應(yīng)的功能任務(wù)是PC通訊任務(wù)。系統(tǒng)利用中斷接收PC機(jī)下達(dá)的指令,并根據(jù)指令內(nèi)容發(fā)送開(kāi)始自動(dòng)檢測(cè)的標(biāo)記量。主任務(wù)接收到自動(dòng)檢測(cè)標(biāo)記后喚醒自動(dòng)檢測(cè)任務(wù),同時(shí)發(fā)送顯示信號(hào)量喚醒I2C顯示任務(wù)。進(jìn)入自動(dòng)檢測(cè)任務(wù)后,系統(tǒng)根據(jù)檢測(cè)的進(jìn)程在不同的檢測(cè)階段調(diào)用不同的功能任務(wù)。檢測(cè)項(xiàng)目完成后,大燈儀自動(dòng)回到起始位置,等待下一次檢測(cè)命令。
結(jié)語(yǔ)
本文中的大燈儀自動(dòng)定位系統(tǒng)充分利用了C8051F020單片機(jī)優(yōu)越性能,使控制系統(tǒng)達(dá)到了很好的集成,降低了設(shè)計(jì)成本。同時(shí)實(shí)踐表明, 在系統(tǒng)復(fù)雜、對(duì)實(shí)時(shí)性和精度要求比較嚴(yán)格,并且需要并行處理任務(wù)較多的運(yùn)動(dòng)控制系統(tǒng)中使用?C/OS-II實(shí)時(shí)操作系統(tǒng),會(huì)加快嵌入式控制系統(tǒng)的開(kāi)發(fā)速度,降低軟件編寫(xiě)的復(fù)雜度,提高產(chǎn)品的開(kāi)發(fā)效率,并使維護(hù)和功能擴(kuò)展都非常方便。經(jīng)在山東某汽車(chē)檢測(cè)站為期半個(gè)月的系統(tǒng)實(shí)際運(yùn)行證明,該系統(tǒng)燈光定位準(zhǔn)確,響應(yīng)速度快,運(yùn)行良好。