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