哈爾濱工業(yè)大學(xué)(威海)信息與電氣工程學(xué)院 董書航 王 超 劉振國
本系統(tǒng)的硬件電路主要由單片機(jī)控制模塊、攝像頭采集模塊、運(yùn)動(dòng)系統(tǒng)部分、電源模塊組成,下面分別論證這幾個(gè)模塊的選擇。
方案一:STC公司出產(chǎn)的STC15F2K60S2單片機(jī)。STC15F2K60S2單片機(jī)是宏晶科技生產(chǎn)的單時(shí)鐘的單片機(jī),是高速新一代8051單片機(jī),內(nèi)部集成專用復(fù)位電路,2路PWM,針對電機(jī)控制,強(qiáng)干擾場合,并且價(jià)格低廉。但是此芯片頻率較低,性能很弱,數(shù)據(jù)量大時(shí)速度難以滿足要求,無法承擔(dān)復(fù)雜的運(yùn)算及顯示。而且其功能單一,片內(nèi)資源匱乏,且需要仿真器來實(shí)現(xiàn)軟硬件調(diào)試,較為煩瑣。
方案二:意法stm32f103zet6。此芯片為ARM 32位的Cortex-M3,具有最高72MHz工作頻率,在存儲(chǔ)器的0等待周期訪問時(shí)可達(dá)1.25DMips/MHZ并可進(jìn)行單周期乘法和硬件除法,性能優(yōu)越,編程簡單,io口及片內(nèi)硬件資源豐富,可輕松進(jìn)行大量的運(yùn)算。但缺點(diǎn)是價(jià)格較高,而且對于攝像頭等高速器件處理能力較差,難以應(yīng)付大量的復(fù)雜運(yùn)算。
方案三:kinetis MK60單片機(jī),此芯片為ARM32位的cortex-M4內(nèi)核,具有最高180MHZ的工作頻率,具有硬件浮點(diǎn)單元,可進(jìn)行快速單精度浮點(diǎn)運(yùn)算。性能強(qiáng)大,編程簡單。配合CMSIS的DSP算法庫可輕松實(shí)現(xiàn)如FFT等功能,可以輕易應(yīng)對大量復(fù)雜計(jì)算,并且不需要專用的仿真裝置,可以非常方便的進(jìn)行仿真模擬。片內(nèi)資源豐富,io口充足。缺點(diǎn)是價(jià)格較高。
綜合以上三種方案,選擇方案三(圖1)。
方案一:采用兩個(gè)CCD線性光學(xué)傳感器。CCD光學(xué)傳感器可以掃描一列的光學(xué)信號,采用兩個(gè)CCD傳感器即可交叉獲取小球的X軸及Y軸坐標(biāo),從而完成小球的定位。但是難以完成兩個(gè)傳感器的安放與固定,并且存在響應(yīng)檢測速度慢,平板的邊緣檢測精度不高等問題。
圖1 單片機(jī)系統(tǒng)電路
方案二:普通黑白攝像頭。黑白攝像頭經(jīng)過硬件二值化后可以輕易分辨整個(gè)板子的全貌,區(qū)分板子與小球并且完成定位,功能齊全,速度較快,可以實(shí)現(xiàn)題目的各項(xiàng)要求。但是由于只能識別單色,故采集信息單一,擴(kuò)展性差。
方案三:彩色攝像頭。彩色攝像頭采集的信息非常豐富,可以識別板面上的顏色信息,通過顏色輔助小球定位,可以較好的達(dá)到抗畸變和識別精度的問題,可以實(shí)現(xiàn)各種各樣的功能,缺點(diǎn)在于采集的信息量大,對于算法和單片機(jī)的處理速度均有較高的要求,而當(dāng)前采用的單片機(jī)仍然難以完成采集和處理。
綜合以上三種方案,選擇方案二。
方案一:采用直線電機(jī)或者步進(jìn)電機(jī)配合絲桿。此方案的機(jī)械結(jié)構(gòu)和控制方式較為簡單,通過直線電機(jī)抬升和降低板子的高度,控制較為方便,運(yùn)算工程量較少。缺點(diǎn)在于此結(jié)構(gòu)的運(yùn)動(dòng)速度較慢,存在無法及時(shí)調(diào)節(jié)板子的傾斜角度的問題。
方案二:采用舵機(jī)配合萬向桿。此方案機(jī)械結(jié)構(gòu)和控制方式略微復(fù)雜,用萬向桿將舵機(jī)的轉(zhuǎn)動(dòng)轉(zhuǎn)化為板子高度的變化,運(yùn)動(dòng)速度較快,響應(yīng)及時(shí),調(diào)節(jié)范圍和精度均能滿足要求,缺點(diǎn)是控制困難,而且舵機(jī)角度變化和板子高度變化并非線性關(guān)系,需要進(jìn)行計(jì)算和換算。
綜合以上兩種方案,選擇方案二。
由攝像頭采集小球的當(dāng)前坐標(biāo),設(shè)定目標(biāo)地點(diǎn)的坐標(biāo),確定相對坐標(biāo),和當(dāng)前小球坐標(biāo)做差,得到水平方向與垂直方向的兩個(gè)誤差,然后用誤差帶入PID函數(shù),分別計(jì)算控制兩個(gè)軸的兩個(gè)舵機(jī)的參數(shù),然后換算得到相對于舵機(jī)中值的增量PWM值,控制舵機(jī)調(diào)節(jié)平板的運(yùn)動(dòng)狀況。
方案一:直接在白板上用黑色顏料標(biāo)定多個(gè)目標(biāo)點(diǎn)的位置,這樣做的優(yōu)點(diǎn)是,即使攝像頭發(fā)生偏移或是采集數(shù)據(jù)出現(xiàn)了誤差,仍然能準(zhǔn)確的確定目標(biāo)點(diǎn)位置,缺點(diǎn)在于采用黑白攝像頭時(shí),難以區(qū)分目標(biāo)點(diǎn)與小球,造成誤判。
方案二:用軟件直接存儲(chǔ)目標(biāo)點(diǎn)的坐標(biāo),優(yōu)點(diǎn)是攝像頭需要采集的數(shù)據(jù)僅有小球的位置,清晰明了,程序容易處理和識別。缺點(diǎn)在于抗干擾性較差,小球的位置容易與目標(biāo)點(diǎn)出現(xiàn)一定的偏差。
綜合考慮軟硬件的情況,方案二較為容易實(shí)現(xiàn),攝像頭帶來的誤差可以采用濾波以及各種圖像糾正算法解決,經(jīng)過測試效果良好。
圖2 系統(tǒng)總體框圖
圖3 電源部分系統(tǒng)電路
電源由電池、穩(wěn)壓部分組成。為整個(gè)系統(tǒng)和單片機(jī)提供穩(wěn)定5V與3.3V電壓,確保電路的正常穩(wěn)定工作。這部分電路比較簡單,都采用穩(wěn)壓管與穩(wěn)壓芯片實(shí)現(xiàn),故不作詳述。
圖4 其他外設(shè)電路
根據(jù)設(shè)計(jì)要求,程序主要實(shí)現(xiàn)對攝像頭信息的采集和處理、舵機(jī)位置的控制、數(shù)據(jù)的顯示和按鍵的輸入幾方面。
攝像頭的采集和處理部分主要負(fù)責(zé)定位在板面上的小球,將小球位置轉(zhuǎn)化為XY的坐標(biāo)值供程序進(jìn)一步處理。小球的質(zhì)心可以采用質(zhì)心算法進(jìn)行計(jì)算,也可直接求中點(diǎn)坐標(biāo),二者差別不大,為減少運(yùn)算量,采用求中點(diǎn)的方式來求小球的質(zhì)心坐標(biāo)。
舵機(jī)位置控制主要由PID算法實(shí)現(xiàn),將目標(biāo)位置和小球當(dāng)前位置進(jìn)行比較處理,從而計(jì)算出舵機(jī)的打角方向與大小,通過機(jī)械傳動(dòng)進(jìn)而控制平板的傾斜方向,使小球在重力的作用下滑向指定位置。
顯示與輸入:數(shù)據(jù)顯示主要由LCD顯示屏承擔(dān),可以顯示小球運(yùn)動(dòng)的各項(xiàng)參數(shù),還可以顯示攝像頭采集的數(shù)據(jù),顯示系統(tǒng)的當(dāng)前運(yùn)行狀態(tài)等。輸入部分由按鍵實(shí)現(xiàn),按鍵檢測采用中斷或者輪詢的方式,負(fù)責(zé)調(diào)節(jié)程序的參數(shù)以及實(shí)現(xiàn)各項(xiàng)功能。
圖5 程序流程圖
本設(shè)計(jì)實(shí)現(xiàn)了攝像頭對物體位置及運(yùn)動(dòng)狀況的采集和處理,進(jìn)而控制機(jī)械結(jié)構(gòu)做出相應(yīng)的動(dòng)作。稍加改動(dòng)即可應(yīng)用于許多需要精確控制的場合。相比于傳統(tǒng)識別方式,攝像頭具有采集信息量大,識別范圍廣,靈活多變等優(yōu)點(diǎn)。必將在未來得到廣泛的應(yīng)用。