蘇 楊,劉卿卿
(1. 中國(guó)民航大學(xué) 電子信息與自動(dòng)化學(xué)院,天津 300300;2. 南京信息工程大學(xué) 信息與控制學(xué)院,江蘇 南京 210044;3. 南京信息工程大學(xué) 大氣環(huán)境與裝備技術(shù)協(xié)同創(chuàng)新中心,江蘇 南京 210044)
目前,在儀器儀表領(lǐng)域,雙軸跟蹤器[1]和光譜儀[2]等儀器已為大家所熟知,應(yīng)用也越來越廣泛。一方面,在太陽跟蹤器領(lǐng)域,為了提高測(cè)量精度,人們多數(shù)采用傳感器跟蹤和視日軌跡跟蹤方式結(jié)合的雙軸跟蹤法。此種方法雖然能夠?qū)崿F(xiàn)全天候高精度太陽自動(dòng)跟蹤,但在實(shí)際應(yīng)用中,這種持續(xù)的二維調(diào)節(jié)功耗大,造成資源浪費(fèi),使電機(jī)壽命縮短,不利于節(jié)能環(huán)保的實(shí)現(xiàn)。另一方面,在包括光譜儀在內(nèi)的一些避免直射跟蹤的測(cè)量?jī)x器使用過程中,由于需要不斷調(diào)整儀器角度以尋求最佳測(cè)量條件,需要人工進(jìn)行實(shí)時(shí)調(diào)節(jié),消耗人力。
針對(duì)直射跟蹤情況下能耗浪費(fèi)的問題和避免直射跟蹤情況下需要時(shí)刻調(diào)整方位的操作不便問題,本系統(tǒng)將傳感器跟蹤與太陽運(yùn)行軌跡跟蹤方式相結(jié)合,設(shè)置了一維與二維的可切換跟蹤方式,既實(shí)現(xiàn)了一種儀器將太陽跟蹤與避免直射兩種用途的結(jié)合,又達(dá)到節(jié)約人力物力的目的。本系統(tǒng)利用攝像頭作為光電傳感器來判斷天氣狀況。此外,通過STM32結(jié)合LABVIEW的設(shè)計(jì),利用上位機(jī)進(jìn)行更便捷準(zhǔn)確的太陽質(zhì)心提取,解決了傳統(tǒng)方式下太陽跟蹤過程中跟蹤精度不夠高的問題。
圖3 電機(jī)控制信號(hào)連接圖
本系統(tǒng)硬件部分由微控制器模塊、矩陣鍵盤、TFT彩屏、RTC時(shí)鐘、步進(jìn)電機(jī)、攝像頭模塊和上位機(jī)組成,太陽跟蹤系統(tǒng)的系統(tǒng)框圖如圖1所示。
圖1 太陽跟蹤系統(tǒng)框圖
跟蹤方式包括兩種。其一是傳感器跟蹤方式[3]。這種方式主要由攝像頭和機(jī)械驅(qū)動(dòng)部分組成,攝像頭采用OV2640模塊,機(jī)械驅(qū)動(dòng)由步進(jìn)電機(jī)完成,可進(jìn)行對(duì)一維或二維轉(zhuǎn)臺(tái)的操作。上位機(jī)部分采用LABVIEW和MATLAB混合編程尋找太陽圖像質(zhì)心,從而確定傳感器與太陽直射方位的偏離程度。在這種方式里,太陽位置的變化引起攝像頭所拍圖像質(zhì)心的改變,這一信號(hào)被上位機(jī)所識(shí)別,上位機(jī)及時(shí)響應(yīng)這一變化,并根據(jù)算法計(jì)算的結(jié)果驅(qū)動(dòng)電機(jī)改變其位置,從而調(diào)整儀器的方向,使攝像頭所拍圖像質(zhì)心重新回歸鏡頭中心點(diǎn)。其二是視日軌跡跟蹤方式[4]。這種跟蹤方式利用到了天文學(xué)上的一種太陽高度角和方位角的計(jì)算方法,即只要確定了觀測(cè)地點(diǎn)的相關(guān)數(shù)據(jù),就可以求解出觀測(cè)時(shí)刻該點(diǎn)的太陽高度角和方位角,從而驅(qū)動(dòng)電機(jī)運(yùn)行。
這兩種方式可根據(jù)攝像頭模塊采集到的光強(qiáng)進(jìn)行必要的切換。陰天時(shí),太陽光強(qiáng)較弱,攝像頭很難準(zhǔn)確獲取太陽質(zhì)心位置,系統(tǒng)必須自行進(jìn)入到太陽運(yùn)行軌跡跟蹤方式。晴天時(shí),太陽光強(qiáng)較強(qiáng),攝像頭模塊能很好地響應(yīng)太陽光位置的變化,系統(tǒng)會(huì)自行切換到傳感器跟蹤方式,以便提高太陽跟蹤的準(zhǔn)確度。
在跟蹤過程中可進(jìn)行轉(zhuǎn)臺(tái)維數(shù)的變換。由電機(jī)操控一維轉(zhuǎn)臺(tái)或二維轉(zhuǎn)臺(tái),且攝像頭和儀器之間的夾角可控,即可通過對(duì)夾角的控制實(shí)現(xiàn)儀器直射或避免直射的不同用途。在要求實(shí)時(shí)對(duì)正太陽的情況下,攝像頭與儀器夾角為0°,保持水平,并以二維轉(zhuǎn)臺(tái)控制儀器方位移動(dòng)。在要求與太陽保持水平方向某一角度的情況下,調(diào)節(jié)攝像頭與儀器之間夾角,以一維轉(zhuǎn)臺(tái)控制儀器的方位,從而實(shí)現(xiàn)儀器與太陽光形成一個(gè)固定可調(diào)的投影角度,使操作簡(jiǎn)便靈活。
本系統(tǒng)采用封裝好的OV2640攝像頭模塊[5]進(jìn)行光電采集和光強(qiáng)判斷,電路簡(jiǎn)單,感光靈敏,其電路模塊如圖2所示。OV2640攝像頭模塊將攝像頭和模數(shù)轉(zhuǎn)換等必要電路結(jié)合在一起,可輸出YUV、RGB和YCbCr格式圖像。此外,OV2640適用于低照度環(huán)境,其低電壓特性又適合嵌入式的開發(fā)。
圖2 OV2640模塊原理圖
本設(shè)計(jì)對(duì)步進(jìn)電機(jī)進(jìn)行操控。為使步進(jìn)電機(jī)運(yùn)行平穩(wěn)精細(xì),通常還結(jié)合細(xì)分器的使用。本設(shè)計(jì)采用57步進(jìn)電機(jī)與細(xì)分驅(qū)動(dòng)芯片TA8453相結(jié)合,實(shí)現(xiàn)跟蹤的精確化。STM32和該芯片相連接[6],實(shí)現(xiàn)PWM波形輸出。兩個(gè)開關(guān)K1和K2分別用于控制微控制器的使能和步進(jìn)電機(jī)的轉(zhuǎn)動(dòng)方向,同時(shí)它也是芯片的時(shí)鐘輸入。電機(jī)的控制信號(hào)連接圖如圖3所示。
軟件設(shè)計(jì)由系統(tǒng)初始化、主程序設(shè)計(jì)和中斷程序設(shè)計(jì)這幾部分組成。主程序?qū)崟r(shí)調(diào)整跟蹤器位置,并且不斷檢測(cè)是否有中斷產(chǎn)生[7]。系統(tǒng)開始運(yùn)行時(shí),經(jīng)過初始化,首先將電機(jī)復(fù)位在一個(gè)特定位置,然后可根據(jù)人為需求,根據(jù)輸入命令確定采用一維或二維跟蹤方式。此外,系統(tǒng)可自動(dòng)根據(jù)天氣狀況確定跟蹤模式,從而選擇單純的視日軌跡跟蹤模式或是傳感器跟蹤模式,也可以使兩種模式相結(jié)合使用。其中,傳感器跟蹤模式下,需要結(jié)合上位機(jī)部分進(jìn)行處理。采集到的圖像經(jīng)過串口傳輸至上位機(jī),當(dāng)完整的一副圖片傳遞成功后,指示燈熄滅,從而進(jìn)行圖像處理。經(jīng)MATLAB計(jì)算出太陽質(zhì)心坐標(biāo)位置。該位置坐標(biāo)發(fā)送給單片機(jī),單片機(jī)再通過對(duì)位置坐標(biāo)的計(jì)算處理。主程序流程圖如圖4所示。
圖4 主程序流程圖
上位機(jī)部分,程序開始后首先獲得采集到的圖像,經(jīng)判斷,在圖像傳輸完畢后,進(jìn)行圖像的讀取和太陽質(zhì)心位置的計(jì)算。最后程序?qū)⑦@個(gè)計(jì)算所得位置坐標(biāo)輸出并結(jié)束程序。上位機(jī)部分程序流程如圖5所示。
圖5 上位機(jī)部分程序流程圖
在亮度檢測(cè)部分,本系統(tǒng)通過對(duì)攝像頭采集到的圖像進(jìn)行光強(qiáng)提取來判斷天氣陰晴狀況。單片機(jī)程序讀取攝像頭所拍圖像每個(gè)像素點(diǎn)的值,再進(jìn)行平均值和標(biāo)準(zhǔn)差的計(jì)算。將平均值與經(jīng)驗(yàn)所確定閾值進(jìn)行比較,再結(jié)合標(biāo)準(zhǔn)差來排除如夜晚晴空等特殊天氣的干擾,可以增強(qiáng)判斷的準(zhǔn)確性。陰晴判斷的結(jié)果是可以確定采取什么樣的跟蹤方式。首先通過視日軌跡法粗調(diào)儀器,當(dāng)攝像頭模塊采集到的光線強(qiáng)度平均值高于設(shè)定閾值時(shí)判斷為晴天,進(jìn)入傳感器跟蹤方式。當(dāng)光線強(qiáng)度低于設(shè)定值時(shí)判斷為陰天,關(guān)閉傳感器跟蹤方式,僅通過太陽運(yùn)行軌跡跟蹤方式來進(jìn)行跟蹤。
虛擬儀器技術(shù)是以計(jì)算機(jī)軟件和硬件共同作為開發(fā)平臺(tái),以軟件為主,硬件為輔,來實(shí)現(xiàn)一些儀器功能。本設(shè)計(jì)采用目前虛擬儀器領(lǐng)域中廣泛應(yīng)用的LABVIEW來進(jìn)行編程設(shè)計(jì),具有直觀、方便、靈活等特點(diǎn)。
LABVIEW中封裝好了串口通信節(jié)點(diǎn),在進(jìn)行串口通信時(shí),首先要對(duì)串口進(jìn)行初始化并配置好串口。本設(shè)計(jì)采用VISA配置串口節(jié)點(diǎn)來完成,使用該節(jié)點(diǎn)可以操作串口的VISA資源名稱、比特率、數(shù)據(jù)和校驗(yàn)位、超時(shí)時(shí)間以及終止符等參數(shù)。通過VISA的使用實(shí)現(xiàn)了對(duì)串口的便捷操作和控制。
本設(shè)計(jì)利用對(duì)MATLAB的調(diào)用來實(shí)現(xiàn)對(duì)太陽質(zhì)心的提取[8],質(zhì)心處理流程包括控制攝像頭的圖像采集、圖像灰度轉(zhuǎn)化、圖像處理和數(shù)據(jù)顯示幾個(gè)部分。圖6所示為圖像處理流程圖。
圖6 圖像處理流程
程序?qū)?duì)圖像進(jìn)行二值化處理[9]。二值化要根據(jù)閾值來確定圖像中哪些是目標(biāo)哪些是背景。閾值的選擇通常有三種方法,包括全局閾值、自適應(yīng)閾值和最佳閾值三種方式。本設(shè)計(jì)中為了便于計(jì)算,方便系統(tǒng)運(yùn)行,采用全局閾值法,通過設(shè)定閾值,將采集到的圖像劃分為目標(biāo)和背景。此外,程序還利用質(zhì)心法對(duì)太陽進(jìn)行位置標(biāo)定。本系統(tǒng)針對(duì)二值圖像采用質(zhì)心法,該方法操作更加便捷,且效率較高。經(jīng)過處理,系統(tǒng)可以計(jì)算出圖像中質(zhì)心點(diǎn)的坐標(biāo)信息。
LABVIEW在界面開發(fā)、數(shù)據(jù)保存等方面有較強(qiáng)的優(yōu)勢(shì),但在計(jì)算、圖像處理等領(lǐng)域不具備MATLAB的優(yōu)越性。因此將二者結(jié)合起來完成對(duì)太陽的一系列圖像采集、處理、保存等功能,揚(yáng)長(zhǎng)避短,能夠進(jìn)一步優(yōu)化太陽跟蹤系統(tǒng)。LABVIEW和MATLAB的混合編程方法很多,本設(shè)計(jì)采用了直接調(diào)用LABVIEW提供的MATLAB Script節(jié)點(diǎn)[10],實(shí)現(xiàn)二者的無縫銜接。
MATLAB Script節(jié)點(diǎn)可以先在MATLAB中進(jìn)行調(diào)試,調(diào)試成功后再將其導(dǎo)入到MATLAB Script節(jié)點(diǎn)中。MATLAB Script節(jié)點(diǎn)調(diào)用過程中應(yīng)注意數(shù)據(jù)類型的匹配。由于本設(shè)計(jì)涉及的算法較為簡(jiǎn)潔,使用調(diào)用MATLAB Script節(jié)點(diǎn)的方法,簡(jiǎn)單易行。MATLAB對(duì)串口獲取的圖像進(jìn)行讀取和處理,處理后的圖像經(jīng)計(jì)算得到質(zhì)心坐標(biāo)值,從而控制步進(jìn)電機(jī)移動(dòng)相應(yīng)的距離和方向。
STM32能夠正常驅(qū)動(dòng)電機(jī)運(yùn)轉(zhuǎn),并通過串口將攝像頭OV2640采集到的圖像實(shí)時(shí)發(fā)送至上位機(jī)。LABVIEW成功接收到圖像,再通過調(diào)用MATLAB節(jié)點(diǎn)進(jìn)行圖像處理,尋找到質(zhì)心并經(jīng)過串口將其坐標(biāo)發(fā)送到單片機(jī)進(jìn)行進(jìn)一步的電機(jī)驅(qū)動(dòng)。圖7為處理前圖像,圖8為L(zhǎng)ABVIEW前面板顯示的處理后的結(jié)果,中心一點(diǎn)為所標(biāo)記質(zhì)心。
圖7 處理前圖像
圖8 圖像處理結(jié)果
本系統(tǒng)使用STM32和LABVIEW作為核心,通過串口通信方式完成單片機(jī)與上位機(jī)之間的數(shù)據(jù)傳遞,實(shí)現(xiàn)了不同天氣情況下對(duì)太陽的直射跟蹤或避免直射。本系統(tǒng)經(jīng)實(shí)際操作驗(yàn)證,系統(tǒng)運(yùn)行平穩(wěn),處理結(jié)果正確,可以應(yīng)用于如太陽能跟蹤控制系統(tǒng)或光譜儀等測(cè)量?jī)x器中。
[1] 王海軍. 基于陰晴判斷的混合雙軸太陽跟蹤控制系統(tǒng)[D]. 武漢:武漢理工大學(xué), 2012.
[2] 劉康. 微型光譜儀關(guān)鍵技術(shù)及其應(yīng)用研究[D]. 杭州: 浙江大學(xué), 2013.
[3] QIN X S, CHEN X R, NIE D L. Dual-axis solar tracking system based on STM32[J]. Information Technology, 2013,37(4):113-115.
[4] 曾利霞. 基于視日運(yùn)動(dòng)軌跡的雙軸太陽跟蹤系統(tǒng)的研究[D]. 武漢:湖北工業(yè)大學(xué), 2012.
[5] WANG J, LIANG Z, ZHENG W, et al. Embedded image acquisition system design based on STM32 and OV2640[J]. Microcontrollers & Embedded Systems, 2014,14(9):46-48.
[6] 庫少平, 劉晶. 基于STM32F10x和MDK的步進(jìn)電機(jī)控制系統(tǒng)設(shè)計(jì)[J]. 武漢理工大學(xué)學(xué)報(bào), 2009, 31(3): 107-110.
[7] 凌好, 劉榮忠, 郭銳, 等. 基于STM32的太陽自動(dòng)跟蹤控制系統(tǒng)的設(shè)計(jì)[J]. 計(jì)算機(jī)測(cè)量與控制, 2012, 20(2): 383-385.
[8] 尤金正, 鄒麗新, 周同, 等. 太陽圖像中光斑質(zhì)心位置的檢測(cè)[J]. 現(xiàn)代電子技術(shù), 2010, 33(12): 191-200.
[9] 楊超華. 基于LABVIEW和MATLAB混合編程技術(shù)的視頻運(yùn)動(dòng)目標(biāo)檢測(cè)與跟蹤方法研究[D]. 南京:南京理工大學(xué),2013.
[10] LI N, ZHANG Y P, ZHU L J. Using MATLAB Script in LabVIEW[J]. Instrument Standardization & Metrology, 2003(5):17-19.