安徽財經大學 湯 正
基于KL25Z128VLK4單片機的智能車系統設計
安徽財經大學 湯 正
本文以全國大學生“飛思卡爾”杯智能車競賽為背景,基于飛思卡爾32位ARM Cortex-M架構微控制器(單片機)MKL25Z128VLK4,使用數字攝像頭OV7620進行的智能車系統設計。簡單介紹了KL25單片機、OV7620攝像頭、系統整體硬件設計(包括PCB板的設計)及軟件處理部分。重點說明了KL25單片機通過中值濾波和二值化等方法對來自OV7620攝像頭的圖像信息進行處理,對舵機產生良好控制。我們經過反復實驗和調試,實現了智能車的自主循跡。
MKL25ZV128LK4;OV7620;圖像處理;舵機;自主循跡
全國大學生“飛思卡爾”杯智能汽車競賽起源于韓國,是韓國漢陽大學汽車控制實驗室在飛思卡爾半導體公司資助下舉辦的大學生課外科技競賽。大賽組委會提供一個標準的汽車模型、直流電機和可充電式電池,參賽隊伍要制作一個能夠自主識別路徑的智能車,在專門設計的跑道上自動識別道路行駛,最快跑完全程而沒有沖出跑道并且技術報告評分較高為獲勝者。其設計內容涵蓋了控制、模式識別、傳感技術、汽車電子、電氣、計算機、機械、能源等多個學科的知識,對學生的知識融合和實踐動手能力的培養,具有良好的推動作用。
我們以實際參賽為經驗,研究并設計了基于MKL25Z128VLK4單片機和OV7620攝像頭的智能車硬件平臺和軟件系統。
Kinetis L系列微控制器(MCU/單片機)的低功耗性能優越,既具有新型ARM? Cortex?-M0+處理器的卓越能效和易用性,也具備Kinetis 32位MCU/單片機產品組合的性能、外設、支持功能和可擴展性。該系列具有優化的動態和停止電流,并提供出色的處理性能,而且還提供多種片上閃存密度以及模擬模塊、連接功能和HMI外設。Kinetis超低功耗L系列單片機還與基于ARM Cortex-M4的Kinetis K系列硬件和軟件兼容,提供了一個向更高的性能、存儲器和特性集成度升級的可擴展途徑。
在實驗和調試中,我們使用的是龍丘科技的以MKL25Z128VLK4為微控制器的核心板,該核心板為雙排直插式,規格33*47mm,共引出72針引腳,使用官方內核頻率48MHz,3.3V直流供電。其中核心板上PTB0/1/2/3上接了4個藍色發光二極管,我們在后續調試程序中檢查出錯位置感覺十分方便有用。核心板樣式如圖1所示。

圖1
OV7620是一款CMOS攝像頭器件, 當電機啟動和急剎車時,電壓突變對攝像頭圖像質量影響小,分辨率可以達到640*480,完全滿足智能車的采集需求。OV7620每秒產生30幀圖像,每幀兩場,1秒鐘采集60場圖像,效率高,這比PAL制的攝像頭來說提高了對小車的控制頻率,對小車運行是很有好處的。OV7620主要有PCLK像素時鐘輸出、HREF水平場同步信號、FODD奇偶場同步信號和VSYNC垂直場同步信號。OV7620的輸出數據是并行數據,同步信號可選用HREF和VSYNC分別作為同步行信號和同步幀信號,或者可選用HREF和FODD來同步行信號和同步幀信號。PCLK作為數據的鎖存信號,保證控制核心所采集的數據時有效的圖像信息。
因為OV7620攝像頭兼容3.3V直流和5V直流供電,而我們使用的KL25單片機的工作電平是3.3V,無需做電平匹配。但是3V的電壓下使用比較難調,輸出的16進制數據清一色偏小,所以我們使用的攝像頭是5V電壓輸入的。
根據KL25ZV128VLK4單片機的引腳功能復用功能表,該單片機只有PTA和PTD口具有中斷功能,并考慮到OV7620 攝像頭信號傳輸的連續性,我們將8位數字信號輸出口Y0-Y7分別連接到單片機的PTD0-PTD7,HREF行同步信號接PTA5口,VSYNC場同步信號接PTA12口,PCLK時鐘信號接PTA1口。

