安徽財經(jīng)大學(xué) 湯 正
基于KL25Z128VLK4單片機(jī)的智能車系統(tǒng)設(shè)計
安徽財經(jīng)大學(xué) 湯 正
本文以全國大學(xué)生“飛思卡爾”杯智能車競賽為背景,基于飛思卡爾32位ARM Cortex-M架構(gòu)微控制器(單片機(jī))MKL25Z128VLK4,使用數(shù)字?jǐn)z像頭OV7620進(jìn)行的智能車系統(tǒng)設(shè)計。簡單介紹了KL25單片機(jī)、OV7620攝像頭、系統(tǒng)整體硬件設(shè)計(包括PCB板的設(shè)計)及軟件處理部分。重點說明了KL25單片機(jī)通過中值濾波和二值化等方法對來自O(shè)V7620攝像頭的圖像信息進(jìn)行處理,對舵機(jī)產(chǎn)生良好控制。我們經(jīng)過反復(fù)實驗和調(diào)試,實現(xiàn)了智能車的自主循跡。
MKL25ZV128LK4;OV7620;圖像處理;舵機(jī);自主循跡
全國大學(xué)生“飛思卡爾”杯智能汽車競賽起源于韓國,是韓國漢陽大學(xué)汽車控制實驗室在飛思卡爾半導(dǎo)體公司資助下舉辦的大學(xué)生課外科技競賽。大賽組委會提供一個標(biāo)準(zhǔn)的汽車模型、直流電機(jī)和可充電式電池,參賽隊伍要制作一個能夠自主識別路徑的智能車,在專門設(shè)計的跑道上自動識別道路行駛,最快跑完全程而沒有沖出跑道并且技術(shù)報告評分較高為獲勝者。其設(shè)計內(nèi)容涵蓋了控制、模式識別、傳感技術(shù)、汽車電子、電氣、計算機(jī)、機(jī)械、能源等多個學(xué)科的知識,對學(xué)生的知識融合和實踐動手能力的培養(yǎng),具有良好的推動作用。
我們以實際參賽為經(jīng)驗,研究并設(shè)計了基于MKL25Z128VLK4單片機(jī)和OV7620攝像頭的智能車硬件平臺和軟件系統(tǒng)。
Kinetis L系列微控制器(MCU/單片機(jī))的低功耗性能優(yōu)越,既具有新型ARM? Cortex?-M0+處理器的卓越能效和易用性,也具備Kinetis 32位MCU/單片機(jī)產(chǎn)品組合的性能、外設(shè)、支持功能和可擴(kuò)展性。該系列具有優(yōu)化的動態(tài)和停止電流,并提供出色的處理性能,而且還提供多種片上閃存密度以及模擬模塊、連接功能和HMI外設(shè)。Kinetis超低功耗L系列單片機(jī)還與基于ARM Cortex-M4的Kinetis K系列硬件和軟件兼容,提供了一個向更高的性能、存儲器和特性集成度升級的可擴(kuò)展途徑。
在實驗和調(diào)試中,我們使用的是龍丘科技的以MKL25Z128VLK4為微控制器的核心板,該核心板為雙排直插式,規(guī)格33*47mm,共引出72針引腳,使用官方內(nèi)核頻率48MHz,3.3V直流供電。其中核心板上PTB0/1/2/3上接了4個藍(lán)色發(fā)光二極管,我們在后續(xù)調(diào)試程序中檢查出錯位置感覺十分方便有用。核心板樣式如圖1所示。
圖1
OV7620是一款CMOS攝像頭器件, 當(dāng)電機(jī)啟動和急剎車時,電壓突變對攝像頭圖像質(zhì)量影響小,分辨率可以達(dá)到640*480,完全滿足智能車的采集需求。OV7620每秒產(chǎn)生30幀圖像,每幀兩場,1秒鐘采集60場圖像,效率高,這比PAL制的攝像頭來說提高了對小車的控制頻率,對小車運行是很有好處的。OV7620主要有PCLK像素時鐘輸出、HREF水平場同步信號、FODD奇偶場同步信號和VSYNC垂直場同步信號。OV7620的輸出數(shù)據(jù)是并行數(shù)據(jù),同步信號可選用HREF和VSYNC分別作為同步行信號和同步幀信號,或者可選用HREF和FODD來同步行信號和同步幀信號。PCLK作為數(shù)據(jù)的鎖存信號,保證控制核心所采集的數(shù)據(jù)時有效的圖像信息。
因為OV7620攝像頭兼容3.3V直流和5V直流供電,而我們使用的KL25單片機(jī)的工作電平是3.3V,無需做電平匹配。但是3V的電壓下使用比較難調(diào),輸出的16進(jìn)制數(shù)據(jù)清一色偏小,所以我們使用的攝像頭是5V電壓輸入的。
根據(jù)KL25ZV128VLK4單片機(jī)的引腳功能復(fù)用功能表,該單片機(jī)只有PTA和PTD口具有中斷功能,并考慮到OV7620 攝像頭信號傳輸?shù)倪B續(xù)性,我們將8位數(shù)字信號輸出口Y0-Y7分別連接到單片機(jī)的PTD0-PTD7,HREF行同步信號接PTA5口,VSYNC場同步信號接PTA12口,PCLK時鐘信號接PTA1口。
圖2
智能車需要轉(zhuǎn)向,我們使用的是型號為Futaba S3010舵機(jī),其引出的紅、黑、白三根不同顏色的線分別接+5V電壓、GND和單片機(jī)的PTA13。因為該型號舵機(jī)工作頻率為50-200Hz左右,超過正常頻率范圍舵機(jī)就會發(fā)出“呲呲”的聲音,而且轉(zhuǎn)向就會變得遲鈍,不能正常工作。我們使單片機(jī)根據(jù)不同路況通過PTA13輸出不同占空比的頻率為50Hz的PWM波使舵機(jī)打向。
OV7620攝像頭、MKL25Z128VLK4單片機(jī)、舵機(jī)、驅(qū)動板上的74LS244芯片均是+5V電壓供電,但是7.2V直流電池直接給主板供電,所以必須需要使用降壓芯片,我們使用的是AM1117-5.0芯片。AMS1117是一個正向低壓降穩(wěn)壓器和低漏失電壓調(diào)整器,它的穩(wěn)壓調(diào)整管是由一個PNP驅(qū)動的NPN管組成,在1A電流下壓降為1.2V。AMS1117有固定和可調(diào)兩個版本,輸出電壓可以是1.2V,1.5V,1.8V,2.5V,2.85V,3.0V,3.3V,和5.0V。它內(nèi)部集成的過熱切斷電路提供了過載和過熱保護(hù),以防環(huán)境溫度造成過高的結(jié)溫,是電池供電和便攜式計算機(jī)的最佳選擇。
對于驅(qū)動板,由于智能車使用的是雙電機(jī)驅(qū)動,我們使用的是大功率H半橋集成芯片BTN7971B構(gòu)成的4路PWM控制的電機(jī)驅(qū)動模塊。由于BTS7971B為半橋驅(qū)動芯片,而系統(tǒng)需要在必要時產(chǎn)生制動效果,因此需要使用兩片或兩片以上的BTS7960B來構(gòu)成全橋驅(qū)動,對電機(jī)進(jìn)行雙向控制,在必要時,使電機(jī)反向轉(zhuǎn)動,產(chǎn)生制動。驅(qū)動板上三個2P接線柱,其中兩個是分別控制雙電機(jī)的,一個由主板上引來7.2V為驅(qū)動板供電。驅(qū)動板上還接入5口插針,其中一個是從主板上引來的+5V電壓,使能74LS244芯片,剩余4口插針是留作接入4路PWM從而控制雙電機(jī)的。
為了使智能車行駛起來更加穩(wěn)定,我們將固定OV7620攝像頭的碳素桿的底座用熱熔膠固定在占整車重量約50%的電池正后方,使整車重心穩(wěn)定在小車中央。同時為了使攝像頭在智能車行駛過程中不隨桿晃動影響圖像采集,我們在此粗碳素桿(外徑8mm,內(nèi)徑6mm)的中點處斜拉一根更細(xì)的碳素桿(外徑3mm,內(nèi)徑2mm)到舵機(jī)正上方,兩頭均用熱熔膠固定。
圖2為我們所繪制的主板、驅(qū)動板的封裝及原理圖。
如果說硬件部分是智能車的“軀體”,那么小車能夠自主循跡跑起來更是需要“大腦”,即軟件部分的支持和控制,使舵機(jī)能夠根據(jù)攝像頭采集的圖像準(zhǔn)確打向,進(jìn)而使小車能夠快速而平穩(wěn)沿跑道行駛。
OV7620攝像頭輸出幀頻率為60Hz,每幀圖像分辨率為640×480,此數(shù)據(jù)量遠(yuǎn)遠(yuǎn)超過了路徑識別的需求,給單片機(jī)造成了沉重的數(shù)據(jù)采集和處理負(fù)擔(dān),因而需要在采集圖像數(shù)據(jù)過程中要對圖像數(shù)據(jù)進(jìn)行取舍。同時OV7620采集到圖像是由一個一個不同的像素點構(gòu)成的灰色圖像,對比度不明顯對于跑道邊緣的判斷不準(zhǔn)確。因此我們使用OV7620采集出60行60列的圖像,捕獲的跑道信息完整,噪點較少,完全足夠單片機(jī)用來對路徑進(jìn)行判斷和處理。并且我們采取了對采集的圖像根據(jù)大律法計算出一個動態(tài)閾值,之后再根據(jù)此閾值對圖像進(jìn)行中值濾波,得到一個二值化的圖像,即整幅圖像像素大小大于此閾值的像素點全為“1”,小于此閾值的像素點全為“0”,所以白色跑道全為“1”,跑道之外的藍(lán)底全為“0”。此方法很好解決了對跑道邊緣的判斷不準(zhǔn)問題,使單片機(jī)處理數(shù)據(jù)起來更加快速準(zhǔn)確。圖3為采集到的實際圖像和第一個彎道二值化后的圖像,以及圖像處理程序的中值濾波函數(shù)。
圖3
智能車能夠快速準(zhǔn)確自主循跡就是依賴單片機(jī)根據(jù)二值化的圖像控制舵機(jī)打向。因為我們使用OV7620攝像頭采集到的圖像和二值化后的圖像都是60行60列的,所以我們以30作為固定中值,再根據(jù)二值化的圖像計算得到跑道的實際中值,二者之差即為跑道的水平偏移量,即判斷為直道或彎道,若差值為0,則為直道;若差值大于0為右彎道;若差值小于0為左彎道,之后再根據(jù)差值的正負(fù)及大小給舵機(jī)不同占空比的PWM波,控制舵機(jī)不同的打向角度,達(dá)到自主轉(zhuǎn)向的目的(見圖4)。
圖4
經(jīng)過以上理論分析及設(shè)計,最終完成了對智能車硬件和軟件的構(gòu)建和結(jié)合,設(shè)計成果如右圖所示。在經(jīng)過多次在白色藍(lán)底跑道上的實際測試,該以KL25Z128VLK4為核心控制器的智能車很好地完成了對跑道信息的采集、處理及判斷,順利完成了直道、連續(xù)大“S”彎道、連續(xù)小“S”彎道、“十”字彎等不同路況的測試,均能快速穩(wěn)定通過,且不沖出規(guī)定跑道范圍,達(dá)到了自主循跡的目的。
[1]卓晴,黃開勝,邵貝貝.學(xué)做智能車—挑戰(zhàn)飛思卡爾杯[M].北京:北京航空航天大學(xué)出版社,2007:1-18.
[2]吳斌華,黃衛(wèi)華,程磊,等.基于路徑識別的智能車系統(tǒng)設(shè)計[J].電子技術(shù)應(yīng)用,2007(3):80-82.
[3]向婷,季奧穎,陳進(jìn)軍.數(shù)字式攝像頭OV7620在智能車上的應(yīng)用[J].傳感器世界,2013(9):41-43.
[4]萬海波,韓鵬,王海莉.第八屆飛思卡爾杯全國智能汽車競賽技術(shù)報告[R].安徽:安徽工業(yè)大學(xué),2013:16-34.
[5]葛家斌.基于OV7620圖像傳感器的智能循跡系統(tǒng)的設(shè)計[J].電腦知識與技術(shù),2011(9):8286-8296.