圖2
智能車需要轉向,我們使用的是型號為Futaba S3010舵機,其引出的紅、黑、白三根不同顏色的線分別接+5V電壓、GND和單片機的PTA13。因為該型號舵機工作頻率為50-200Hz左右,超過正常頻率范圍舵機就會發出“呲呲”的聲音,而且轉向就會變得遲鈍,不能正常工作。我們使單片機根據不同路況通過PTA13輸出不同占空比的頻率為50Hz的PWM波使舵機打向。
OV7620攝像頭、MKL25Z128VLK4單片機、舵機、驅動板上的74LS244芯片均是+5V電壓供電,但是7.2V直流電池直接給主板供電,所以必須需要使用降壓芯片,我們使用的是AM1117-5.0芯片。AMS1117是一個正向低壓降穩壓器和低漏失電壓調整器,它的穩壓調整管是由一個PNP驅動的NPN管組成,在1A電流下壓降為1.2V。AMS1117有固定和可調兩個版本,輸出電壓可以是1.2V,1.5V,1.8V,2.5V,2.85V,3.0V,3.3V,和5.0V。它內部集成的過熱切斷電路提供了過載和過熱保護,以防環境溫度造成過高的結溫,是電池供電和便攜式計算機的最佳選擇。
對于驅動板,由于智能車使用的是雙電機驅動,我們使用的是大功率H半橋集成芯片BTN7971B構成的4路PWM控制的電機驅動模塊。由于BTS7971B為半橋驅動芯片,而系統需要在必要時產生制動效果,因此需要使用兩片或兩片以上的BTS7960B來構成全橋驅動,對電機進行雙向控制,在必要時,使電機反向轉動,產生制動。驅動板上三個2P接線柱,其中兩個是分別控制雙電機的,一個由主板上引來7.2V為驅動板供電。驅動板上還接入5口插針,其中一個是從主板上引來的+5V電壓,使能74LS244芯片,剩余4口插針是留作接入4路PWM從而控制雙電機的。
為了使智能車行駛起來更加穩定,我們將固定OV7620攝像頭的碳素桿的底座用熱熔膠固定在占整車重量約50%的電池正后方,使整車重心穩定在小車中央。同時為了使攝像頭在智能車行駛過程中不隨桿晃動影響圖像采集,我們在此粗碳素桿(外徑8mm,內徑6mm)的中點處斜拉一根更細的碳素桿(外徑3mm,內徑2mm)到舵機正上方,兩頭均用熱熔膠固定。
圖2為我們所繪制的主板、驅動板的封裝及原理圖。
如果說硬件部分是智能車的“軀體”,那么小車能夠自主循跡跑起來更是需要“大腦”,即軟件部分的支持和控制,使舵機能夠根據攝像頭采集的圖像準確打向,進而使小車能夠快速而平穩沿跑道行駛。
OV7620攝像頭輸出幀頻率為60Hz,每幀圖像分辨率為640×480,此數據量遠遠超過了路徑識別的需求,給單片機造成了沉重的數據采集和處理負擔,因而需要在采集圖像數據過程中要對圖像數據進行取舍。同時OV7620采集到圖像是由一個一個不同的像素點構成的灰色圖像,對比度不明顯對于跑道邊緣的判斷不準確。因此我們使用OV7620采集出60行60列的圖像,捕獲的跑道信息完整,噪點較少,完全足夠單片機用來對路徑進行判斷和處理。并且我們采取了對采集的圖像根據大律法計算出一個動態閾值,之后再根據此閾值對圖像進行中值濾波,得到一個二值化的圖像,即整幅圖像像素大小大于此閾值的像素點全為“1”,小于此閾值的像素點全為“0”,所以白色跑道全為“1”,跑道之外的藍底全為“0”。此方法很好解決了對跑道邊緣的判斷不準問題,使單片機處理數據起來更加快速準確。圖3為采集到的實際圖像和第一個彎道二值化后的圖像,以及圖像處理程序的中值濾波函數。

圖3
智能車能夠快速準確自主循跡就是依賴單片機根據二值化的圖像控制舵機打向。因為我們使用OV7620攝像頭采集到的圖像和二值化后的圖像都是60行60列的,所以我們以30作為固定中值,再根據二值化的圖像計算得到跑道的實際中值,二者之差即為跑道的水平偏移量,即判斷為直道或彎道,若差值為0,則為直道;若差值大于0為右彎道;若差值小于0為左彎道,之后再根據差值的正負及大小給舵機不同占空比的PWM波,控制舵機不同的打向角度,達到自主轉向的目的(見圖4)。

圖4
經過以上理論分析及設計,最終完成了對智能車硬件和軟件的構建和結合,設計成果如右圖所示。在經過多次在白色藍底跑道上的實際測試,該以KL25Z128VLK4為核心控制器的智能車很好地完成了對跑道信息的采集、處理及判斷,順利完成了直道、連續大“S”彎道、連續小“S”彎道、“十”字彎等不同路況的測試,均能快速穩定通過,且不沖出規定跑道范圍,達到了自主循跡的目的。
[1]卓晴,黃開勝,邵貝貝.學做智能車—挑戰飛思卡爾杯[M].北京:北京航空航天大學出版社,2007:1-18.
[2]吳斌華,黃衛華,程磊,等.基于路徑識別的智能車系統設計[J].電子技術應用,2007(3):80-82.
[3]向婷,季奧穎,陳進軍.數字式攝像頭OV7620在智能車上的應用[J].傳感器世界,2013(9):41-43.
[4]萬海波,韓鵬,王海莉.第八屆飛思卡爾杯全國智能汽車競賽技術報告[R].安徽:安徽工業大學,2013:16-34.
[5]葛家斌.基于OV7620圖像傳感器的智能循跡系統的設計[J].電腦知識與技術,2011(9):8286-8296.